#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// OLED ekran için genişlik ve yükseklik
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// SSD1306 ekran nesnesi (I2C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// LED pinlerinin başlangıç ve bitiş numaraları
const int firstPin = 2; // D2
const int lastPin = 13; // D11
// Buton pinleri
const int button1Pin = A0; // D12 (Buton 1)
const int button2Pin = A1; // D13 (Buton 2)
// LED'lerin sağdan sola veya soldan sağa yanıp sönmesi için bir kontrol değişkeni
bool mode = false; // false: sağdan sola, true: soldan sağa
bool isActive = false; // LED'lerin sadece buton basıldığında çalışması için
void setup() {
// Seri haberleşmeyi başlat
Serial.begin(9600);
// OLED ekran başlatma
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C: OLED I2C adresi
Serial.println(F("Ekran yok"));
for (;;); // Hata varsa programı durdur
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(30, 10);
display.print("Ozturk");
display.setCursor(22, 30);
display.print("BILISIM");
display.display();
// Tüm LED pinlerini çıkış olarak ayarla
for (int pin = firstPin; pin <= lastPin; pin++) {
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW); // Başlangıçta LED'leri kapalı tut
}
// Buton pinlerini giriş olarak ayarla
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
}
void loop() {
// Butonları kontrol et
if (digitalRead(button1Pin) == LOW) {
mode = false; // 1. butona basıldığında sağdan sola hareket
isActive = true; // LED animasyonunu başlat
delay(200); // Butonun titreşimini önlemek için kısa bekleme
}
if (digitalRead(button2Pin) == LOW) {
mode = true; // 2. butona basıldığında soldan sağa hareket
isActive = true; // LED animasyonunu başlat
delay(200); // Butonun titreşimini önlemek için kısa bekleme
}
// LED'ler sadece isActive == true olduğunda çalışır
if (isActive) {
if (mode == false) {
// Sağdan sola LED'leri yak ve söndür
for (int pin = lastPin; pin >= firstPin; pin--) {
digitalWrite(pin, HIGH);
delay(100);
}
delay(5000);
for (int pin = lastPin; pin >= firstPin; pin--) {
digitalWrite(pin, LOW);
delay(1000);
}
} else {
// Soldan sağa LED'leri yak ve söndür
for (int pin = firstPin; pin <= lastPin; pin++) {
digitalWrite(pin, HIGH);
delay(100);
}
delay(5000);
for (int pin = firstPin; pin <= lastPin; pin++) {
digitalWrite(pin, LOW);
delay(1000);
}
}
isActive = false; // LED animasyonu bittikten sonra durdur
}
}