Move a limb and read its position with a flex sensor.

Dependencies:   C12832_lcd LCD_fonts Servo USBDevice mbed

I wanted to create the simplest limb as part of a course. It involves a limb that moves driven by a stepper motor. The angle of the limb is read by using a flex sensor.

The first time it worked:

https://www.dropbox.com/s/9l5ynsjg8zdynk8/Video%20Dec%2003%2C%209%2048%2034%20AM.mov

Schematic:

https://www.dropbox.com/s/szzpks89ne8evxe/simple%20limb%20schematic.png

Committer:
ned
Date:
Fri Dec 13 02:10:53 2013 +0000
Revision:
0:1fc648cdc764
First working version that reads the sensor and moves the "limb".

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ned 0:1fc648cdc764 1 #include "mbed.h"
ned 0:1fc648cdc764 2 #include "USBSerial.h"
ned 0:1fc648cdc764 3 #include "Servo.h"
ned 0:1fc648cdc764 4 #include "C12832_lcd.h"
ned 0:1fc648cdc764 5
ned 0:1fc648cdc764 6 void FlexSensorReport( void );
ned 0:1fc648cdc764 7
ned 0:1fc648cdc764 8 C12832_LCD lcd;
ned 0:1fc648cdc764 9 //USBSerial serial;
ned 0:1fc648cdc764 10 //Serial pc( USBTX, USBRX );
ned 0:1fc648cdc764 11 AnalogIn flex( p19 );
ned 0:1fc648cdc764 12 Servo myservo( p22 );
ned 0:1fc648cdc764 13
ned 0:1fc648cdc764 14 int main()
ned 0:1fc648cdc764 15 {
ned 0:1fc648cdc764 16 while(1)
ned 0:1fc648cdc764 17 {
ned 0:1fc648cdc764 18 for(float i=0; i<100; i++)
ned 0:1fc648cdc764 19 {
ned 0:1fc648cdc764 20 myservo = i/100.0;
ned 0:1fc648cdc764 21 FlexSensorReport();
ned 0:1fc648cdc764 22 wait(0.1);
ned 0:1fc648cdc764 23 }
ned 0:1fc648cdc764 24 for(float i=100.0; i>0; i--)
ned 0:1fc648cdc764 25 {
ned 0:1fc648cdc764 26 myservo = i/100.0;
ned 0:1fc648cdc764 27 FlexSensorReport();
ned 0:1fc648cdc764 28 wait(0.1);
ned 0:1fc648cdc764 29 }
ned 0:1fc648cdc764 30
ned 0:1fc648cdc764 31 }
ned 0:1fc648cdc764 32 }
ned 0:1fc648cdc764 33
ned 0:1fc648cdc764 34
ned 0:1fc648cdc764 35 void FlexSensorReport( void )
ned 0:1fc648cdc764 36 {
ned 0:1fc648cdc764 37 float f = flex.read();
ned 0:1fc648cdc764 38 lcd.cls();
ned 0:1fc648cdc764 39 lcd.locate( 0, 3 );
ned 0:1fc648cdc764 40 lcd.printf( "%02f %02f %02f", f, f*10.0, f*100.0 );
ned 0:1fc648cdc764 41 //serial.printf( "f = %02f %02f %02f \r\n", f, f*10.0, f*100.0 );
ned 0:1fc648cdc764 42 }