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

    1
    657

    আমাদের আগের পাঠের যে কাজ টি দেয়া ছিলো তা হল , সাতটি লিড কে পর্যায়ক্রমে জ্বালাতে হবে । ঠিক এই রকম ।
    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 মন্তব্য

    উত্তর প্রদান

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