ความรู้พื้นฐานทางด้านอิเล็กทรอนิกส์ การเขียนโปรแกรม Arduino และ หุ่นยนต์เบื้องต้น ที่เคยลงไว้แล้ว
นำมาปรับปรุง ในเนื้อหาที่เพิ่มขึ้น
สามารถติดตามได้ในส่วนนี้ ครับ


กลับหน้าหลัก บทความ

ตอนที่ 81โครงงาน ตั้งเวลาแบบง่าย

ในตอนนี้จะมาทำเครื่องตั้งเวลา แบบพื้นฐานกันครับ โดยจะใช้ตัวแสดงผล 7 เซ็กเม้น
1 หลัก แสดงการนับถอยหลัง และสามารถนำหลักการดังกล่าวไป
สร้างโครงงานเกี่ยวกับกาสรตั้งเวลาที่ สมบูรณ์ยิ่งขึ้นต่อไป

VDO การทำงาน
จาก Facebook

 

วงจรที่ใช้ในการทดลอง


ต่อวงจรตามรูปได้เลย
หลักการทำงาน กด SW1 ตัวเลขจะนับขึ้น
กด SW2 ตัวเลขจะนับลง
กด SW3 จะเริ่มการทำงาน ตัวเลขจะนับลงเรื่อยๆ จงถึง 0
จากนั้น บัสเซอร์ก็จะดัง เป็นการบอกว่า หมดเวลาแล้ว

code ที่ใช้ในการทดสอบ

int buzzer = 13;
int buttonPin_1 =8;
int buttonPin_2 =9;
int buttonPin_3 =10;
int sw1 ;
int sw2 ;
int sw3 ;
int i=0;
int LED[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void setup()
{
pinMode(buttonPin_1, INPUT);
pinMode(buttonPin_2, INPUT);
pinMode(buttonPin_3, INPUT);
pinMode(buzzer, OUTPUT);
DDRD=0xFF;
}

void loop()
{
sw1 = digitalRead(buttonPin_1);
sw2 = digitalRead(buttonPin_2);
sw3 = digitalRead(buttonPin_3);

if (sw1==0&&sw2==0&&sw3==0)//ไม่กด
{
i=i;
PORTD =LED[i];
delay(200);
}

if (sw1==1&&sw2==0&&sw3==0)//กดขึ้น
{
i=i+1;
PORTD =LED[i];
delay(200);
}
if (sw2==1&&sw1==0&&sw3==0) // กดลง
{
i=i-1;
PORTD =LED[i];
delay(200);
}
if (sw2==0&&sw1==0&&sw3==1) // นับเวลา
{
delay(1000);
do{
i--;
PORTD =LED[i];
delay(1000);

} while (i>1); //--- ตรวจสอบเงื่อนไขเท็จออกจากลูป
PORTD =LED[0];

digitalWrite(buzzer,HIGH);
delay(5000);
digitalWrite(buzzer,LOW);
delay(5000);
}

}

 

สไหรับใน code นี้ยังมีข้อผปิดพลาดอยูครับ แต่ การทำงานของโครงงาน
ทำงานได้ผลดี *** แล้วจะแก้ให้ในโครงงาน ตั้งเวลา 00-99

VDO การทำงาน
จาก Facebook

 

เขียนเมื่อ 2มีค 66 ติดตามตอนต่อไปครับ