Workshop 2

Dependencies:   PM2_Libary

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?

UserRevisionLine numberNew 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 }