linea 1,3 dizel e direksiyondaki ses açma-ses kapatma-mute tuşlarıyla kontrol edelibilen bir hız sabitleme sistemi yapacağım .Arduino ile tetikleyeceğim 4 kanallı röle ile beyine 12v göndereceğim. Aracın sistemi, beyinin belli pinlerine 12v göndererek çalışıyor .röleye 12 v diğerine de aracın ecu ünitesine giden kabloları bağlayacağım. direksiyondaki 3 tuş tek bir data kablosu ile veriyi iletiyor. bunuda dirençler vasıtasıyla yapıyor. ben 4 çıkış alacağım için (hız sabitleme sistemi için 4 tuş gerekli. on/off- hız artı-hız eksi-hafıza) mute tuşundan gelen değer 2.5 sn olursa 4. pini açacak yani mute tuşuna basılı tutacağım bıraktığımda röleyi tetiklemiş olacak. hız sabitleme devrede kalabilmesi içinde tekrar basana kadar röleyi kapatmaması gerekiyor. Ve röye açık kaldığı müddetinde diğer tuşarın çalışması gerekiyor . artı ya bastığım kadar hızlanacak artı tuşuna basmayı bıraktığımda röle geri kapanacak. Birde mute tuşuna uzun bastıktan sonra mute tuşunu hafıza olarak kullanmam gerek. Yani frene bastığımda mute tuşuna bir kez bastığımda eski hızı getirecek . Aracın beyini zaten bu sistemi destekliyor. Sadece düşük paket olduğu için tesisat ve kontrol tuışları yok. PSA grubu kolu ile yazılım olmadan yapılıyor ama benim pek hoşuma gitmedi.
direksiyondan gelen verileri daha okumadım. örnek olarak bir değer girerek kod yazdım. Ama bilgim biraz az olduğu için emin olamadım kodu kontrol edebilir misiniz
direksiyondan gelen verileri daha okumadım. örnek olarak bir değer girerek kod yazdım. Ama bilgim biraz az olduğu için emin olamadım kodu kontrol edebilir misiniz
Kod:
const int analogPin = A0; // Analog pin
const int relay2Pin = 2; // Dijital pin 2
const int relay3Pin = 3; // Dijital pin 3
const int relay4Pin = 4; // Dijital pin 4
const int relay5Pin = 5; // Dijital pin 5
void setup() {
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(relay4Pin, OUTPUT);
pinMode(relay5Pin, OUTPUT);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, LOW);
digitalWrite(relay4Pin, LOW);
digitalWrite(relay5Pin, LOW);
}
void loop() {
int okunandeğerValue = analogRead(analogPin);
if (okunandeğerValue >= 600 && okunandeğerValue <= 650) {
delay(2500); //
if (okunandeğerValue >= 600 && okunandeğerValue <= 650) {
digitalWrite(relay2Pin, HIGH);
while (okunandeğerValue >= 600 && okunandeğerValue <= 650) {
okunandeğerValue = analogRead(analogPin);
delay(50);
}
digitalWrite(relay2Pin, LOW);
}
} else if (okunandeğerValue >= 550 && okunandeğerValue <= 590) {
digitalWrite(relay4Pin, HIGH);
delay(350); //
if (okunandeğerValue >= 550 && okunandeğerValue <= 590) {
digitalWrite(relay3Pin, HIGH);
while (okunandeğerValue >= 550 && okunandeğerValue <= 590) {
okunandeğerValue = analogRead(analogPin);
delay(50);
}
digitalWrite(relay3Pin, LOW);
digitalWrite(relay4Pin, LOW);
}
} else if (okunandeğerValue >= 470 && okunandeğerValue <= 530) {
digitalWrite(relay5Pin, HIGH);
delay(350); //
if (okunandeğerValue >= 470 && okunandeğerValue <= 530) {
digitalWrite(relay3Pin, HIGH);
digitalWrite(relay4Pin, HIGH);
while (okunandeğerValue >= 470 && okunandeğerValue <= 530) {
okunandeğerValue = analogRead(analogPin);
delay(50);
}
digitalWrite(relay3Pin, LOW);
digitalWrite(relay4Pin, LOW);
digitalWrite(relay5Pin, LOW);
}
}
}
Last edited by a moderator: