kort blinkar åt ett håll. Version 2 lär dyka upp med bättre funktionalitet.
2 kablar för att koppla in höger och vänster blinkers (som jag antar styrs med 12-14 volt)
Med spännings delning så detekterar programmet om blinkern går hög och styr ut 12 volt
för att förlänga tiden så att 3 blinkningar sker (man kan ändra tiden så att den passar med andra antal)
Inga andra finesser det får komma i version 2.
Ingen version 2 en länk till ett färdigt bygge (varför uppfinna hjulet igen :) )
3 Blink Modification for SAAB 9-5 | Hackaday.io
Ny version med blinkers larm om man glömmer bort blinkersen och inaktiverar 3 blinkningar
om man blinkar kort åt andra hållet.
//---------------3-blink + blinkerslarm
int hBlink = 6; //digigital Input Blinkers
int vBlink = 8;
int vBlinkON = 0; // blinkers signal
int hBlinkON = 0;
int vBlinkHIGH = 0; // Blinkers status
int hBlinkHIGH = 0;
int vBlinkPinOut = 13; // utgång Blinkers
int hBlinkPinOut = 12; // utgång Blinkers
int BlinkLarmPinOut = 11; //blink larmtuta
long previousSekunder = 0;
long BlinkTid = 4; // tid för att ge 3 blink
long LarmTid = 30; // tid för att ge larm om man glömmer blinkersen på
long blinkTimer = 0; //blinkers timer
long LarmTimer = 0; //larmtimern
int LarmHIGH = 0; // larmstatus
unsigned long currentSekund = millis();
void setup() {
Serial.begin(9600);
previousSekunder = currentSekund ; // 270 timern uppvärmningstid 30sek
//---------- Komfort blinkers
pinMode(vBlink, INPUT); // Signal blinkers
pinMode(vBlinkPinOut, OUTPUT); // utgång blinkers
digitalWrite(vBlinkPinOut,LOW);
pinMode(hBlink, INPUT); // Signal blinkers
pinMode(hBlinkPinOut, OUTPUT); // utgång blinkers
digitalWrite(hBlinkPinOut,LOW); // bländar av helljuset
pinMode(BlinkLarmPinOut, OUTPUT); // larm utgång
digitalWrite(BlinkLarmPinOut,LOW); //
}
void loop() {
//---------- Komfort blinkers
unsigned long currentSekund = millis()/ 1000 ; //unsigned long värde i sekunder
//delay(200); // för att hinna läsa av värderna i serielport
vBlinkON = digitalRead(vBlink); // läser av Blinkers
hBlinkON = digitalRead(hBlink);
Serial.print(vBlinkHIGH);Serial.print(" ");Serial.print(hBlinkHIGH);Serial.print(" LH ");Serial.println(LarmHIGH);
Serial.print(currentSekund);Serial.print(" B-timer ");Serial.println(blinkTimer);
// aktiverar högerblinkers
if (hBlinkON == HIGH && hBlinkHIGH == LOW && vBlinkHIGH == LOW ) { //
digitalWrite(hBlinkPinOut,HIGH); //aktiverar blinkers
hBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
} // aktiverar vänsterblinkers
if (vBlinkON == HIGH && vBlinkHIGH == LOW && hBlinkHIGH == LOW ) { //
digitalWrite(vBlinkPinOut,HIGH); //aktiverar blinkers
vBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
}
// inaktiverar högerblinkers om man blinkar åt vänster hållet
if (vBlinkON == HIGH && hBlinkHIGH == HIGH ) { //
digitalWrite(hBlinkPinOut,LOW); //inaktiverar blinkers
} // inaktiverar vänsterblinkers om man blinkar åt höger hållet
if (hBlinkON == HIGH && vBlinkHIGH == HIGH ) { //
digitalWrite(vBlinkPinOut,LOW); //inaktiverar blinkers
}
delay(300); // för att hinna läsa av värderna i serielport
// inaktiverar blinkers efter BlinkTid sek ca. 3 blink
if (hBlinkHIGH == HIGH && currentSekund >= blinkTimer || vBlinkHIGH == HIGH && currentSekund >= blinkTimer ){ // inaktiverar blinkers efter 3 sek
digitalWrite(vBlinkPinOut,LOW); vBlinkHIGH = 0 ; //inaktiverar blinkersen
digitalWrite(hBlinkPinOut,LOW); hBlinkHIGH = 0 ;
blinkTimer = currentSekund + BlinkTid;
}
// aktiverar blinkers larmet
if (vBlinkON == HIGH && LarmHIGH == LOW || hBlinkON == HIGH && LarmHIGH == LOW ) {
LarmTimer = currentSekund;
LarmHIGH = 1 ;
} // inaktiverar blinkers larmet
if (vBlinkON == LOW && hBlinkON == LOW) { //
LarmTimer = currentSekund ;
LarmHIGH = 0 ;
} // larmar om man glömmer blinkersen på
if (vBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid || hBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid){ // larmar efter 10 sek
if (LarmHIGH == HIGH){
int var = 0;
while (vBlinkON == HIGH && var < 3 || hBlinkON == HIGH && var < 3 ){ // antal gånger som den larmar (3)
digitalWrite(BlinkLarmPinOut,HIGH); //aktiverar
delay (800);
digitalWrite(BlinkLarmPinOut,LOW); //inaktiverar
delay (100); var++ ; LarmHIGH = 0 ;
}
digitalWrite(vBlinkPinOut,LOW); //inaktiverar blinkersen
digitalWrite(hBlinkPinOut,LOW);
}}
}
Och här kommer programet: (inget är provat i bilen, får vänta tills det blir vår.......så inga garantier)
//---------------3-blink
int vBlink = 7; //digital Input Blinkers
int hBlink = 6;
int vBlinkON = 0;
int hBlinkON = 0;
int vBlinkPinOut = 12; // utgång Blinkers
int hBlinkPinOut = 13; // utgång Blinkers
int blinkTimer = 3000; //delay för ca. 3 blink
void setup() {
Serial.begin(9600);
//---------- 3-blink
pinMode(vBlink, INPUT); // vänster blinkers
pinMode(vBlinkPinOut, OUTPUT); // vänster blinkers utgång
digitalWrite(vBlinkPinOut,LOW); // vänster blinkers
pinMode(hBlink, INPUT); // höger blinkers
pinMode(hBlinkPinOut, OUTPUT); // höger blinkers utgång
digitalWrite(hBlinkPinOut,LOW); // höger blinkers
}
void loop() {
//---------- 3-Blinkers funktion
delay(200); // för att hinna läsa av värderna i serielport
vBlinkON = digitalRead(vBlink); // läser av Blinkers
hBlinkON = digitalRead(hBlink);
Serial.print(vBlinkON);Serial.print(" ");Serial.println(hBlinkON);
if (vBlinkON == HIGH && hBlinkON == LOW) { // ...
digitalWrite(vBlinkPinOut,HIGH); //aktiverar blinkers
delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
digitalWrite(vBlinkPinOut,LOW);
delay (100);
}
if (hBlinkON == HIGH && vBlinkON == LOW) { // ...
digitalWrite(hBlinkPinOut,HIGH); //aktiverar blinkers
delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
digitalWrite(hBlinkPinOut,LOW);
delay (100);
}
}
Ny version med blinkers larm om man glömmer bort blinkersen och inaktiverar 3 blinkningar
om man blinkar kort åt andra hållet.
//---------------3-blink + blinkerslarm
int hBlink = 6; //digigital Input Blinkers
int vBlink = 8;
int vBlinkON = 0; // blinkers signal
int hBlinkON = 0;
int vBlinkHIGH = 0; // Blinkers status
int hBlinkHIGH = 0;
int vBlinkPinOut = 13; // utgång Blinkers
int hBlinkPinOut = 12; // utgång Blinkers
int BlinkLarmPinOut = 11; //blink larmtuta
long previousSekunder = 0;
long BlinkTid = 4; // tid för att ge 3 blink
long LarmTid = 30; // tid för att ge larm om man glömmer blinkersen på
long blinkTimer = 0; //blinkers timer
long LarmTimer = 0; //larmtimern
int LarmHIGH = 0; // larmstatus
unsigned long currentSekund = millis();
void setup() {
Serial.begin(9600);
previousSekunder = currentSekund ; // 270 timern uppvärmningstid 30sek
//---------- Komfort blinkers
pinMode(vBlink, INPUT); // Signal blinkers
pinMode(vBlinkPinOut, OUTPUT); // utgång blinkers
digitalWrite(vBlinkPinOut,LOW);
pinMode(hBlink, INPUT); // Signal blinkers
pinMode(hBlinkPinOut, OUTPUT); // utgång blinkers
digitalWrite(hBlinkPinOut,LOW); // bländar av helljuset
pinMode(BlinkLarmPinOut, OUTPUT); // larm utgång
digitalWrite(BlinkLarmPinOut,LOW); //
}
void loop() {
//---------- Komfort blinkers
unsigned long currentSekund = millis()/ 1000 ; //unsigned long värde i sekunder
//delay(200); // för att hinna läsa av värderna i serielport
vBlinkON = digitalRead(vBlink); // läser av Blinkers
hBlinkON = digitalRead(hBlink);
Serial.print(vBlinkHIGH);Serial.print(" ");Serial.print(hBlinkHIGH);Serial.print(" LH ");Serial.println(LarmHIGH);
Serial.print(currentSekund);Serial.print(" B-timer ");Serial.println(blinkTimer);
// aktiverar högerblinkers
if (hBlinkON == HIGH && hBlinkHIGH == LOW && vBlinkHIGH == LOW ) { //
digitalWrite(hBlinkPinOut,HIGH); //aktiverar blinkers
hBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
} // aktiverar vänsterblinkers
if (vBlinkON == HIGH && vBlinkHIGH == LOW && hBlinkHIGH == LOW ) { //
digitalWrite(vBlinkPinOut,HIGH); //aktiverar blinkers
vBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
}
// inaktiverar högerblinkers om man blinkar åt vänster hållet
if (vBlinkON == HIGH && hBlinkHIGH == HIGH ) { //
digitalWrite(hBlinkPinOut,LOW); //inaktiverar blinkers
} // inaktiverar vänsterblinkers om man blinkar åt höger hållet
if (hBlinkON == HIGH && vBlinkHIGH == HIGH ) { //
digitalWrite(vBlinkPinOut,LOW); //inaktiverar blinkers
}
delay(300); // för att hinna läsa av värderna i serielport
// inaktiverar blinkers efter BlinkTid sek ca. 3 blink
if (hBlinkHIGH == HIGH && currentSekund >= blinkTimer || vBlinkHIGH == HIGH && currentSekund >= blinkTimer ){ // inaktiverar blinkers efter 3 sek
digitalWrite(vBlinkPinOut,LOW); vBlinkHIGH = 0 ; //inaktiverar blinkersen
digitalWrite(hBlinkPinOut,LOW); hBlinkHIGH = 0 ;
blinkTimer = currentSekund + BlinkTid;
}
// aktiverar blinkers larmet
if (vBlinkON == HIGH && LarmHIGH == LOW || hBlinkON == HIGH && LarmHIGH == LOW ) {
LarmTimer = currentSekund;
LarmHIGH = 1 ;
} // inaktiverar blinkers larmet
if (vBlinkON == LOW && hBlinkON == LOW) { //
LarmTimer = currentSekund ;
LarmHIGH = 0 ;
} // larmar om man glömmer blinkersen på
if (vBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid || hBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid){ // larmar efter 10 sek
if (LarmHIGH == HIGH){
int var = 0;
while (vBlinkON == HIGH && var < 3 || hBlinkON == HIGH && var < 3 ){ // antal gånger som den larmar (3)
digitalWrite(BlinkLarmPinOut,HIGH); //aktiverar
delay (800);
digitalWrite(BlinkLarmPinOut,LOW); //inaktiverar
delay (100); var++ ; LarmHIGH = 0 ;
}
digitalWrite(vBlinkPinOut,LOW); //inaktiverar blinkersen
digitalWrite(hBlinkPinOut,LOW);
}}
}
Och här kommer programet: (inget är provat i bilen, får vänta tills det blir vår.......så inga garantier)
//---------------3-blink
int vBlink = 7; //digital Input Blinkers
int hBlink = 6;
int vBlinkON = 0;
int hBlinkON = 0;
int vBlinkPinOut = 12; // utgång Blinkers
int hBlinkPinOut = 13; // utgång Blinkers
int blinkTimer = 3000; //delay för ca. 3 blink
void setup() {
Serial.begin(9600);
//---------- 3-blink
pinMode(vBlink, INPUT); // vänster blinkers
pinMode(vBlinkPinOut, OUTPUT); // vänster blinkers utgång
digitalWrite(vBlinkPinOut,LOW); // vänster blinkers
pinMode(hBlink, INPUT); // höger blinkers
pinMode(hBlinkPinOut, OUTPUT); // höger blinkers utgång
digitalWrite(hBlinkPinOut,LOW); // höger blinkers
}
void loop() {
//---------- 3-Blinkers funktion
delay(200); // för att hinna läsa av värderna i serielport
vBlinkON = digitalRead(vBlink); // läser av Blinkers
hBlinkON = digitalRead(hBlink);
Serial.print(vBlinkON);Serial.print(" ");Serial.println(hBlinkON);
if (vBlinkON == HIGH && hBlinkON == LOW) { // ...
digitalWrite(vBlinkPinOut,HIGH); //aktiverar blinkers
delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
digitalWrite(vBlinkPinOut,LOW);
delay (100);
}
if (hBlinkON == HIGH && vBlinkON == LOW) { // ...
digitalWrite(hBlinkPinOut,HIGH); //aktiverar blinkers
delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
digitalWrite(hBlinkPinOut,LOW);
delay (100);
}
}