Seguilinea KP Taratura Ultrasuoni di Paolo Giovanni
Dependencies: HCSR04 X_NUCLEO_IHM12A1 mbed
Fork of Ilfunzionante by
main.cpp
- Committer:
- FrancescoCaiazzo
- Date:
- 2018-02-17
- Revision:
- 1:0226a8d3c0d3
- Parent:
- 0:9bd4730782f9
File content as of revision 1:0226a8d3c0d3:
#include "mbed.h" #include "MotorShieldIHM12A1.h" #include "hcsr04.h" #define SPEED 40 #define Kp 50 #define offset 0 #define sample 5 float DIR; float mediaB = 0; float mediaN = 0 ; float mediaT = 0; HCSR04 sensor(D10, D11); Serial pc(USBTX, USBRX); MotorShieldIHM12A1 ms; AnalogIn lineaD(A5); DigitalIn pulsante(PC_13); int main() { pc.baud(9600); pc.printf("Here I am!\r\n"); printf("start Seguilinea.os\r\n"); printf ("Robot su Bianco\r\n "); while (pulsante) { wait (0.1); } wait(0.1); for (int i=0; i<5; i++) { mediaB += lineaD.read(); wait(0.1); } mediaB /= sample; printf("Bianco: %f\r\n",mediaB); printf ("Robot su Nero\r\n "); while (pulsante) { wait (0.1); } wait(0.1); for (int i=0; i<sample; i++) { mediaN += lineaD.read(); wait(0.1); } mediaN /= sample; printf("Nero: %f\r\n",mediaN); mediaT =(mediaB+mediaN) / 2; printf("Offset: %f\r\n",mediaT); while (pulsante) { wait (0.1); } wait(0.1); while(true) { // Avvia un impulso della durata di 10us sul pin di trigger sensor.start(); // Aspetta prima della prossima lettura wait_ms(300); // Stampa sulla seriale la misura della distanza in cm pc.printf("%dcm\r\n", sensor.get_dist_cm()); if (sensor.get_dist_cm() > 20) { ms.turn((lineaD.read()-mediaT)*Kp,SPEED); } else { ms.turn(0,0); } } }