Program rozpoznaje pojedyncze i podwójne klaśnięcia na RPi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include <wiringPi.h> #include <stdio.h> #include <iostream> #define SOUNDPIN 7 extern void exit(int); int zgloszenie=0; using namespace std; void przerwanie(void) { zgloszenie=1; } int setup() { //inicjacja wiringPi i podpięcie funkcji przerwania if ( wiringPiSetup()==-1 || wiringPiISR(SOUNDPIN, INT_EDGE_BOTH, &przerwanie) <0) exit(1); return 0; } int main() { int licznik=0; int dlugoscKlasniecia=0; bool liczy = false; setup(); while(1) { if (zgloszenie) { // cout<< "Przerwanie, wywołanie nr: " << ++licznik << "," << dlugoscKlasniecia<<"\n"; zgloszenie = 0; if (!liczy) liczy = true; if (dlugoscKlasniecia < 20) { cout << "Podwojne\n" ; liczy = false; } dlugoscKlasniecia=0; } else dlugoscKlasniecia++; //zwieksza sie odleglosc od ostatniego klasniecia if (liczy && dlugoscKlasniecia>20) { cout << "Pojedyncze\n"; liczy = false; } delay(30); //ominięcie } return 0; } |