Example code 12
Fork of STMNucleoF401RE_ExampleCode_12_ServoMotor by
Circuito
main.cpp@4:bb8f5479e46c, 2016-04-29 (annotated)
- Committer:
- perlatecnica
- Date:
- Fri Apr 29 14:16:40 2016 +0000
- Revision:
- 4:bb8f5479e46c
- Parent:
- 3:b1a16fe3265f
v1.2 Eliminata unita' di misura dalla lettura del valore anoalogico
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
perlatecnica | 2:e1a0d442f750 | 1 | /**************************************************** |
perlatecnica | 2:e1a0d442f750 | 2 | * FAST PROTOTYPING WITH NUCLEO * |
perlatecnica | 2:e1a0d442f750 | 3 | * Example Code 12: Servo motor control * |
perlatecnica | 2:e1a0d442f750 | 4 | * Author: Mauro D'Angelo * |
perlatecnica | 2:e1a0d442f750 | 5 | * Organization: Perlatecnica no-profit organization * |
perlatecnica | 2:e1a0d442f750 | 6 | *****************************************************/ |
perlatecnica | 2:e1a0d442f750 | 7 | |
bcostm | 0:4860a91fb495 | 8 | #include "mbed.h" |
perlatecnica | 2:e1a0d442f750 | 9 | #include "rtos.h" |
bcostm | 0:4860a91fb495 | 10 | |
perlatecnica | 2:e1a0d442f750 | 11 | #define PWMB PA_7 |
perlatecnica | 2:e1a0d442f750 | 12 | #define DIRB PA_5 |
perlatecnica | 2:e1a0d442f750 | 13 | |
perlatecnica | 2:e1a0d442f750 | 14 | #define PWMA PB_3 |
perlatecnica | 2:e1a0d442f750 | 15 | #define DIRA PA_6 |
perlatecnica | 2:e1a0d442f750 | 16 | |
bcostm | 0:4860a91fb495 | 17 | |
perlatecnica | 2:e1a0d442f750 | 18 | // Instanzia un oggetto di tipo PwmOut e gli da il nome mypwm |
perlatecnica | 2:e1a0d442f750 | 19 | PwmOut mypwm(PWMA); |
perlatecnica | 2:e1a0d442f750 | 20 | // Definisce il pin che indica la direzione |
perlatecnica | 2:e1a0d442f750 | 21 | DigitalOut motordir(DIRB); |
perlatecnica | 2:e1a0d442f750 | 22 | |
perlatecnica | 2:e1a0d442f750 | 23 | // Instanzia un oggetto di tipo DigitalOut sul pin LED1 e gli da il nome myled |
bcostm | 0:4860a91fb495 | 24 | DigitalOut myled(LED1); |
bcostm | 0:4860a91fb495 | 25 | |
perlatecnica | 2:e1a0d442f750 | 26 | // Instanzia un oggetto di tipo AnalogIn e gli da nome analog_value. A questo viene assegnato un pin di ingresso analogico |
perlatecnica | 2:e1a0d442f750 | 27 | AnalogIn analog_value(A0); |
perlatecnica | 2:e1a0d442f750 | 28 | |
perlatecnica | 2:e1a0d442f750 | 29 | float meas; |
perlatecnica | 2:e1a0d442f750 | 30 | float dutycycle; |
perlatecnica | 2:e1a0d442f750 | 31 | |
perlatecnica | 2:e1a0d442f750 | 32 | // Instanzia un oggetto di tipo Serial sui pin Tx e Rx della porta USB e gli da il nome pc (trattandosi della porta USB connessa al PC) |
perlatecnica | 2:e1a0d442f750 | 33 | Serial pc(USBTX, USBRX); |
perlatecnica | 2:e1a0d442f750 | 34 | |
perlatecnica | 2:e1a0d442f750 | 35 | // Read variable resistor |
perlatecnica | 2:e1a0d442f750 | 36 | void runmotor_threadfunc(void const *args) { |
perlatecnica | 2:e1a0d442f750 | 37 | while(true){ |
perlatecnica | 2:e1a0d442f750 | 38 | meas = analog_value.read(); // Reads the analog input value (value from 0.0 to 1.0) |
perlatecnica | 4:bb8f5479e46c | 39 | printf("measure = %.2f \r\n", meas); |
perlatecnica | 2:e1a0d442f750 | 40 | //printf("pwm set to %.2f %%\r\n", mypwm.read() * 100); |
perlatecnica | 2:e1a0d442f750 | 41 | dutycycle = meas*2/1000; |
perlatecnica | 3:b1a16fe3265f | 42 | // Set PWM period |
perlatecnica | 3:b1a16fe3265f | 43 | mypwm.period_ms(20+dutycycle); |
perlatecnica | 2:e1a0d442f750 | 44 | mypwm.pulsewidth(dutycycle); |
perlatecnica | 2:e1a0d442f750 | 45 | } |
perlatecnica | 2:e1a0d442f750 | 46 | } |
perlatecnica | 2:e1a0d442f750 | 47 | |
perlatecnica | 2:e1a0d442f750 | 48 | // Entry point |
perlatecnica | 2:e1a0d442f750 | 49 | int main() { |
perlatecnica | 2:e1a0d442f750 | 50 | // Set direction |
perlatecnica | 2:e1a0d442f750 | 51 | motordir = 1; |
perlatecnica | 3:b1a16fe3265f | 52 | |
perlatecnica | 2:e1a0d442f750 | 53 | |
perlatecnica | 2:e1a0d442f750 | 54 | // Start Thread |
perlatecnica | 2:e1a0d442f750 | 55 | Thread runmotor_thread(runmotor_threadfunc); |
bcostm | 0:4860a91fb495 | 56 | |
perlatecnica | 2:e1a0d442f750 | 57 | while(1) {;} |
perlatecnica | 2:e1a0d442f750 | 58 | } |