guclusat

Tanınmış Üye
Süper Moderatör
Başladığımız Arduino örneklerine devam ediyoruz. İkinci örneğimizde basit bir flip - flop devresi yapacağız. Programlamaya başlayalım.

Programımızda iki LED kullancağız. LED'lerimizi Arduino'muzun 8 ve 9. portlarına bağlayacağız. LED'ler arasındaki bekleme süresi ise bir saniye olacak.
Programımızda ilk önce çıkış portlarını tanımlıyoruz. Sekizinci portu LED1, dokuzuncu portu LED2 olarak tanımlayacağız. Programımızı yazalım.

2.webp
Programımızı yazdıktan sonra sıra devremizi kurmaya geldi.

1.webp
Devremizi tamamladık.
 
Görseldeki kodda int LED2 = 9; tanımlamasının karşısında "LED1 olarak adlandırdık" yazıyor. Kodun çalışmasını etkilemez ama kafa karıştırmaması için aşağıda düzelterek paylaşıyorum:

Kod:
// Pin Tanımlamaları
int LED1 = 8; // 8. portu LED1 olarak adlandırdık
int LED2 = 9; // 9. portu LED2 olarak adlandırdık

void setup() {
  // Pinleri çıkış (OUTPUT) olarak ayarlıyoruz
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop() {
  // 1. LED'i yak, 1 saniye bekle, sonra söndür
  digitalWrite(LED1, HIGH); // LED1'i yaktık
  delay(1000);              // Bir saniye bekledik
  digitalWrite(LED1, LOW);  // LED1'i söndürdük

  // 2. LED'i yak, 1 saniye bekle, sonra söndür
  digitalWrite(LED2, HIGH); // LED2'yi yaktık
  delay(1000);              // Bir saniye bekledik
  digitalWrite(LED2, LOW);  // LED2'yi söndürdük
}

Forum İçin Teknik Not

Bu kod, LED'lerin sırayla birer saniye aralıklarla "göz kırpmasını" sağlar. Eğer her iki LED'in aynı anda durum değiştirmesini (biri sönerken diğerinin hemen yanmasını) istersen, aradaki ilk digitalWrite(LED1, LOW); ile digitalWrite(LED2, HIGH); arasındaki bekleme süresini kaldırmak daha seri bir geçiş sağlar.
 
Hız Ayarlı (Potansiyometreli) Flip-Flop

Bağlantı Şeması Rehberi

BileşenArduino PiniAçıklama
LED 1 (Artı)Dijital 8220 Ohm direnç üzerinden
LED 2 (Artı)Dijital 9220 Ohm direnç üzerinden
Potansiyometre Sol BacakGNDToprak Hattı
Potansiyometre Orta BacakAnalog A0Değişken voltaj girişi
Potansiyometre Sağ Bacak5VEnerji Hattı
LED Katotlar (-)GNDOrtak Toprak

Gelişmiş Kod (Hız Kontrollü)

Üyelerin kopyalayıp kullanabileceği, hız ayarı eklenmiş güncel kod:
Kod:
int led1 = 8;
int led2 = 9;
int potPin = A0; // Potansiyometre girişi
int hiz;         // Zamanlama değişkeni

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  // Potansiyometreden değeri oku (0-1023 arası)
  hiz = analogRead(potPin);

  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  delay(hiz); // Bekleme süresini potansiyometre belirler

  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  delay(hiz);
}

Forum İçin İlave Not

Arkadaşlar, bu devredeki potansiyometreyi çevirdiğinizde LED'lerin yanıp sönme hızı değişecektir. analogRead komutu sayesinde dış dünyadan gelen fiziksel bir hareketi, yazılımın içinde delay (gecikme) süresi olarak kullanmış oluyoruz. Bu mantıkla motor hızı veya lamba parlaklığı gibi birçok şeyi kontrol edebilirsiniz.
 
Geri
Yukarı