Arduino ile RGB LED kontrolcüsü nasıl yapılır?

Butona bastığımda kırmızı rengin yanması, yine bastığımda LED'in kapanması için komut verdim ama LED'i kapatmıyor.
C++:
const int buttonPin = 2;     // Butonun bağlı olduğu pin
const int redLEDPin = 9;     // Kırmızı LED'in bağlı olduğu pin

int buttonState = 0;         // Butonun mevcut durumu
int lastButtonState = 0;     // Butonun önceki durumu
bool ledState = false;       // LED'in durumu (açık veya kapalı)
unsigned long lastDebounceTime = 0;  // Son sarsıntı (debounce) zamanı
unsigned long debounceDelay = 50;    // Sarsıntı süresi (ms)

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(redLEDPin, OUTPUT);
  digitalWrite(redLEDPin, LOW);  // Başlangıçta LED kapalı
}

void loop() {
  int reading = digitalRead(buttonPin);

  // Buton durumunda bir değişiklik oldu mu?
  if (reading != lastButtonState) {
    lastDebounceTime = millis();  // Zamanı kaydet
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // Okuma durumunda bir değişiklik olduysa, bu durumu sakla
    if (reading != buttonState) {
      buttonState = reading;

      // Sadece buton HIGH olduğunda (basıldığında) işlem yap
      if (buttonState == HIGH) {
        ledState = !ledState;  // LED durumunu değiştir
        digitalWrite(redLEDPin, ledState ? HIGH : LOW);  // LED'i aç/kapat
      }
    }
  }

  lastButtonState = reading;  // Mevcut buton durumunu sakla
}
 
Butona bastığımda kırmızı rengin yanması, yine bastığımda LED'in kapanması için komut verdim ama LED'i kapatmıyor.
C++:
const int buttonPin = 2;     // Butonun bağlı olduğu pin
const int redLEDPin = 9;     // Kırmızı LED'in bağlı olduğu pin

int buttonState = 0;         // Butonun mevcut durumu
int lastButtonState = 0;     // Butonun önceki durumu
bool ledState = false;       // LED'in durumu (açık veya kapalı)
unsigned long lastDebounceTime = 0;  // Son sarsıntı (debounce) zamanı
unsigned long debounceDelay = 50;    // Sarsıntı süresi (ms)

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(redLEDPin, OUTPUT);
  digitalWrite(redLEDPin, LOW);  // Başlangıçta LED kapalı
}

void loop() {
  int reading = digitalRead(buttonPin);

  // Buton durumunda bir değişiklik oldu mu?
  if (reading != lastButtonState) {
    lastDebounceTime = millis();  // Zamanı kaydet
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // Okuma durumunda bir değişiklik olduysa, bu durumu sakla
    if (reading != buttonState) {
      buttonState = reading;

      // Sadece buton HIGH olduğunda (basıldığında) işlem yap
      if (buttonState == HIGH) {
        ledState = !ledState;  // LED durumunu değiştir
        digitalWrite(redLEDPin, ledState ? HIGH : LOW);  // LED'i aç/kapat
      }
    }
  }

  lastButtonState = reading;  // Mevcut buton durumunu sakla
}
Benim bu kodu anladığım pek söylenemez ama kendin eğitimlerle bir kod yazarsan çalışır çok yüksek ihtimalle.
 
4 bacaklı butonun mantığını öğrenmek amacıyla daha basit bir devre kurmamda yardımcı olabilir misiniz?

Mesela butona her bastığımda fanın RPM'i değişsin. Buna göre breadboard resmini veya Paint'ten devreyi çizip atabilirim.

Paintten çizmene gerek yok Fritzing kullan. Ya da Tinkercad kullan.
 
O aşamayı da geçtik.

Sıfırdan öğrenemem, ChatGPT yapıyor ama bir şeyleri yanlış yapıyor demek ki. Ya da bağlantılarda hata var.

Düzeltmesini istemediniz mi?

1719686844717.png


Hata yapabileceğini açıkça söylemiş.
 

Technopat Haberler

Yeni konular

Geri
Yukarı