การต่อสายไฟ
จอ 7-Segment (แบบ Common Cathode):
ต่อขา a, b, c, d, e, f, g เข้ากับ Digital Pin 2 ถึง 8 ของ Arduino
ต่อขา G (Common) ของจอเข้ากับ GND ของ Arduino
ปุ่มกด (Push Buttons):
SW1 (นับขึ้น): ต่อขา 2 ของ SW1 เข้ากับ Pin 9 และอีกขาเข้ากับ GND และ 5V
SW2 (นับลง): ต่อขา 2 ของ SW2 ต่อขาหนึ่งเข้ากับ Pin 10 และอีกขาเข้ากับ GND และ 5V
// --- 1. กำหนดค่าคงที่และตัวแปร ---
// Pin สำหรับจอ 7-Segment (a, b, c, d, e, f, g)
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
// Pin สำหรับปุ่มกด
const int sw1_pin = 9; // ปุ่มนับขึ้น (+)
const int sw2_pin = 10; // ปุ่มนับลง (-)
// ตัวแปรสำหรับนับเลข
int counter = 0;
// --- 2. ฟังก์ชัน Setup ---
void setup() {
// ตั้งค่า Pin ของ 7-Segment ทั้งหมดเป็น OUTPUT
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// ตั้งค่า Pin ของปุ่มกดเป็น INPUT_PULLUP
pinMode(sw1_pin, INPUT_PULLUP);
pinMode(sw2_pin, INPUT_PULLUP);
// แสดงเลข 0 เป็นค่าเริ่มต้น
displayNumber(counter);
}
// --- 3. ฟังก์ชัน Loop (แบบเรียบง่าย) ---
void loop() {
// --- ตรวจสอบปุ่ม SW1 (นับขึ้น) ---
if (digitalRead(sw1_pin) == LOW) { // ตรวจสอบว่าปุ่มถูกกดหรือไม่
counter++; // เพิ่มค่า
if (counter > 9) {
counter = 0; // วนกลับไป 0
}
displayNumber(counter); // อัปเดตการแสดงผล
delay(200); // <<<<<<<<<<<< ใส่ดีเลย์ตรงนี้
}
// --- ตรวจสอบปุ่ม SW2 (นับลง) ---
if (digitalRead(sw2_pin) == LOW) { // ตรวจสอบว่าปุ่มถูกกดหรือไม่
counter--; // ลดค่า
if (counter < 0) {
counter = 9; // วนกลับไป 9
}
displayNumber(counter); // อัปเดตการแสดงผล
delay(200); // <<<<<<<<<<<< ใส่ดีเลย์ตรงนี้
}
}
// --- 4. ฟังก์ชันแสดงผลบน 7-Segment (ใช้ Switch Case) ---
// (ส่วนนี้เหมือนเดิมทุกประการ ไม่ต้องแก้ไข)
void displayNumber(int number) {
switch (number) {
case 0:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], LOW);
break;
case 1:
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
break;
// ... (case 2 ถึง 9 เหมือนเดิม) ...
case 2:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], HIGH);
break;
case 3:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], HIGH);
break;
case 4:
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 5:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 6:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 7:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
break;
case 8:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
case 9:
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
break;
}
}