Radar detector de obstáculos con sensor ultrasonido y motor paso a paso

Dependencies:   mbed mbed-STM32F103C8T6 USBDevice_STM32F103 TextLCD HCSR04

Revision:
0:29c68dc30a1e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Nov 18 03:25:19 2021 +0000
@@ -0,0 +1,122 @@
+#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();  
+    }
+}
\ No newline at end of file