![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
control for robotic arm that can play chess using a granular gripper
Dependencies: Encoder mbed HIDScope Servo MODSERIAL
Fork of chessRobot by
buttons.cpp@41:d5c3055a7bc7, 2015-10-08 (annotated)
- Committer:
- annesteenbeek
- Date:
- Thu Oct 08 13:03:22 2015 +0200
- Revision:
- 41:d5c3055a7bc7
- Parent:
- 40:0d88aa25a57d
- Child:
- 42:d36d216457c4
buttons to digital pins
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
annesteenbeek | 14:0c0d1bfd94ea | 1 | #include "buttons.h" |
annesteenbeek | 14:0c0d1bfd94ea | 2 | #include "mbed.h" |
annesteenbeek | 17:872fcf85116d | 3 | #include "config.h" |
annesteenbeek | 25:874675516927 | 4 | #include "actuators.h" |
annesteenbeek | 0:525558a26464 | 5 | // functions for reading all the buttons and switches |
annesteenbeek | 27:5eb5ec295ab2 | 6 | AnalogIn pot2(pot2Pin); |
annesteenbeek | 30:a20f16bf8dda | 7 | AnalogIn pot1(pot1Pin); |
annesteenbeek | 0:525558a26464 | 8 | |
annesteenbeek |
32:2006977785f5 | 9 | // Led states: |
annesteenbeek |
32:2006977785f5 | 10 | // 0 leds: motors disabled |
annesteenbeek | 35:e26a573e3e9f | 11 | // redLed: control X speed |
annesteenbeek | 35:e26a573e3e9f | 12 | // greenLed: control Y speed |
annesteenbeek | 35:e26a573e3e9f | 13 | // blueLed: control Servo pos |
annesteenbeek | 36:6f9670eb9168 | 14 | DigitalOut redLed(LED_RED); |
annesteenbeek | 36:6f9670eb9168 | 15 | DigitalOut greenLed(LED_GREEN); |
annesteenbeek | 36:6f9670eb9168 | 16 | DigitalOut blueLed(LED_BLUE); |
annesteenbeek |
32:2006977785f5 | 17 | |
annesteenbeek | 41:d5c3055a7bc7 | 18 | DigitalIn button1(button1Pin); |
annesteenbeek | 41:d5c3055a7bc7 | 19 | DigitalIn button2(button2Pin); |
annesteenbeek | 40:0d88aa25a57d | 20 | float button1Pressed = false; |
annesteenbeek | 40:0d88aa25a57d | 21 | float button2Pressed = false; |
annesteenbeek |
32:2006977785f5 | 22 | int actuatorState = 0; |
annesteenbeek |
32:2006977785f5 | 23 | |
annesteenbeek | 34:f315b2b38555 | 24 | float pot1Val = 0; |
annesteenbeek | 34:f315b2b38555 | 25 | float pot2Val = 0; |
annesteenbeek | 34:f315b2b38555 | 26 | |
annesteenbeek |
32:2006977785f5 | 27 | |
annesteenbeek | 0:525558a26464 | 28 | void checkSwitches(){ |
annesteenbeek |
32:2006977785f5 | 29 | |
annesteenbeek |
32:2006977785f5 | 30 | // 3 states: X control, Y control en Servo control |
annesteenbeek |
32:2006977785f5 | 31 | // button 1 to enable/disable actuators |
annesteenbeek |
32:2006977785f5 | 32 | // button 2 to switch between states |
annesteenbeek |
32:2006977785f5 | 33 | |
annesteenbeek | 40:0d88aa25a57d | 34 | if(button1.read() == 0){ |
annesteenbeek | 40:0d88aa25a57d | 35 | if (button1Pressed != true){ |
annesteenbeek | 40:0d88aa25a57d | 36 | motorsEnable = !motorsEnable; |
annesteenbeek | 40:0d88aa25a57d | 37 | button1Pressed = true; |
annesteenbeek | 40:0d88aa25a57d | 38 | } |
annesteenbeek | 40:0d88aa25a57d | 39 | }else{ |
annesteenbeek | 40:0d88aa25a57d | 40 | button1Pressed = false; |
annesteenbeek |
32:2006977785f5 | 41 | } |
annesteenbeek | 40:0d88aa25a57d | 42 | if(button2.read() == 0){ |
annesteenbeek | 40:0d88aa25a57d | 43 | if(button2Pressed != true){ |
annesteenbeek | 40:0d88aa25a57d | 44 | actuatorState++; |
annesteenbeek | 40:0d88aa25a57d | 45 | if(actuatorState==3){ |
annesteenbeek | 40:0d88aa25a57d | 46 | actuatorState = 0; |
annesteenbeek | 40:0d88aa25a57d | 47 | } |
annesteenbeek | 40:0d88aa25a57d | 48 | button2Pressed = true; |
annesteenbeek | 34:f315b2b38555 | 49 | } |
annesteenbeek | 40:0d88aa25a57d | 50 | }else{ |
annesteenbeek | 40:0d88aa25a57d | 51 | button2Pressed = false; |
annesteenbeek |
32:2006977785f5 | 52 | } |
annesteenbeek |
32:2006977785f5 | 53 | |
annesteenbeek |
32:2006977785f5 | 54 | pot1Val = pot1.read(); |
annesteenbeek |
32:2006977785f5 | 55 | pot2Val = pot2.read(); |
annesteenbeek |
32:2006977785f5 | 56 | |
annesteenbeek |
32:2006977785f5 | 57 | if(motorsEnable){ |
annesteenbeek |
32:2006977785f5 | 58 | switch (actuatorState){ |
annesteenbeek |
32:2006977785f5 | 59 | case 0: // potmeters control X speed |
annesteenbeek | 36:6f9670eb9168 | 60 | redLed.write(0); greenLed.write(1); blueLed.write(1); |
annesteenbeek | 34:f315b2b38555 | 61 | motorSetSpeed1 = 300*(pot2.read()-pot1.read()); |
annesteenbeek |
32:2006977785f5 | 62 | break; |
annesteenbeek |
32:2006977785f5 | 63 | case 1: // potmeters control Y speed |
annesteenbeek | 36:6f9670eb9168 | 64 | redLed.write(1); greenLed.write(0); blueLed.write(1); |
annesteenbeek |
32:2006977785f5 | 65 | motorSetSpeed2 = 300*(pot2.read()-pot1.read()); |
annesteenbeek |
32:2006977785f5 | 66 | break; |
annesteenbeek |
32:2006977785f5 | 67 | case 2: // potmeters control Servo pos |
annesteenbeek | 36:6f9670eb9168 | 68 | redLed.write(1); greenLed.write(1); blueLed.write(0); |
annesteenbeek |
32:2006977785f5 | 69 | servoPos = pot2.read(); |
annesteenbeek |
32:2006977785f5 | 70 | break; |
annesteenbeek |
32:2006977785f5 | 71 | } |
annesteenbeek |
32:2006977785f5 | 72 | }else{ |
annesteenbeek | 36:6f9670eb9168 | 73 | redLed.write(1); greenLed.write(1); blueLed.write(1); |
annesteenbeek |
32:2006977785f5 | 74 | } |
annesteenbeek | 34:f315b2b38555 | 75 | } |