control for robotic arm that can play chess using a granular gripper

Dependencies:   Encoder mbed HIDScope Servo MODSERIAL

Fork of chessRobot by a steenbeek

Committer:
annesteenbeek
Date:
Thu Oct 08 14:28:42 2015 +0200
Revision:
44:a947bc232d84
Parent:
42:d36d216457c4
Child:
54:c14c3bc48b8a
PID min 0

Who changed what in which revision?

UserRevisionLine numberNew 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 42:d36d216457c4 20 bool button1Pressed = false;
annesteenbeek 42:d36d216457c4 21 bool 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 44:a947bc232d84 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 }