Mijn vraag
Ik heb op dit moment drie knoppen die op true gaan wanneer de digitalRead low is. Ik heb een PULL UP schakeling gebruikt. Het is de bedoeling dat het programma van released, naar check pressed, naar pressed, naar check released gaat. Het is de bedoeling dat één tab dit voor alle buttons controleert.
Relevante software en hardware die ik gebruik
Arduino IDE
Arduino UNO
drie buttons
Wat ik al gevonden of geprobeerd heb
Het controleren of een buttondown of up true is. Dat werkt, maar niet zogauw ik in een if-statement met || ga werken.
Ik heb op dit moment drie knoppen die op true gaan wanneer de digitalRead low is. Ik heb een PULL UP schakeling gebruikt. Het is de bedoeling dat het programma van released, naar check pressed, naar pressed, naar check released gaat. Het is de bedoeling dat één tab dit voor alle buttons controleert.
Relevante software en hardware die ik gebruik
Arduino IDE
Arduino UNO
drie buttons
Wat ik al gevonden of geprobeerd heb
Het controleren of een buttondown of up true is. Dat werkt, maar niet zogauw ik in een if-statement met || ga werken.
C++: button.ino
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
61
62
63
64
65
| const int NUMBEROFBUTTONS = 3; const int BUTTON_STATE_RELEASED = 1; const int BUTTON_STATE_CHECK_PRESSED = 2; const int BUTTON_STATE_PRESSED = 3; const int BUTTON_STATE_CHECK_RELEASED = 4; int button_State; const int BUTTON_TIME = 10; unsigned long button_Previous; boolean button_Click; int ledNumber; void buttonSetup() { button_State = BUTTON_STATE_RELEASED; button_Released_Entry(); ledNumber = -1; } void button_Loop() { switch (button_State) { case BUTTON_STATE_RELEASED: button_Released_Do(); if (buttonHardware_Down_car_left() == true) { button_Released_Exit(); button_State = BUTTON_STATE_CHECK_PRESSED; button_Check_Pressed_Entry(); } break; case BUTTON_STATE_CHECK_PRESSED: button_Check_Pressed_Do(); if (buttonHardware_Up_car_left() == true) { button_Check_Pressed_Exit(); button_State = BUTTON_STATE_RELEASED; button_Released_Entry(); } else if ((buttonHardware_Down_car_left() == true) &&(millis() - BUTTON_TIME >= button_Previous)) { button_Check_Pressed_Exit(); button_State = BUTTON_STATE_PRESSED; button_Pressed_Entry(); } break; case BUTTON_STATE_PRESSED: button_Pressed_Do(); if (buttonHardware_Up_car_left() == true) { button_Pressed_Exit(); button_State = BUTTON_STATE_CHECK_RELEASED; button_Check_Released_Entry(); } break; case BUTTON_STATE_CHECK_RELEASED: button_Check_Released_Do(); if (buttonHardware_Down_car_left() == true) { button_Check_Released_Exit(); button_State = BUTTON_STATE_PRESSED; button_Pressed_Entry(); } else if ((buttonHardware_Up_car_left() == true) &&(millis() - BUTTON_TIME >= button_Previous)) { button_Check_Released_Exit(); button_State = BUTTON_STATE_RELEASED; // On this transition the click has occured. button_Click = true; button_Released_Entry(); } break; } } |