โปรแกรมไฟวิ่ง Arduino ระดับบิท in Bit หลายแบบ


Arduino Project โปรแกรมไฟวิ่ง Arduino ระดับบิท โดยไม่กำหนดใช้ตัวแปร Array หรือ เลขฐาน 16 ทั้งนี้เพื่อศึกษาความหลากหลายคำสั่งการทำงานของ Arudino เขียนโปรแกรมด้วยภาษา C และเพื่อความยืดหยุ่นในการเขียนโปรแกรม ทั้งนี้ ในการเขียนโปรแกรม เพื่อให้ได้ผลลัพที่เหมือนกัน แต่เทนิคการเขียนของโปรแกรมเมอร์แต่ละคนก็ไม่เหมือนกัน ดังตัวอย่าง ไฟวิ่งในระดับบิทนี้ จะไม่ใช้ตัวแปร แอเร่ (Array)  แต่จะเข้าถึงการทำงานของ Arduino ในระดับบิท

การเข้าถึงในระดับบิท คือ การเข้าถึงข้อมูลของ Arudino ในแบบเลข ฐาน 2 และกำหนดควบคุมให้ PORTD ทำงานด้วยเลขฐาน 2

Example Program Shift in Bit

void setup()
{
  DDRD = B11111111; // set PORTD (digital 7~0) to output
}

byte a = B11111111;  //set variable a   binary (digital 7~0) to output
byte b = B00000001;  //set variable a   binary (digital 7~0) to output
byte c = B10000000;
byte e = B10101010;
byte g = B00000111;
byte h = B11100000;

void shiftinbit()
{
  for (int k=0; k<5; k++)
  {
    for (int z=0; z<8; z++)
    {
      PORTD = b << z;   // shift left binary in b
      delay(200);
    }

    for (int z=0; z<8; z++)
    {
      PORTD = c >> z;   // shift right  binary in c
      delay(200);
    }
  }
}

void binaryCount()
{
  for (int z=0; z<256; z++)
  {
    PORTD = z;
    delay(100);
  }
  PORTD=0;
}

void onOff()
{
  for (int k=0; k<10; k++)
  {
    PORTD = a;
    delay(100);
    PORTD = 0;
    delay(100);
  }
}

void invBlink()
{
  for (int z=0; z<10; z++)
  {
    PORTD = e;
    delay(100);
    PORTD = ~e;
    delay(100);
  }
}

void sneck(){

  for (int f=0; f<10; f++){
 
     for (int z=0; z<8; z++){
      PORTD = g << z;
      delay(250);
     }

     for (int z=0; z<8; z++){
      PORTD = h >> z;
      delay(250);
     }

  }
}

void loop()
{

  sneck();
  invBlink();
  delay(500);
  binaryCount();
 delay(500);
  shiftinbit();
 delay(500);
 onOff();
}

ดูผลการทำงานของ โปรแกรมไฟวิ่ง Arduino



Advertisment

โปรแกรมไฟวิ่ง Arduino ระดับบิท สามารถนำไปใช้ได้หลากหลายแบบ เช่น สร้างไฟวิ่ง สร้าง LED cube ที่นิยมกัน เป็นต้น ทั้งนี้บทความนี้เพื่อศึกษาการทำงานของ Arudino uno ไมโครคอนโทรเลอร์