Само устройство делает 2 вещи:
1. меняет частоту сигнала на прибоку от датчика скорости на коробке.
2. убирает отсечку по скорости, приборка и мозг больше не видят скорость выше 180км/ч.
Нажмите для просмотра прикрепленного файла
Код самой прошивки для среды Arduino:
Код
//==========INPUT============================
bool state = HIGH;
bool sig = HIGH;
unsigned long time_IN_LAST=0;
unsigned long time_IN_NOW=0;
//unsigned long timeMID2=4130;//4920 * 0.84 = 4130 micros delay in 180km/h
unsigned long timeMID=500000;
//=====EXEPTIOT===============
unsigned long micros_EXCEPTION=10000000;
unsigned long micros_EXCEPTION2=4294000000;
//==OUT===========================================================================
=========
unsigned long time_OUT_NOW=0;
unsigned long time_OUT_LAST=0;
bool sigOUT=LOW;
void setup() {
// Serial.begin(115200);
pinMode(4, OUTPUT);
pinMode(2, INPUT);
delay(500);
sig=digitalRead(2);
state=sig;
}
void loop() {
//======INPUT===================
sig=digitalRead(2);
if(state!=sig)
{
time_IN_NOW=micros();
timeMID=time_IN_NOW-time_IN_LAST;
if(timeMID<4920)timeMID=4920; //speed limit
time_IN_LAST=time_IN_NOW;
state=sig;
// Serial.print("IN:");
// Serial.println(timeMID);
}
//========OUT============
time_OUT_NOW=micros();
if(time_OUT_NOW<micros_EXCEPTION&&time_OUT_LAST>micros_EXCEPTION2)time_OUT_LAST=0;
if(time_OUT_NOW>time_OUT_LAST+timeMID*0.84) //0.84 correction in %
{
digitalWrite(4, sigOUT);
sigOUT = !sigOUT;
// Serial.print("OUT:");
// Serial.println(time_OUT_LAST-time_OUT_NOW);
time_OUT_LAST=time_OUT_NOW;
}
}
bool state = HIGH;
bool sig = HIGH;
unsigned long time_IN_LAST=0;
unsigned long time_IN_NOW=0;
//unsigned long timeMID2=4130;//4920 * 0.84 = 4130 micros delay in 180km/h
unsigned long timeMID=500000;
//=====EXEPTIOT===============
unsigned long micros_EXCEPTION=10000000;
unsigned long micros_EXCEPTION2=4294000000;
//==OUT===========================================================================
=========
unsigned long time_OUT_NOW=0;
unsigned long time_OUT_LAST=0;
bool sigOUT=LOW;
void setup() {
// Serial.begin(115200);
pinMode(4, OUTPUT);
pinMode(2, INPUT);
delay(500);
sig=digitalRead(2);
state=sig;
}
void loop() {
//======INPUT===================
sig=digitalRead(2);
if(state!=sig)
{
time_IN_NOW=micros();
timeMID=time_IN_NOW-time_IN_LAST;
if(timeMID<4920)timeMID=4920; //speed limit
time_IN_LAST=time_IN_NOW;
state=sig;
// Serial.print("IN:");
// Serial.println(timeMID);
}
//========OUT============
time_OUT_NOW=micros();
if(time_OUT_NOW<micros_EXCEPTION&&time_OUT_LAST>micros_EXCEPTION2)time_OUT_LAST=0;
if(time_OUT_NOW>time_OUT_LAST+timeMID*0.84) //0.84 correction in %
{
digitalWrite(4, sigOUT);
sigOUT = !sigOUT;
// Serial.print("OUT:");
// Serial.println(time_OUT_LAST-time_OUT_NOW);
time_OUT_LAST=time_OUT_NOW;
}
}