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

İsterseniz ben bir örnek kod atayım isterseniz eğitim videosu atayım kendiniz ekleyin.
Olabilir ama devreye buton eklemede sıkıntı yaşıyorum. Dünkü denememde kısa devre yaptı, butona basınca Arduino gücü kesiyordu. Diğer bir denemede ise butona basmadan geçişleri yapıyordu, butona basınca geçiş duruyordu. Garipti yani.
 
Butonu nasıl taktınız ? Normalde bir pinine + verip öteki pini dijital girişe bağlamalısınız ve 10k dirençle(değer çok düşmemek kaydıyla değişebilir) toprak(-) hattına bağlamalısınız, attığım örnek devredeki gibi.
 
Butonu nasıl taktınız ? Normalde bir pinine + verip öteki pini dijital girişe bağlamalısınız ve 10k dirençle(değer çok düşmemek kaydıyla değişebilir) toprak(-) hattına bağlamalısınız, attığım örnek devredeki gibi.
Hatırlamıyorum ama 4 bacağı birden kullandırmıştı ChatGPT.
 
Çalıştı, çok teşekkürler.

Yazılımı ChatGPT yaptı ama üzerinde değişiklikler yapacağım:
C++:
const int buttonPin = 7;       // Buton pin numarası
const int redPin = 9;          // Kırmızı LED pin numarası
const int greenPin = 10;       // Yeşil LED pin numarası
const int bluePin = 11;        // Mavi LED pin numarası

int buttonState = 0;           // Buton durumu
int lastButtonState = 0;       // Son buton durumu
int colorState = 0;            // Renk durumu

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
 
  // Başlangıç durumu: Kapalı
  analogWrite(redPin, 0);
  analogWrite(greenPin, 0);
  analogWrite(bluePin, 0);

  Serial.begin(9600);          // Seri haberleşme başlatılır
}

void loop() {
  // Buton durumunu oku
  buttonState = digitalRead(buttonPin);

  // Butona basıldı mı?
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      // Renk durumunu değiştir
      colorState = (colorState + 1) % 5; // 0-4 arası döngü
 
      switch (colorState) {
        case 0: // Sarı
          analogWrite(redPin, 255);
          analogWrite(greenPin, 255);
          analogWrite(bluePin, 0);
          Serial.println("Sarı");
          break;
        case 1: // Kırmızı
          analogWrite(redPin, 255);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 0);
          Serial.println("Kırmızı");
          break;
        case 2: // Mavi
          analogWrite(redPin, 0);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 255);
          Serial.println("Mavi");
          break;
        case 3: // Yeşil
          analogWrite(redPin, 0);
          analogWrite(greenPin, 255);
          analogWrite(bluePin, 0);
          Serial.println("Yeşil");
          break;
        case 4: // Kapalı
          analogWrite(redPin, 0);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 0);
          Serial.println("Kapalı");
          break;
      }
    }
    delay(50); // Debounce için küçük bir gecikme
  }

  // Son buton durumunu güncelle
  lastButtonState = buttonState;
}

Yalnız; Arduino'nun çipi parmağımı yakacak kadar ısınmaya başladı, yanlış olan nedir?

Şema: Login - Tinkercad
 
Son düzenleme:
Çalıştı, çok teşekkürler.

Yazılımı ChatGPT yaptı ama üzerinde değişiklikler yapacağım:
C++:
const int buttonPin = 7;       // Buton pin numarası
const int redPin = 9;          // Kırmızı LED pin numarası
const int greenPin = 10;       // Yeşil LED pin numarası
const int bluePin = 11;        // Mavi LED pin numarası

int buttonState = 0;           // Buton durumu
int lastButtonState = 0;       // Son buton durumu
int colorState = 0;            // Renk durumu

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
 
  // Başlangıç durumu: Kapalı
  analogWrite(redPin, 0);
  analogWrite(greenPin, 0);
  analogWrite(bluePin, 0);

  Serial.begin(9600);          // Seri haberleşme başlatılır
}

void loop() {
  // Buton durumunu oku
  buttonState = digitalRead(buttonPin);

  // Butona basıldı mı?
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      // Renk durumunu değiştir
      colorState = (colorState + 1) % 5; // 0-4 arası döngü
 
      switch (colorState) {
        case 0: // Sarı
          analogWrite(redPin, 255);
          analogWrite(greenPin, 255);
          analogWrite(bluePin, 0);
          Serial.println("Sarı");
          break;
        case 1: // Kırmızı
          analogWrite(redPin, 255);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 0);
          Serial.println("Kırmızı");
          break;
        case 2: // Mavi
          analogWrite(redPin, 0);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 255);
          Serial.println("Mavi");
          break;
        case 3: // Yeşil
          analogWrite(redPin, 0);
          analogWrite(greenPin, 255);
          analogWrite(bluePin, 0);
          Serial.println("Yeşil");
          break;
        case 4: // Kapalı
          analogWrite(redPin, 0);
          analogWrite(greenPin, 0);
          analogWrite(bluePin, 0);
          Serial.println("Kapalı");
          break;
      }
    }
    delay(50); // Debounce için küçük bir gecikme
  }

  // Son buton durumunu güncelle
  lastButtonState = buttonState;
}

Yalnız; Arduino'nun çipi parmağımı yakacak kadar ısınmaya başladı, yanlış olan nedir?

Şema: Login - Tinkercad
Led çok fazla akım çekiyor bu yüzden arduino ısınıyor bu ısınmayı önlemek için transistör kullanmalısın.
 

Technopat Haberler

Yeni konular

Geri
Yukarı