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:
Wed Oct 07 22:46:52 2015 +0200
Revision:
35:e26a573e3e9f
Parent:
34:f315b2b38555
Child:
36:6f9670eb9168
using RGB led for state indication

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 2:95ba9f6f0128 6
annesteenbeek 27:5eb5ec295ab2 7 AnalogIn pot2(pot2Pin);
annesteenbeek 30:a20f16bf8dda 8 AnalogIn pot1(pot1Pin);
annesteenbeek 0:525558a26464 9
annesteenbeek 32:2006977785f5 10 // Led states:
annesteenbeek 32:2006977785f5 11 // 0 leds: motors disabled
annesteenbeek 35:e26a573e3e9f 12 // redLed: control X speed
annesteenbeek 35:e26a573e3e9f 13 // greenLed: control Y speed
annesteenbeek 35:e26a573e3e9f 14 // blueLed: control Servo pos
annesteenbeek 35:e26a573e3e9f 15 DigitalOut redLed(RED_LED);
annesteenbeek 35:e26a573e3e9f 16 DigitalOut greenLed(GREEN_LED);
annesteenbeek 35:e26a573e3e9f 17 DigitalOut blueLed(BLUE_LED);
annesteenbeek 32:2006977785f5 18
annesteenbeek 32:2006977785f5 19 AnalogIn button1(button1Pin);
annesteenbeek 32:2006977785f5 20 AnalogIn button2(button2Pin);
annesteenbeek 32:2006977785f5 21 int prevState1 = 0;
annesteenbeek 32:2006977785f5 22 int prevState2 = 0;
annesteenbeek 32:2006977785f5 23 int actuatorState = 0;
annesteenbeek 32:2006977785f5 24
annesteenbeek 34:f315b2b38555 25 float pot1Val = 0;
annesteenbeek 34:f315b2b38555 26 float pot2Val = 0;
annesteenbeek 34:f315b2b38555 27
annesteenbeek 32:2006977785f5 28
annesteenbeek 0:525558a26464 29 void checkSwitches(){
annesteenbeek 32:2006977785f5 30
annesteenbeek 32:2006977785f5 31 // 3 states: X control, Y control en Servo control
annesteenbeek 32:2006977785f5 32 // button 1 to enable/disable actuators
annesteenbeek 32:2006977785f5 33 // button 2 to switch between states
annesteenbeek 32:2006977785f5 34
annesteenbeek 32:2006977785f5 35 if(button1 !=0 && prevState1 == 0){
annesteenbeek 34:f315b2b38555 36 motorsEnable = !motorsEnable;
annesteenbeek 32:2006977785f5 37 }
annesteenbeek 32:2006977785f5 38 if(button2 !=0 && prevState2 ==0){
annesteenbeek 34:f315b2b38555 39 actuatorState++;
annesteenbeek 34:f315b2b38555 40 if(actuatorState==3){
annesteenbeek 34:f315b2b38555 41 actuatorState = 0;
annesteenbeek 34:f315b2b38555 42 }
annesteenbeek 32:2006977785f5 43 }
annesteenbeek 32:2006977785f5 44 prevState1 = button1;
annesteenbeek 32:2006977785f5 45 prevState2 = button2;
annesteenbeek 32:2006977785f5 46
annesteenbeek 32:2006977785f5 47 pot1Val = pot1.read();
annesteenbeek 32:2006977785f5 48 pot2Val = pot2.read();
annesteenbeek 32:2006977785f5 49
annesteenbeek 32:2006977785f5 50 if(motorsEnable){
annesteenbeek 32:2006977785f5 51 switch (actuatorState){
annesteenbeek 32:2006977785f5 52 case 0: // potmeters control X speed
annesteenbeek 35:e26a573e3e9f 53 redLed.write(0); greenLed.write(1); blueLed(1);
annesteenbeek 34:f315b2b38555 54 motorSetSpeed1 = 300*(pot2.read()-pot1.read());
annesteenbeek 32:2006977785f5 55 break;
annesteenbeek 32:2006977785f5 56 case 1: // potmeters control Y speed
annesteenbeek 35:e26a573e3e9f 57 redLed.write(1); greenLed.write(0); blueLed(1);
annesteenbeek 32:2006977785f5 58 motorSetSpeed2 = 300*(pot2.read()-pot1.read());
annesteenbeek 32:2006977785f5 59 break;
annesteenbeek 32:2006977785f5 60 case 2: // potmeters control Servo pos
annesteenbeek 35:e26a573e3e9f 61 redLed.write(1); greenLed.write(1); blueLed(0);
annesteenbeek 32:2006977785f5 62 servoPos = pot2.read();
annesteenbeek 32:2006977785f5 63 break;
annesteenbeek 32:2006977785f5 64 }
annesteenbeek 32:2006977785f5 65 }else{
annesteenbeek 35:e26a573e3e9f 66 redLed.write(1); greenLed.write(1); blueLed(1);
annesteenbeek 32:2006977785f5 67 }
annesteenbeek 32:2006977785f5 68 motorSetSpeed2 = motorSetSpeed2 - 300*pot1.read();
annesteenbeek 34:f315b2b38555 69 }