Radar detector de obstáculos con sensor ultrasonido y motor paso a paso
Dependencies: mbed mbed-STM32F103C8T6 USBDevice_STM32F103 TextLCD HCSR04
main.cpp
- Committer:
- michjpr
- Date:
- 2021-11-18
- Revision:
- 0:29c68dc30a1e
File content as of revision 0:29c68dc30a1e:
#include "stm32f103c8t6.h" #include "USBSerial.h" #include "mbed.h" //#include "HCSR04.h" #include "hcsr04.h" #include "TextLCD.h" Serial pc(USBTX,USBRX); HCSR04 ultra(PA_0,PA_1); //BusOut motor(PA_4,PA_5,PA_6,PA_7); DigitalOut a(PA_4); DigitalOut a_(PA_5); DigitalOut b(PA_6); DigitalOut b_(PA_7); int Velocidad = 10000; I2C i2c_lcd(PB_9,PB_8); // SDA, SCL TextLCD_I2C lcd(&i2c_lcd,0x4E, TextLCD::LCD16x2, TextLCD::HD44780); unsigned int dist; float range=0; int centimetros=0; int distancias[2][24]; int menord=10000; int menora=180; int tiempo=10000; BusOut Anodos(PA_8, PA_9, PA_10, PA_11, PA_12, PA_15, PB_3); BusOut Catodos(PB_4,PB_5); Ticker ticker1; int numeroSeg[10]={0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111}; int numeroCat[2]={0b01, 0b10}; int menorvec[2]; int contadorsegmentos=0; int i=0; void rotate(){ if(i>3){ i=0; } else if(i<0){ i=3; } if(i==0){ a=1; a_=0; b=0; b_=1; } else if(i==1){ a=1; a_=0; b=1; b_=0; } else if(i==2){ a=0; a_=1; b=1; b_=0; } else if(i==3){ a=0; a_=1; b=0; b_=1; } wait(0.01); } void cw(uint16_t step){ for(int count=0;count<step;count++){ i++; rotate(); } } void Radar(){ lcd.setBacklight(TextLCD::LightOff);//LightOff, LightOn lcd.setCursor(TextLCD::CurOff_BlkOff);//CurOff_BlkOff, CurOn_BlkOff, CurOff_BlkOn, CurOn_BlkOn confSysClock(); USBSerial usbSerial(0x1f00, 0x2012, 0x0001, false); for(int i=0;i<24;i++){ ultra.start(); wait_ms(500); dist=ultra.get_dist_cm(); cw(170);//170 lcd.cls (); lcd.locate(0,0); lcd.printf("Fuck you men"); lcd.locate(0,1); lcd.printf("Gonorrea"); distancias[1][i]=i*(360/24); distancias[0][i]=dist; } for(int i=0;i<24;i++){ if(distancias[0][i]<menord){ menord=distancias[0][i]; menora=distancias[1][i]; } usbSerial.printf(" [%icm ,", distancias[0][i]); usbSerial.printf(" %i]", distancias[1][i]); } usbSerial.printf(" menor distancia %icm,\r\n", menord); usbSerial.printf(" angulo %i.\r\n", menora); lcd.cls (); lcd.locate(0,0); lcd.printf("menor distancia cm:%ld",menord ); wait(5); menorvec[0]=menord/100; menorvec[1]=(menord%100)/10; // menorvec[2]=menord%10; } void segmentos(){ Catodos=numeroCat[contadorsegmentos]; Anodos=numeroSeg[menorvec[contadorsegmentos]]; contadorsegmentos+=1; if (contadorsegmentos>2){ contadorsegmentos=0; } } int main() { ticker1.attach(&segmentos, 0.002); Catodos=0b00; confSysClock(); USBSerial usbSerial(0x1f00, 0x2012, 0x0001, false); while(1) { Radar(); } }