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 19:04:09 2015 +0000
Revision:
34:f315b2b38555
Parent:
32:2006977785f5
Child:
35:e26a573e3e9f
small typo and bug fixes

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 32:2006977785f5 12 // led1: control X speed
annesteenbeek 32:2006977785f5 13 // led2: control Y speed
annesteenbeek 32:2006977785f5 14 // led1&led2: control Servo pos
annesteenbeek 32:2006977785f5 15 AnalogOut led1(led1Pin);
annesteenbeek 32:2006977785f5 16 AnalogOut led2(led2Pin);
annesteenbeek 32:2006977785f5 17
annesteenbeek 32:2006977785f5 18 AnalogIn button1(button1Pin);
annesteenbeek 32:2006977785f5 19 AnalogIn button2(button2Pin);
annesteenbeek 32:2006977785f5 20 int prevState1 = 0;
annesteenbeek 32:2006977785f5 21 int prevState2 = 0;
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 32:2006977785f5 34 if(button1 !=0 && prevState1 == 0){
annesteenbeek 34:f315b2b38555 35 motorsEnable = !motorsEnable;
annesteenbeek 32:2006977785f5 36 }
annesteenbeek 32:2006977785f5 37 if(button2 !=0 && prevState2 ==0){
annesteenbeek 34:f315b2b38555 38 actuatorState++;
annesteenbeek 34:f315b2b38555 39 if(actuatorState==3){
annesteenbeek 34:f315b2b38555 40 actuatorState = 0;
annesteenbeek 34:f315b2b38555 41 }
annesteenbeek 32:2006977785f5 42 }
annesteenbeek 32:2006977785f5 43 prevState1 = button1;
annesteenbeek 32:2006977785f5 44 prevState2 = button2;
annesteenbeek 32:2006977785f5 45
annesteenbeek 32:2006977785f5 46 pot1Val = pot1.read();
annesteenbeek 32:2006977785f5 47 pot2Val = pot2.read();
annesteenbeek 32:2006977785f5 48
annesteenbeek 32:2006977785f5 49 if(motorsEnable){
annesteenbeek 32:2006977785f5 50 switch (actuatorState){
annesteenbeek 32:2006977785f5 51 case 0: // potmeters control X speed
annesteenbeek 32:2006977785f5 52 led1 = 1; led2=0;
annesteenbeek 34:f315b2b38555 53 motorSetSpeed1 = 300*(pot2.read()-pot1.read());
annesteenbeek 32:2006977785f5 54 break;
annesteenbeek 32:2006977785f5 55 case 1: // potmeters control Y speed
annesteenbeek 32:2006977785f5 56 led1=0; led2=1;
annesteenbeek 32:2006977785f5 57 motorSetSpeed2 = 300*(pot2.read()-pot1.read());
annesteenbeek 32:2006977785f5 58 break;
annesteenbeek 32:2006977785f5 59 case 2: // potmeters control Servo pos
annesteenbeek 32:2006977785f5 60 led1=1; led2=1;
annesteenbeek 32:2006977785f5 61 servoPos = pot2.read();
annesteenbeek 32:2006977785f5 62 break;
annesteenbeek 32:2006977785f5 63 }
annesteenbeek 32:2006977785f5 64 }else{
annesteenbeek 32:2006977785f5 65 led1=0; led2=0;
annesteenbeek 32:2006977785f5 66 }
annesteenbeek 32:2006977785f5 67 motorSetSpeed2 = motorSetSpeed2 - 300*pot1.read();
annesteenbeek 34:f315b2b38555 68 }