zdenekpetrzd

ARR funkční 11.05.2019

May 11th, 2019
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. unsigned long ta;
  2. unsigned long tb;
  3. unsigned long tc;
  4. unsigned long td;
  5. bool poprve = true;
  6. bool stisknuto = false;
  7.  
  8. void arr() {
  9. pinMode(46,INPUT);// +
  10. pinMode(44,INPUT);// -
  11. //Serial.println(hodnoty[209]);
  12. // Pokud je přepínač režimu jízdy na ARR, aktivuj klávesnici ARR
  13. if(hodnoty[94] == 1) {
  14. digitalWrite(52,HIGH);
  15. // Pokud je nenulová předvolená rychlost ARR, zapiš ji na výstup
  16. if(hodnoty[209] != 0){
  17. int a;
  18. digitalWrite(50,LOW);
  19. // Převod hodnota na kalbrované hodnoty pro DAC na výstup klávesnice
  20. // Při poslední hodnotě každého argumentu funkce map musí svítít na klávesnici obě LED
  21. // při držení tlačítka zvolené rychlosti
  22. if(hodnoty[209]>0 && hodnoty[209]<=10) a = map(hodnoty[209],0,10,0,252); // 10
  23. else if(hodnoty[209]>10 && hodnoty[209]<=20) a = map(hodnoty[209],10,20,252,521); // 20
  24. else if(hodnoty[209]>20 && hodnoty[209]<=30) a = map(hodnoty[209],20,30,521,778); // 30
  25. else if(hodnoty[209]>30 && hodnoty[209]<=40) a = map(hodnoty[209],30,40,778,1041); // 40
  26. else if(hodnoty[209]>40 && hodnoty[209]<=50) a = map(hodnoty[209],40,50,1041,1298); // 50
  27. else if(hodnoty[209]>50 && hodnoty[209]<=60) a = map(hodnoty[209],50,60,1298,1565); // 60
  28. else if(hodnoty[209]>60 && hodnoty[209]<=70) a = map(hodnoty[209],60,70,1565,1823); // 70
  29. else if(hodnoty[209]>70 && hodnoty[209]<=80) a = map(hodnoty[209],70,80,1823,2102); // 80
  30. else if(hodnoty[209]>80 && hodnoty[209]<=90) a = map(hodnoty[209],80,90,2102,2359); // 90
  31. else if(hodnoty[209]>90 && hodnoty[209]<=100) a = map(hodnoty[209],90,100,2359,2626); // 100
  32. else if(hodnoty[209]>100 && hodnoty[209]<=120) a = map(hodnoty[209],100,120,2626,3149); // 120
  33. else if(hodnoty[209]>120 && hodnoty[209]<=140) a = map(hodnoty[209],120,140,3160,3670); // 140
  34.  
  35. // DAC převodník je 12 bitový, proto nastav rozlišení funkce analogWrite na 12 a zapiš hodnotu
  36. analogWriteResolution(12);
  37. analogWrite(DAC1,a);
  38. analogWriteResolution(8);
  39. }
  40. // Pokud je předvolená rychlost nulová, sepni relé nulové rychlosti
  41. else {
  42. digitalWrite(50,HIGH);
  43. }
  44. }
  45. // Pokud je přepínač režimu jízdy v jiné poloze než ARR, vypni klávesnici
  46. else digitalWrite(52,LOW);
  47.  
  48. // Tlačítko pro zvýšení/snížení rychlosti dle požadavku klávesnice se stiskne na 50ms,
  49. // poté následuje pauza 60ms. Díky pauze má Arduino čas přijmout nová data ze simulátoru
  50. // a ujistit se, že rychlost nepřejede.
  51. td = millis();
  52. if(digitalRead(44) == 0 && digitalRead(46) == 1 && poprve == true && td-tc > 60){
  53. client.print("SetCV(111,1)::");
  54. ta = millis();
  55. poprve = false;
  56. stisknuto = true;
  57. }
  58. else if(digitalRead(46) == 0 && digitalRead(44) == 1 && poprve == true && td-tc > 60){
  59. client.print("SetCV(110,1)::");
  60. ta = millis();
  61. poprve = false;
  62. stisknuto = true;
  63. }
  64.  
  65. tb = millis();
  66. if(tb-ta > 50 && stisknuto == true || digitalRead(44) == 0 && digitalRead(46) == 0) {
  67. client.print("SetCV(110,0)::");
  68. client.print("SetCV(111,0)::");
  69. poprve = true;
  70. stisknuto = false;
  71. tc = millis();
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment