
Servo position controlled by potvalue
Dependencies: Servo
Diff: main.cpp
- Revision:
- 0:fe46ce7f03d3
- Child:
- 1:34cea73289c4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 02 12:56:23 2017 +0000 @@ -0,0 +1,60 @@ +/* This code controls the main functions of the servomotor. The servomotor needs an external power of 6 or 12 V and is connected to the PWMOut pin +External power can be either 4*1.5V AA batteries (6V), 8*1.5V AA batteries (12V) or an appropiate DC voltage source. It is important that ground of both the servo motor and mBed platform are the same. +Servo motor speed can be controlled by an external signal such as a potnetiometer or in context of this project an EMG signal. +*/ + +#include <mbed.h> +//#include <Servo.h> either one can be used, but not both at the same time +#include <VarSpeedServo.h> + +Servo myservo(p21); +Serial pc(USBTX, USBRX); + +int main() { + printf("Servo Calibration Controls:\n"); + printf("1,2,3 - Position Servo (full left, middle, full right)\n"); + printf("4,5 - Decrease or Increase range\n"); + + float range = 0.0005; + float position = 0.5; + + while(1) { + switch(pc.getc()) { // Switch to change position or increase range + case '1': position = 0.0; break; + case '2': position = 0.5; break; + case '3': position = 1.0; break; + case '4': range += 0.0001; break; + case '5': range -= 0.0001; break; + } + printf("position = %.1f, range = +/-%0.4f\n", position, range); + myservo.calibrate(range, 45.0); + myservo = position; + } +} + +/* Example code to control the servomotor by a potentiometer, similarly one could control the speed of the servomotor. +The speed can be controlled by using the library VarSpeedServo.h +By mapping the intensity of EMG signal to a range of values (e.g. 0:1:100) you can easily control the speed and position of the motor +*/ + +/* + Servo servo_test; //initialize a servo object for the connected servo + + int angle = 0; + int potentio = A0; // initialize the A0analog pin for potentiometer + + + void setup() + { + servo_test.attach(9); // attach the signal pin of servo to pin9 of arduino + } + + void loop() + { + angle = analogRead(potentio); // reading the potentiometer value between 0 and 1023 + angle = map(angle, 0, 1023, 0, 179); // scaling the potentiometer value to angle value for servo between 0 and 180) + servo_test.write(angle); //command to rotate the servo to the specified angle + delay(5); + } + */ + \ No newline at end of file