motor portion of pinball project for ECE 4180 Final Project
Dependencies: mbed Servo Motor PinDetect
main.cpp@1:f1c96924258d, 2019-04-30 (annotated)
- Committer:
- Varoon5
- Date:
- Tue Apr 30 04:42:11 2019 +0000
- Revision:
- 1:f1c96924258d
- Parent:
- 0:7bbc230e00d6
4180 final project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:7bbc230e00d6 | 1 | // Sweep the motor speed from full-speed reverse (-1.0) to full speed forwards (1.0) |
simon | 0:7bbc230e00d6 | 2 | |
simon | 0:7bbc230e00d6 | 3 | #include "mbed.h" |
simon | 0:7bbc230e00d6 | 4 | #include "Motor.h" |
Varoon5 | 1:f1c96924258d | 5 | #include "PinDetect.h" |
Varoon5 | 1:f1c96924258d | 6 | #include "Servo.h" |
simon | 0:7bbc230e00d6 | 7 | |
Varoon5 | 1:f1c96924258d | 8 | Servo myservo(p21); |
Varoon5 | 1:f1c96924258d | 9 | Motor m1(p24, p17, p18); // pwm, fwd, rev |
Varoon5 | 1:f1c96924258d | 10 | Motor m2(p25, p19, p20); // pwm, fwd, rev |
Varoon5 | 1:f1c96924258d | 11 | PinDetect pb1(p7); |
Varoon5 | 1:f1c96924258d | 12 | PinDetect pb2(p8); |
Varoon5 | 1:f1c96924258d | 13 | DigitalOut myled(LED1); |
Varoon5 | 1:f1c96924258d | 14 | DigitalOut myled2(LED2); |
Varoon5 | 1:f1c96924258d | 15 | DigitalOut myled3(LED3); |
Varoon5 | 1:f1c96924258d | 16 | DigitalOut myled4(LED4); |
Varoon5 | 1:f1c96924258d | 17 | |
Varoon5 | 1:f1c96924258d | 18 | void pb1_hit_callback (void) { |
Varoon5 | 1:f1c96924258d | 19 | myled3 = !myled3; |
Varoon5 | 1:f1c96924258d | 20 | m1.speed(0.5); |
Varoon5 | 1:f1c96924258d | 21 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 22 | m1.speed(0.0); |
Varoon5 | 1:f1c96924258d | 23 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 24 | m1.speed(-0.5); |
Varoon5 | 1:f1c96924258d | 25 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 26 | m1.speed(0.0); |
Varoon5 | 1:f1c96924258d | 27 | } |
Varoon5 | 1:f1c96924258d | 28 | |
Varoon5 | 1:f1c96924258d | 29 | void pb2_hit_callback (void) { |
Varoon5 | 1:f1c96924258d | 30 | myled4 = !myled4; |
Varoon5 | 1:f1c96924258d | 31 | m2.speed(0.5); |
Varoon5 | 1:f1c96924258d | 32 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 33 | m2.speed(0.0); |
Varoon5 | 1:f1c96924258d | 34 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 35 | m2.speed(-0.5); |
Varoon5 | 1:f1c96924258d | 36 | wait(0.05); |
Varoon5 | 1:f1c96924258d | 37 | m2.speed(0.0); |
Varoon5 | 1:f1c96924258d | 38 | } |
simon | 0:7bbc230e00d6 | 39 | |
simon | 0:7bbc230e00d6 | 40 | int main() { |
Varoon5 | 1:f1c96924258d | 41 | // Use internal pullups for pushbutton |
Varoon5 | 1:f1c96924258d | 42 | pb1.mode(PullUp); |
Varoon5 | 1:f1c96924258d | 43 | pb2.mode(PullUp); |
Varoon5 | 1:f1c96924258d | 44 | // Delay for initial pullup to take effect |
Varoon5 | 1:f1c96924258d | 45 | wait(.01); |
Varoon5 | 1:f1c96924258d | 46 | // Setup Interrupt callback functions for a pb hit |
Varoon5 | 1:f1c96924258d | 47 | pb1.attach_deasserted(&pb1_hit_callback); |
Varoon5 | 1:f1c96924258d | 48 | pb2.attach_deasserted(&pb2_hit_callback); |
Varoon5 | 1:f1c96924258d | 49 | // Start sampling pb inputs using interrupts |
Varoon5 | 1:f1c96924258d | 50 | pb1.setSampleFrequency(); |
Varoon5 | 1:f1c96924258d | 51 | pb2.setSampleFrequency(); |
Varoon5 | 1:f1c96924258d | 52 | |
Varoon5 | 1:f1c96924258d | 53 | while (1) { |
Varoon5 | 1:f1c96924258d | 54 | myservo = 0.0; |
Varoon5 | 1:f1c96924258d | 55 | wait(0.5); |
Varoon5 | 1:f1c96924258d | 56 | myservo = -1.0; |
Varoon5 | 1:f1c96924258d | 57 | wait(0.5); |
simon | 0:7bbc230e00d6 | 58 | } |
simon | 0:7bbc230e00d6 | 59 | } |