จุดประสงค์
เพื่อศึกษาการรับข้อมูลแบบดิจิตัลและการควบคุมการทำงานแบบมีเงื่อนไข
รายการวัสดุอุปกรณ์ที่ต้องใช้
1) สายต่อพ่วงแบบ male to female จำนวน 5 เส้น
สายต่อพ่วงแบบ male to male จำนวน 5 เส้น
2) หลอดไดโอดเปล่ง ขนาด 5 มิลลิเมตร สีแดง
3) สวิตช์แบบกดติด ปล่อยดับ
4) บอร์ด Arduino Uno
5) สาย USB สำหรับโหลดโปรแกรม
2. ทำการต่อวงจรการรับข้อมูลดิจิตอลแบบ Pull up บนบอร์ดการเรียนรู้ SNR EMBEDDED SYSTEM LEARNING BOARD
ทำการต่อไฟฟ้า 5V และ GND เข้าที่ขา 1 และ 3 ของสวิตช์ SW1
** ห้ามนำสาย 5V หรือ GND เข้ากับขา 2 ของตัวสวิตช์ เพราะจะทำให้เกิดการลัดวงจรทำให้วงจรเสียหายได้
ทำการต่อขา 2 ของสวิตช์กับขารับสัญญาณดิจิตอล D2
ทำการต่อสาย GND เข้ากับขา G ของ LED1
ทำการต่อสายสัญญาญดิจิตอล D13 เข้ากับขา S ของ LED1
3. ทำการเขียนโปรแกรมภาษา C แล้วอัพโหลดเข้าสู่บอร์ดอาดุยโน่ สังเกตการณ์เปลี่ยนแปลง ต่อจากนั้นกดดูค่าที่บอร์อาดุยโน่ส่งมาที่ Serial Monitor แล้วทำการบันทึกผล
const int switchPin = 2; // เปลี่ยนจาก A0 เป็น D2
const int ledPin = 9; // ขา LED
int brightnessLevel = 0; // ระดับความสว่าง (0, 1, 2, 3)
bool lastSwitchState = HIGH; // สถานะก่อนหน้าของสวิตช์
void setup() {
pinMode(switchPin, INPUT_PULLUP); // ตั้งค่า SW เป็น input พร้อม pull-up
pinMode(ledPin, OUTPUT); // ตั้งค่า LED เป็น output
Serial.begin(9600); // เปิดใช้งาน Serial Monitor ที่ baud rate 9600
}
void loop() {
bool switchState = digitalRead(switchPin);
if (switchState == LOW && lastSwitchState == HIGH) { // ตรวจจับการกดปุ่ม
brightnessLevel = (brightnessLevel + 1) % 4; // เปลี่ยนระดับความสว่าง (0,1,2,3)
int brightness;
if (brightnessLevel == 3) {
brightness = 0; // ปิดไฟเมื่อ brightnessLevel = 3
} else {
brightness = map(brightnessLevel, 0, 2, 76, 255); // ใช้ map() แปลงค่าความสว่าง
}
analogWrite(ledPin, brightness); // ปรับความสว่างของ LED
// แสดงผลค่าของสวิตช์และระดับความสว่างบน Serial Monitor
Serial.print("Switch State: ");
Serial.print(switchState);
Serial.print(" | Brightness Level: ");
Serial.print(brightnessLevel);
Serial.print(" | LED Brightness: ");
Serial.println(brightness);
delay(200); // หน่วงเวลาเพื่อป้องกันการอ่านค่าซ้ำจากการกดปุ่มครั้งเดียว
}
lastSwitchState = switchState; // อัปเดตสถานะของปุ่ม
}
4. ทำการกดสวิตช์แล้วสังเกตความสว่าง