Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:a6e0d8aa714f, 2022-10-09 (annotated)
- Committer:
- fernandosakabe
- Date:
- Sun Oct 09 20:08:31 2022 +0000
- Revision:
- 0:a6e0d8aa714f
V1_APS1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| fernandosakabe | 0:a6e0d8aa714f | 1 | |
| fernandosakabe | 0:a6e0d8aa714f | 2 | #include "mbed.h" |
| fernandosakabe | 0:a6e0d8aa714f | 3 | |
| fernandosakabe | 0:a6e0d8aa714f | 4 | AnalogIn potenciometro(A5); //declara a entrada do potenciômetro |
| fernandosakabe | 0:a6e0d8aa714f | 5 | PwmOut dc(D10); //declara a saída do PWM |
| fernandosakabe | 0:a6e0d8aa714f | 6 | InterruptIn encoder(D7); //declara entrada do encoder |
| fernandosakabe | 0:a6e0d8aa714f | 7 | |
| fernandosakabe | 0:a6e0d8aa714f | 8 | Ticker tempo_alto; //declara um ticker |
| fernandosakabe | 0:a6e0d8aa714f | 9 | int contador=0; //icício do contador zerado |
| fernandosakabe | 0:a6e0d8aa714f | 10 | int periodo=1; |
| fernandosakabe | 0:a6e0d8aa714f | 11 | int periodo_min=60/periodo; //faz a conta do período |
| fernandosakabe | 0:a6e0d8aa714f | 12 | float rpm=0; //icício do rpm zerado |
| fernandosakabe | 0:a6e0d8aa714f | 13 | float duty_cycle=0; //icício do duty cycle zerado |
| fernandosakabe | 0:a6e0d8aa714f | 14 | |
| fernandosakabe | 0:a6e0d8aa714f | 15 | void alto(){ //declara a função alto |
| fernandosakabe | 0:a6e0d8aa714f | 16 | contador++; //soma 1 no contador |
| fernandosakabe | 0:a6e0d8aa714f | 17 | } |
| fernandosakabe | 0:a6e0d8aa714f | 18 | |
| fernandosakabe | 0:a6e0d8aa714f | 19 | void calcula_rpm(){ //declara a função começa |
| fernandosakabe | 0:a6e0d8aa714f | 20 | rpm=contador*periodo_min/(30); //faz a conta do rpm |
| fernandosakabe | 0:a6e0d8aa714f | 21 | contador=0; //zera o contador depois de calculo de rpm |
| fernandosakabe | 0:a6e0d8aa714f | 22 | } |
| fernandosakabe | 0:a6e0d8aa714f | 23 | |
| fernandosakabe | 0:a6e0d8aa714f | 24 | int main(){ |
| fernandosakabe | 0:a6e0d8aa714f | 25 | dc.period(0.010); // define o periodo do PWM |
| fernandosakabe | 0:a6e0d8aa714f | 26 | encoder.rise(&alto); //quando o encoder retorna 1 a função &alto é chamada |
| fernandosakabe | 0:a6e0d8aa714f | 27 | tempo_alto.attach(&calcula_rpm, periodo); //a funcao "calcula_rpm" é acionada quando passar o tempo de "periodo" |
| fernandosakabe | 0:a6e0d8aa714f | 28 | |
| fernandosakabe | 0:a6e0d8aa714f | 29 | while(1){ |
| fernandosakabe | 0:a6e0d8aa714f | 30 | duty_cycle=potenciometro.read(); //o duty cycle é definido pelo potenciometro |
| fernandosakabe | 0:a6e0d8aa714f | 31 | dc.write(duty_cycle); //o valor de duty cycle é colocado no PWM |
| fernandosakabe | 0:a6e0d8aa714f | 32 | printf("duty cycle: %f rpm: %f \r\n " ,duty_cycle*100, rpm); //o valor de rpm e do duty cycle é printado |
| fernandosakabe | 0:a6e0d8aa714f | 33 | |
| fernandosakabe | 0:a6e0d8aa714f | 34 | } |
| fernandosakabe | 0:a6e0d8aa714f | 35 | } |
| fernandosakabe | 0:a6e0d8aa714f | 36 |