this is part of the pill dispenser prototype model. the servo motor here controls the gate of the cartridge to drop one pill at a time to the channel.
Diff: main.cpp
- Revision:
- 0:e31980f4132f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Mar 23 22:25:11 2018 +0000 @@ -0,0 +1,80 @@ +// Servo control class, based on a PwmOut + + + // Continuously sweep the servo through it's full range + #include "mbed.h" + #include "Servo.h" + + + + Serial pc(USBTX,USBRX); // Create a serial connection to pc through the mbed USB cable + Servo LRmyservo(PTC5); + InterruptIn motion(D2); + DigitalIn sw2(SW2); + + int motion_detected = 0; + + void irq_handler(void) + { + //motion_detected = 1; + } + + void rotateServo(bool rotate){ + int i = 0; + if (rotate == true){ //rotate right + for(i=10; i<111; i++){ + LRmyservo = i/100.00; + //pc.printf("read = %f\r\n", LRmyservo); + wait_ms(4); + if(motion_detected){ + break; + } + } + } else{ + for(i=110; i>=10; i--){ //rotate left + LRmyservo = i/100.00; + //pc.printf("read = %d, signal = %d\r\n", LRmyservo.read(),something); + wait_ms(4); + if(motion_detected){ + break; + } + } + } + } + + //Servo UDmyservo(PTC7); + + int main() + { + //float range = .0009; + //LRmyservo.calibrate(range,45); + //dt.start(); + + //Initialize variables + bool flag = false; + bool rotate = true; + // motion.fall(&irq_handler); + + //Initilize motor positions + + while(flag == false){ + //check to make sure the motion sensor was not triggered + // if(motion_detected){ + // motion_detected = 0; + // pc.printf("I have fallen and I can't get up!\r\n"); + // flag = true; + // } + if (sw2 == 0){ + rotateServo(rotate); + if (rotate == true){ //adjust rotation direction for next iteration + rotate = false; + } else{ + rotate = true; + } + } + } + pc.printf("I am finished with the program"); + //wait_ms(5); + } + + \ No newline at end of file