/***********************************************************************************************
* Implementácia stlacenia tlacidla podla prikladu:
https://www.itnetwork.sk/hardver-pc/arduino/arduino-a-prace-s-tlacidlami
***********************************************************************************************/
unsigned long meranie_casu;
int dobaStlaceniaRED, dobaStlaceniaGRE, dobaStlaceniaBLU, limit= 25;
bool svietitRED, svietitGRE, svietitBLU = false;
void setup()
{
pinMode(3,INPUT_PULLUP); // Digital 3 - R input
pinMode(4,INPUT_PULLUP); // Digital 4 - G input
pinMode(5,INPUT_PULLUP); // Digital 5 - B input
pinMode(13,OUTPUT); // Digital 13 - R LED part output
pinMode(12,OUTPUT); // Digital 12 - G LED part output
pinMode(11,OUTPUT); // Digital 11 - B LED part output
}
void loop()
{
meranie_casu = millis(); //potrebujem zistiť či stlačenie trvalo dlhšie ako 25ms, to indikuje správne stlačenie
digitalWrite(13,svietitRED); // na výstupný pin zapíšem stav uložený v tooglovateľnej premennej svietiť
// premenná svietiť je boolovská premenná a má hodnotu log I svietiť alebo O nesvietiť
digitalWrite(12,svietitGRE);
digitalWrite(11,svietitBLU);
//detekovanie stlacenia RED tlacidla
while(!digitalRead(3)) //cyklus beží a čas sa počíta dokiaľ je tlačidlo stlačené a na pine je log nula
{
dobaStlaceniaRED = millis()-meranie_casu; //doba stlačenia je čas na začiatku mínus čas po uvolnení tlačidla
}
if(dobaStlaceniaRED >= limit) // ak bolo detekované dlhšie stlačenie ako 25ms tak považujem tlačidlo za
{ // umyselne uzivatelom stlacene a tooglujem LED
svietitRED = !svietitRED; //negovanie stlačeni tlačidla
dobaStlaceniaRED = 0;
}
//detekovanie stlacenia GRE tlacidla
while(!digitalRead(4)) //cyklus beží a čas sa počíta dokiaľ je tlačidlo stlačené a na pine je log nula
{
dobaStlaceniaGRE = millis()-meranie_casu; //doba stlačenia je čas na začiatku mínus čas po uvolnení tlačidla
}
if(dobaStlaceniaGRE >= limit) // ak bolo detekované dlhšie stlačenie ako 25ms tak považujem tlačidlo za
{ // umyselne uzivatelom stlacene a tooglujem LED
svietitGRE = !svietitGRE; //negovanie stlačeni tlačidla
dobaStlaceniaGRE = 0;
}
/* Pointov prce s tlacidlom je sledovat, ci stlacenie trvalo dostatocne dlho, v tomto prípade aspon 25mS
co je empirická hodnota (urcena na zaklade skusenosti). Ak ano tak zmenim hodnotu premennej ktora je boolovskeho
typu.
*/
}
//Zdroj: https://www.itnetwork.sk/hardver-pc/arduino/arduino-a-prace-s-tlacidlami