Quirin Fitzi
/
PM2_Example_PES_board_2
Workshop 2
main.cpp@33:92fa859527a3, 2022-05-06 (annotated)
- Committer:
- iq_unavailable
- Date:
- Fri May 06 17:12:15 2022 +0200
- Revision:
- 33:92fa859527a3
- Parent:
- 32:af40c5d4b5dc
V1.2 Positioncontrol remains
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pmic | 1:93d997d6b232 | 1 | #include "mbed.h" |
iq_unavailable | 33:92fa859527a3 | 2 | //Program to 'sweep' test a 'standard RC type servo |
iq_unavailable | 33:92fa859527a3 | 3 | //Define some parameters using compiler directive '#define' |
iq_unavailable | 33:92fa859527a3 | 4 | //Check Servo DATA if 0.75ms to 2.25ms then use min=750 and max=2250 |
iq_unavailable | 33:92fa859527a3 | 5 | //NB be values in microseconds (Following are generic values) |
iq_unavailable | 33:92fa859527a3 | 6 | #define MID 1500 |
iq_unavailable | 33:92fa859527a3 | 7 | #define MIN 1000 |
iq_unavailable | 33:92fa859527a3 | 8 | #define MAX 2350 |
iq_unavailable | 33:92fa859527a3 | 9 | #define STEP 50 |
iq_unavailable | 33:92fa859527a3 | 10 | //Time delay between steps in milliseconds |
iq_unavailable | 33:92fa859527a3 | 11 | #define TIME 100000 |
iq_unavailable | 33:92fa859527a3 | 12 | |
iq_unavailable | 33:92fa859527a3 | 13 | PwmOut myServo(PB_2); |
iq_unavailable | 33:92fa859527a3 | 14 | |
iq_unavailable | 33:92fa859527a3 | 15 | DigitalIn user_button(PC_13); |
iq_unavailable | 33:92fa859527a3 | 16 | int counter_stoppen; |
iq_unavailable | 33:92fa859527a3 | 17 | int counter_user_button; |
iq_unavailable | 33:92fa859527a3 | 18 | float pos_servo; |
iq_unavailable | 33:92fa859527a3 | 19 | int main() { |
iq_unavailable | 33:92fa859527a3 | 20 | |
iq_unavailable | 33:92fa859527a3 | 21 | while(1){ |
iq_unavailable | 33:92fa859527a3 | 22 | if ((user_button.read() == 0) & (counter_stoppen == 0)) { |
iq_unavailable | 33:92fa859527a3 | 23 | counter_user_button++; |
iq_unavailable | 33:92fa859527a3 | 24 | counter_stoppen = 1; |
iq_unavailable | 33:92fa859527a3 | 25 | } |
iq_unavailable | 33:92fa859527a3 | 26 | if (user_button.read()){ |
iq_unavailable | 33:92fa859527a3 | 27 | counter_stoppen = 0; |
iq_unavailable | 33:92fa859527a3 | 28 | } |
iq_unavailable | 33:92fa859527a3 | 29 | /*if (counter_user_button >= 5){ |
iq_unavailable | 33:92fa859527a3 | 30 | counter_user_button = 1; |
iq_unavailable | 33:92fa859527a3 | 31 | }*/ |
iq_unavailable | 33:92fa859527a3 | 32 | if (counter_user_button >= 5){ |
iq_unavailable | 33:92fa859527a3 | 33 | counter_user_button = 1; |
iq_unavailable | 33:92fa859527a3 | 34 | } |
pmic | 6:e1fa1a2d7483 | 35 | |
iq_unavailable | 33:92fa859527a3 | 36 | myServo.period_ms(20); |
iq_unavailable | 33:92fa859527a3 | 37 | myServo.pulsewidth_us(MID); //NB in microseconds |
pmic | 6:e1fa1a2d7483 | 38 | |
iq_unavailable | 33:92fa859527a3 | 39 | switch (counter_user_button){ |
iq_unavailable | 33:92fa859527a3 | 40 | case 1: |
iq_unavailable | 33:92fa859527a3 | 41 | myServo.pulsewidth_us(2350); |
iq_unavailable | 33:92fa859527a3 | 42 | pos_servo = 0.0; |
iq_unavailable | 33:92fa859527a3 | 43 | break; |
iq_unavailable | 33:92fa859527a3 | 44 | case 2: |
iq_unavailable | 33:92fa859527a3 | 45 | myServo.pulsewidth_us(500); |
iq_unavailable | 33:92fa859527a3 | 46 | pos_servo = 500.0; |
iq_unavailable | 33:92fa859527a3 | 47 | break; |
iq_unavailable | 33:92fa859527a3 | 48 | case 3: |
iq_unavailable | 33:92fa859527a3 | 49 | myServo.pulsewidth_us(1000); |
iq_unavailable | 33:92fa859527a3 | 50 | pos_servo = 1000.0; |
iq_unavailable | 33:92fa859527a3 | 51 | break; |
iq_unavailable | 33:92fa859527a3 | 52 | case 4: |
iq_unavailable | 33:92fa859527a3 | 53 | myServo.pulsewidth_us(1500); |
iq_unavailable | 33:92fa859527a3 | 54 | pos_servo = 1500.0; |
iq_unavailable | 33:92fa859527a3 | 55 | break; |
iq_unavailable | 33:92fa859527a3 | 56 | } |
pmic | 6:e1fa1a2d7483 | 57 | |
iq_unavailable | 33:92fa859527a3 | 58 | printf("counter %d, pos %f\n",counter_user_button, pos_servo); |
iq_unavailable | 33:92fa859527a3 | 59 | /*myServo.period_ms(20); |
iq_unavailable | 33:92fa859527a3 | 60 | myServo.pulsewidth_us(MID); //NB in microseconds |
iq_unavailable | 33:92fa859527a3 | 61 | |
iq_unavailable | 33:92fa859527a3 | 62 | while(true) { |
iq_unavailable | 33:92fa859527a3 | 63 | for (int i=MIN;i<=MAX;i+=STEP){ |
iq_unavailable | 33:92fa859527a3 | 64 | myServo.pulsewidth_us(i); |
iq_unavailable | 33:92fa859527a3 | 65 | wait_us(TIME); |
iq_unavailable | 33:92fa859527a3 | 66 | } |
iq_unavailable | 33:92fa859527a3 | 67 | for (int i=MAX;i>=MIN;i-=STEP){ |
iq_unavailable | 33:92fa859527a3 | 68 | myServo.pulsewidth_us(i); |
iq_unavailable | 33:92fa859527a3 | 69 | wait_us(TIME); |
iq_unavailable | 33:92fa859527a3 | 70 | } |
iq_unavailable | 33:92fa859527a3 | 71 | |
iq_unavailable | 33:92fa859527a3 | 72 | }*/ |
pmic | 8:9bb806a7f585 | 73 | } |
pmic | 6:e1fa1a2d7483 | 74 | } |