W tej cześci pokazuję kod programu w arduino oraz jak wszytko jest zlutowane i gdzie wpięte w rygiel. Pozostają tylko testy w samochodzie, które opublikuję niebawem.
/*
s1 - przekaznik informujacy o tym, ze rygiel jest zamknięty
s2 - przekaznik informujacy o tym ze rygiel jest otwarty
stan poczatkowy - s1 otwarty, s2 zamknięty
eepprom address 18404 = 100 - rygiel otwarty
eeeprom address 18404 = 200 - rygiel zamkniety
*/
#include EEPROM.h
//nazwa eeprom.h musi byc w ostrych nawiasach. youtube na to nie pozwala.
void setup() {
DDRD = B11111111;
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalRead(8);
digitalRead(9);
pinMode(LED_BUILTIN, OUTPUT);
//if byte in eeprom do not exist (255) write to eprop 100 = steering lock is open. This code runs only first time when arduino is programmed.
byte byte1 = EEPROM.read(18404);
Serial.println(byte1);
if(byte1 == 255) {
Serial.println("Setting byte 1");
EEPROM.write(18404, 100);
}
//byte1 = 200;
//set start open position depends of memmory byte
if(byte1 == 100) {
Serial. println("Start position open");
sets1off();
delay(100);
sets2on();
}
//set start closed position depends of memmory byte
if(byte1 == 200) {
Serial.println("Start position closed");
sets2off();
delay(100);
sets1on();
}
}
void loop() {
bool openstatus = digitalRead(8);
//Serial.println(openstatus);
if(openstatus == 0) {
Serial.println("Received open signal");
Serial. println("Set position open");
sets1off();
delay(100);
sets2on();
EEPROM.write(18404, 100);
byte byte1 = EEPROM.read(18404);
Serial.println(byte1);
}
bool closestatus = digitalRead(9);
//Serial.println(openstatus);
if(closestatus == 0) {
Serial.println("Received close signal");
Serial.println("Set position closed");
sets2off();
delay(100);
sets1on();
EEPROM.write(18404, 200);
byte byte1 = EEPROM.read(18404);
Serial.println(byte1);
}
delay(50);
}
void sets1on() {
digitalWrite(3, HIGH);
delay(150);
digitalWrite(3, LOW);
}
void sets1off() {
digitalWrite(2, HIGH);
delay(150);
digitalWrite(2, LOW);
}
void sets2on() {
digitalWrite(5, HIGH);
delay(150);
digitalWrite(5, LOW);
}
void sets2off() {
digitalWrite(4, HIGH);
delay(150);
digitalWrite(4, LOW);
}
Негізгі бет Hakujemy rygiel mercedesa W203 czyli emulator rygla bez ingerencji w CAN. Część 2
No video
Пікірлер: 4