আরডুইনো শিখি – পাঠ ৩ঃ পোর্ট কন্ট্রোল

1
407

আমাদের আগের পাঠের যে কাজ টি দেয়া ছিলো তা হল , সাতটি লিড কে পর্যায়ক্রমে জ্বালাতে হবে । ঠিক এই রকম ।
2016-03-14_163240

কোডঃ

void setup() {
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, HIGH);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0,LOW);
  digitalWrite(1, LOW);
  digitalWrite(2,  HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  delay(1000);
    digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  delay(1000);


}

কিন্তু এই কাজ টি আরো সহজে করা যায় পোর্ট কন্ট্রোল করার মাধ্যমে ।
তার আগে আমরা পোর্ট ম্যাপ টা দেখে নিই ।

arduino_uno_pinout_web
আমরা এখানে শুধু পোর্ট D নিয়ে কাজ করব ।
তাই আমাদের প্রথমে পোর্ট D এর সবগুলো পিন কে আউটপুট mode এ সেট করতে হবে । এর জন্য আমারা

 DDRD=0xFF;

কোড টি

void setup()

এর ভিতর লিখে দিই । এখন প্রাথমিক ভাবে সব কয় টা পিন কে অফ করতে হবে।
তার জন্য

 PORTD=0X00 ;

কোড টি

 void setup()

এর ভিতর লিখে দিই।
DDRD = Data Direction Register for port D
0X = এর অর্থ কোড টি হেক্স ফরম্যাট এ লেখা ।
FF হেক্স এর বাইনারি হল 11111111 ,
00 হেক্স এর বাইনারি হল 00000000 .
void setup () এর ভিতর কার কাজ শেষ।
এবার প্রতিটা পোর্টে একটি করে পিন অন করতে হবে । তাই যে পিন টি অন করতে হবে সেটিকে 1 লিখে বাকি সব গুলোকে 0 set করে দেব ।
যেমন PD0 পিন টি যখন অন এবং বাকি সব গুলো যখন অফ থাকবে তখন কোড হবে

 PORTD=0b00000001;

এখন সব কয়টি পিন কে এক সেকেন্ড সময় ব্যাবধানে জ্বালানোর জন্য কোডঃ

void setup() {
DDRD=0xFF;
PORTD=0X00;

}

void loop() {
PORTD=0b00000001;
delay(1000);
PORTD=0b00000010;
delay(1000);
PORTD=0b00000100;
delay(1000);
PORTD=0b00001000;
delay(1000);
PORTD=0b00010000;
delay(1000);
PORTD=0b00100000;
delay(1000);
PORTD=0b01000000;
delay(1000);
PORTD=0b10000000;
delay(1000);

}

কোড আর protius file এখানে

1 মন্তব্য

উত্তর প্রদান

আপনার মন্তব্য লিখুন
আপনার নাম লিখুন