ArdaWien
Decapat
- Katılım
- 8 Ekim 2022
- Mesajlar
- 26
Merhaba Arduino arabamda sağ sinyal ve sol sinyal yapmak istiyorum. Lakin Y tuşuna (LED için Bluetooth'tan gelen komut) bastığımda 1 kere yanıp sönüyor. Ben Y tuşuna bastığımda diğer tuşlarda çalışsın araba ileri giderken de geri giderken de LED yanıp sonsun ta ki ben tekrar Y tusuna basana kadar. Kodu kendim de yazdım delay fonksiyonu ile çalışmadı, ChatGPT'ye yazdırdım yine olmadı her zaman ya 1 kere yanıp sonuyor ya da araba çalışmıyor LED yanıp sönerken. Yardımcı olabilir misiniz?
Kodlar:
Kodlar:
Kod:
// L298N Bağlantısı
const int in1 = 7;
const int in2 = 12;
const int enA = 9;
const int in3 = 11;
const int in4 = 10;
const int enB = 3;
int state; // Bluetooth'tan gelen komut
int vSpeed = 255; // Varsayılan hız
bool ledModuAktif = false; // LED yanıp sönme açık mı?
unsigned long previousMillis = 0;
const long interval = 750;
bool ledState = LOW;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enA, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(4, OUTPUT); // Sağ Sarı LED
Serial.begin(9600); // Bluetooth için seri haberleşme
}
void loop() {
if (Serial.available() > 0) {
char gelenKomut = Serial.read();
if (gelenKomut == 'Y') {
// Y tuşuna basıldığında LED yanıp sönme durumunu kontrol et
ledModuAktif = !ledModuAktif; // Durumu değiştir
if (!ledModuAktif) {
digitalWrite(4, LOW); // Y'ye tekrar basıldığında LED'i kapat
}
} else {
state = gelenKomut; // Sadece diğer komutları oku
}
}
// LED yanıp sönme kontrolü
if (ledModuAktif) {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(4, ledState);
}
}
// --- Motor kontrolleri ---
// Hız seviyeleri
if (state == '0') vSpeed = 0;
else if (state == '1') vSpeed = 100;
else if (state == '2') vSpeed = 180;
else if (state == '3') vSpeed = 200;
else if (state == '4') vSpeed = 255;
// İleri
if (state == 'F') {
analogWrite(enA, vSpeed);
analogWrite(enB, vSpeed);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
// Geri
else if (state == 'B') {
analogWrite(enA, vSpeed);
analogWrite(enB, vSpeed);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
// Sol
else if (state == 'L') {
analogWrite(enA, vSpeed);
analogWrite(enB, vSpeed);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
// Sağ
else if (state == 'R') {
analogWrite(enA, vSpeed);
analogWrite(enB, vSpeed);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
// Durdur
else if (state == 'S') {
analogWrite(enA, 0);
analogWrite(enB, 0);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
}