โปรแกรมไฟวิ่ง 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 ไมโครคอนโทรเลอร์
0 Comments