const int buttonPin = 26; // กำหนดขาที่ต่อปุ่ม
const int segPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; // กำหนดขาที่ต่อ Segment A-G
int buttonState = 0; // เก็บสถานะปุ่ม
int counter = 0; // เก็บค่านับ
void setup() {
Serial.begin(9600);
// กำหนดขาที่เชื่อมต่อเป็น INPUT
pinMode(buttonPin, INPUT);
// กำหนดขาที่เชื่อมต่อ Segment เป็น OUTPUT
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
// กำหนดค่าเริ่มต้นของ Segment
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], LOW);
}
displayNumber(counter);
}
void loop() {
Serial.println(counter);
// อ่านสถานะปุ่ม
buttonState = digitalRead(buttonPin);
// ถ้าปุ่มถูกกด
if (buttonState == LOW) {
// เพิ่มค่านับ
counter++;
// ถ้าค่านับมีค่ามากกว่า 9 ให้กลับไปที่ 1
if (counter > 9) {
counter = 0;
}
// แสดงค่านับบน 7-Segment Display
displayNumber(counter);
// รอปุ่มถูกปล่อย
while(digitalRead(buttonPin) == LOW){
delay(10); // รอเพื่อป้องกันการกระชาก
}
// รอเพื่อป้องกันการ debounce
delay(50);
}
}
// ฟังก์ชันแสดงค่าบน 7-Segment Display
void displayNumber(int number) {
// กำหนดค่า Segment ต่าง ๆ ตามค่าที่ต้องการแสดง
const int segments[][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], segments[number][i]);
}
}