Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned long ta;
- unsigned long tb;
- unsigned long tc;
- unsigned long td;
- bool poprve = true;
- bool stisknuto = false;
- void arr() {
- pinMode(46,INPUT);// +
- pinMode(44,INPUT);// -
- //Serial.println(hodnoty[209]);
- // Pokud je přepínač režimu jízdy na ARR, aktivuj klávesnici ARR
- if(hodnoty[94] == 1) {
- digitalWrite(52,HIGH);
- // Pokud je nenulová předvolená rychlost ARR, zapiš ji na výstup
- if(hodnoty[209] != 0){
- int a;
- digitalWrite(50,LOW);
- // Převod hodnota na kalbrované hodnoty pro DAC na výstup klávesnice
- // Při poslední hodnotě každého argumentu funkce map musí svítít na klávesnici obě LED
- // při držení tlačítka zvolené rychlosti
- if(hodnoty[209]>0 && hodnoty[209]<=10) a = map(hodnoty[209],0,10,0,252); // 10
- else if(hodnoty[209]>10 && hodnoty[209]<=20) a = map(hodnoty[209],10,20,252,521); // 20
- else if(hodnoty[209]>20 && hodnoty[209]<=30) a = map(hodnoty[209],20,30,521,778); // 30
- else if(hodnoty[209]>30 && hodnoty[209]<=40) a = map(hodnoty[209],30,40,778,1041); // 40
- else if(hodnoty[209]>40 && hodnoty[209]<=50) a = map(hodnoty[209],40,50,1041,1298); // 50
- else if(hodnoty[209]>50 && hodnoty[209]<=60) a = map(hodnoty[209],50,60,1298,1565); // 60
- else if(hodnoty[209]>60 && hodnoty[209]<=70) a = map(hodnoty[209],60,70,1565,1823); // 70
- else if(hodnoty[209]>70 && hodnoty[209]<=80) a = map(hodnoty[209],70,80,1823,2102); // 80
- else if(hodnoty[209]>80 && hodnoty[209]<=90) a = map(hodnoty[209],80,90,2102,2359); // 90
- else if(hodnoty[209]>90 && hodnoty[209]<=100) a = map(hodnoty[209],90,100,2359,2626); // 100
- else if(hodnoty[209]>100 && hodnoty[209]<=120) a = map(hodnoty[209],100,120,2626,3149); // 120
- else if(hodnoty[209]>120 && hodnoty[209]<=140) a = map(hodnoty[209],120,140,3160,3670); // 140
- // DAC převodník je 12 bitový, proto nastav rozlišení funkce analogWrite na 12 a zapiš hodnotu
- analogWriteResolution(12);
- analogWrite(DAC1,a);
- analogWriteResolution(8);
- }
- // Pokud je předvolená rychlost nulová, sepni relé nulové rychlosti
- else {
- digitalWrite(50,HIGH);
- }
- }
- // Pokud je přepínač režimu jízdy v jiné poloze než ARR, vypni klávesnici
- else digitalWrite(52,LOW);
- // Tlačítko pro zvýšení/snížení rychlosti dle požadavku klávesnice se stiskne na 50ms,
- // poté následuje pauza 60ms. Díky pauze má Arduino čas přijmout nová data ze simulátoru
- // a ujistit se, že rychlost nepřejede.
- td = millis();
- if(digitalRead(44) == 0 && digitalRead(46) == 1 && poprve == true && td-tc > 60){
- client.print("SetCV(111,1)::");
- ta = millis();
- poprve = false;
- stisknuto = true;
- }
- else if(digitalRead(46) == 0 && digitalRead(44) == 1 && poprve == true && td-tc > 60){
- client.print("SetCV(110,1)::");
- ta = millis();
- poprve = false;
- stisknuto = true;
- }
- tb = millis();
- if(tb-ta > 50 && stisknuto == true || digitalRead(44) == 0 && digitalRead(46) == 0) {
- client.print("SetCV(110,0)::");
- client.print("SetCV(111,0)::");
- poprve = true;
- stisknuto = false;
- tc = millis();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment