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
| #include <wiringPi.h> #include <stdio.h> #define BTN1 5 #define BTN2 4
int running = 0, currentLed = 0; const int leds[] = { 1, 0, 2, 3 };
void btn1Up() { delay(20); if (digitalRead(BTN1)) { printf("Game Start\n"); running = 1; } }
void btn2Up() { delay(20); if (digitalRead(BTN2)) { printf("Game Stop\n"); running = 0; } }
void shutdownAll() { for (int i = 0; i != sizeof(leds) / sizeof(int); ++i) digitalWrite(leds[i], LOW); }
int main (void) { wiringPiSetup(); pinMode(BTN1, INPUT); pinMode(BTN2, INPUT); pullUpDnControl(BTN1, PUD_DOWN); pullUpDnControl(BTN2, PUD_DOWN); wiringPiISR(BTN1, INT_EDGE_RISING, &btn1Up); wiringPiISR(BTN2, INT_EDGE_RISING, &btn2Up); for (int i = 0; i != sizeof(leds) / sizeof(int); ++i) { pinMode(leds[i], OUTPUT); pullUpDnControl(leds[i], PUD_UP); }
for( ; ;) { delay(100); currentLed = (currentLed + 1) % (sizeof(leds) / sizeof(int)); shutdownAll(); if (running) digitalWrite(leds[currentLed], HIGH); } return 0 ; }
|