Advertisement
zdenekpetrzd

Přepínač poměrněho tahu - čtení

Dec 15th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #include <Arduino.h>                //Přibal knihovnu Arduina
  2. #include "avdweb_VirtualDelay.h"    //github.com/avandalen/VirtualDelay
  3. VirtualDelay singleDelay;           //Deklarace proměnné potřebné pro délku stisknutí tlačítka
  4. VirtualDelay twoDelay;
  5.  
  6. char klavesaPT[] = {"_abcdefghijkl"};
  7. int pomernyTahVstupy[4];
  8. int aktualniStavPT;
  9. int staryStavPT;
  10. int zapisovatelnyStavPT;
  11. int staryZapisovatelnyStavPT;
  12. int tlacitkoPin[] = {2,3,4,5};
  13.  
  14. void setup() {
  15.   Serial.begin(2400);
  16.   for(int i=0; i<4; i++){pinMode(tlacitkoPin[i], OUTPUT);}
  17.   pomernyTah();
  18.  
  19. }
  20. void pomernyTah() {                                                                     //Funkce pro čtení ovladače poměrného tahu
  21.   for(int i=0; i<4; i++){ pomernyTahVstupy[i] = digitalRead(tlacitkoPin[i]); }          //PomernyTahVstupy je roven stavu napětí na pinu
  22.   for(int i=0; i<4; i++){ bitWrite(aktualniStavPT, i, pomernyTahVstupy[i]); }           //Jednotlivé bity jsou rovny poli hodnot PomernyTahVstupy
  23.   if(aktualniStavPT != staryStavPT){twoDelay.start(125);}                               //Pokud došlo ke změně napětí, začni počítat zpoždění
  24.   if(aktualniStavPT != staryStavPT && twoDelay.elapsed()){                              //Pokud došlo ke změně napětí a zároveň skončila doba zpoždění
  25.     staryStavPT = aktualniStavPT;                                                       //Nahraď starý stav novým
  26.     zapisovatelnyStavPT = aktualniStavPT; }                                             //ZapisovatelnyStavPT je roven aktuálnímu
  27.   for(int i=1; i<13; i++) {                                                             //Počítej od 1 do 13
  28.     if(zapisovatelnyStavPT == i && staryZapisovatelnyStavPT != zapisovatelnyStavPT) {   //
  29.       Serial.print("Stisknuta klavesa PT ");                                            //Stiskni klávesu
  30.       Serial.println(klavesaPT[i]);                                                     //Klávesa z pole
  31.       staryZapisovatelnyStavPT = zapisovatelnyStavPT;                                   //Nahrazení StaréhoZapisovatelnéhoStavu novým
  32.    } } }
  33. void loop() {
  34.   pomernyTah();
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement