Semua LED Nyala saat button di tekan dan semua LED mati saat Button tidak ditekan.
KODE :
#define LED_1_PIN 11
#define LED_2_PIN 10
#define LED_3_PIN 9
#define BUTTON_PIN 4
void setup()
{
pinMode(LED_1_PIN, OUTPUT);
pinMode(LED_2_PIN, OUTPUT);
pinMode(LED_3_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
digitalWrite(LED_1_PIN, HIGH);
digitalWrite(LED_2_PIN, HIGH);
digitalWrite(LED_3_PIN, HIGH);
}
else {
digitalWrite(LED_1_PIN, LOW);
digitalWrite(LED_2_PIN, LOW);
digitalWrite(LED_3_PIN, LOW);
}
}
Mari kita Lihat KODE berbeda yaitu : Jadi, secara default, semua LED akan mati. Saat kita menekan + melepas tombol, pada saat yang sama, LED akan menyala. Saat kita menekan + melepas tombol berikutnya, semua LED akan mati, dst.
#define LED_1_PIN 11
#define LED_2_PIN 10
#define LED_3_PIN 9
#define BUTTON_PIN 4
#define LED_NUMBER 3
byte LEDPinArray[LED_NUMBER] = { LED_1_PIN,
LED_2_PIN,
LED_3_PIN };
unsigned long debounceDuration = 50; // millis
unsigned long lastTimeButtonStateChanged = 0;
byte lastButtonState = HIGH;
byte LEDState = LOW;
void initAllLEDs()
{
for (int i = 0; i < LED_NUMBER; i++) {
pinMode(LEDPinArray[i], OUTPUT);
}
}
void powerOnAllLEDs(bool powerOn)
{
for (int i = 0; i < LED_NUMBER; i++) {
if (powerOn) {
digitalWrite(LEDPinArray[i], HIGH);
}
else {
digitalWrite(LEDPinArray[i], LOW);
}
}
}
void setup()
{
initAllLEDs();
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
unsigned long timeNow = millis();
if (timeNow - lastTimeButtonStateChanged > debounceDuration) {
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState != lastButtonState) {
lastTimeButtonStateChanged = timeNow;
lastButtonState = buttonState;
if (buttonState == HIGH) { // button has been released
LEDState = (LEDState == LOW) ? HIGH : LOW;
powerOnAllLEDs(LEDState == HIGH);
}
}
}
}
Dan berikut untuk KODE yang lebih variasi :
#define LED_1_PIN 11
#define LED_2_PIN 10
#define LED_3_PIN 9
#define BUTTON_PIN 4
#define LED_NUMBER 3
byte LEDPinArray[LED_NUMBER] = { LED_1_PIN,
LED_2_PIN,
LED_3_PIN };
unsigned long debounceDuration = 50; // millis
unsigned long lastTimeButtonStateChanged = 0;
byte lastButtonState = HIGH;
int LEDIndex = 0;
void initAllLEDs()
{
for (int i = 0; i < LED_NUMBER; i++) {
pinMode(LEDPinArray[i], OUTPUT);
}
}
void powerOnSelectedLEDOnly(int index)
{
for (int i = 0; i < LED_NUMBER; i++) {
if (i == index) {
digitalWrite(LEDPinArray[i], HIGH);
}
else {
digitalWrite(LEDPinArray[i], LOW);
}
}
}
void setup()
{
initAllLEDs();
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(LEDPinArray[LEDIndex], HIGH);
}
void loop()
{
unsigned long timeNow = millis();
if (timeNow - lastTimeButtonStateChanged > debounceDuration) {
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState != lastButtonState) {
lastTimeButtonStateChanged = timeNow;
lastButtonState = buttonState;
if (buttonState == HIGH) { // button has been released
LEDIndex++;
if (LEDIndex >= LED_NUMBER) {
LEDIndex = 0;
}
powerOnSelectedLEDOnly(LEDIndex);
}
}
}
}
Tinggalkan Komentar