#include <Keypad.h>
// การตั้งค่าขา Keypad
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// กำหนดขา Keypad
byte rowPins[ROWS] = {9, 8, 7, 6}; // เชื่อมต่อกับขา R1-R4
byte colPins[COLS] = {5, 4, 3, 2}; // เชื่อมต่อกับขา C1-C4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// ขา LED และ LDR
const int ledPin = 10;
const int ldrPin = A0;
// ตัวแปรควบคุม
int ledBrightness = 0;
int brightnessLevels[9] = {0, 28, 56, 84, 112, 140, 168, 196, 255}; // 9 ระดับความสว่าง
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
char key = keypad.getKey();
if (key) {
switch (key) {
case 'A': // ปุ่ม A
for (int i = 0; i < 255; i += 15) {
analogWrite(ledPin, i);
delay(100); // กระพริบเร็วขึ้น
}
break;
case 'B': // ปุ่ม B
for (int i = 255; i >= 0; i -= 15) {
analogWrite(ledPin, i);
delay(100); // กระพริบเร็วขึ้น
}
break;
case 'C': // ปุ่ม C
for (int i = 0; i < 255; i += 30) {
analogWrite(ledPin, i);
delay(100); // กระพริบเร็วขึ้น
}
break;
case 'D': // ปุ่ม D
for (int i = 255; i >= 0; i -= 30) {
analogWrite(ledPin, i);
delay(100); // กระพริบเร็วขึ้น
}
break;
default: // ปุ่มตัวเลข
int ldrValue = analogRead(ldrPin); // อ่านค่าจาก LDR
int brightnessIndex = map(ldrValue, 0, 1023, 0, 8); // แปลงค่าจาก LDR เป็นดัชนีระดับความสว่าง
ledBrightness = brightnessLevels[brightnessIndex];
analogWrite(ledPin, ledBrightness); // ปรับความสว่างของ LED
break;
}
}
}