.

Dependencies:   mbed hcsr04 TextLCD MMA8451Q

Committer:
20172573063
Date:
Thu Jun 11 02:54:45 2020 +0000
Revision:
0:e22e3566f3da
prueba_kath;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
20172573063 0:e22e3566f3da 1 #include "mbed.h"
20172573063 0:e22e3566f3da 2 #include "rtos.h"
20172573063 0:e22e3566f3da 3 #include "hcsr04.h"
20172573063 0:e22e3566f3da 4 #include "TextLCD.h"
20172573063 0:e22e3566f3da 5 #include "MMA8451Q.h"
20172573063 0:e22e3566f3da 6 #define MMA8451_I2C_ADDRESS (0x1d<<1)
20172573063 0:e22e3566f3da 7
20172573063 0:e22e3566f3da 8 BusOut Dis7seg(PTE20,PTB2,PTB0,PTE21,PTE23,PTB3,PTB1);
20172573063 0:e22e3566f3da 9 DigitalOut unidad(PTE2);
20172573063 0:e22e3566f3da 10 DigitalOut decena(PTE3);
20172573063 0:e22e3566f3da 11 DigitalOut centena(PTE5);
20172573063 0:e22e3566f3da 12 Serial pc(USBTX, USBRX); // tx, rx
20172573063 0:e22e3566f3da 13 HCSR04 usensor(PTD0,PTD5); // Trigger, Echo
20172573063 0:e22e3566f3da 14 PwmOut servo(PTA13);
20172573063 0:e22e3566f3da 15 DigitalOut led_1(LED1);
20172573063 0:e22e3566f3da 16 SPI spi(PTD2, NC, PTD1); // puertos (MOSI, MISO, SCLK)
20172573063 0:e22e3566f3da 17 DigitalOut cs(PTE31); // Chip select
20172573063 0:e22e3566f3da 18 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); //(SDA,SCL,Direc)
20172573063 0:e22e3566f3da 19 // I2C Communication
20172573063 0:e22e3566f3da 20 I2C i2c_lcd(PTE0,PTE1); // SDA, SCL
20172573063 0:e22e3566f3da 21 // LCD instantiation
20172573063 0:e22e3566f3da 22 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2, TextLCD::WS0010);
20172573063 0:e22e3566f3da 23
20172573063 0:e22e3566f3da 24 unsigned int dist;
20172573063 0:e22e3566f3da 25 int distancias[12];
20172573063 0:e22e3566f3da 26 int incremento;
20172573063 0:e22e3566f3da 27 int Decremento;
20172573063 0:e22e3566f3da 28 int uni =5;
20172573063 0:e22e3566f3da 29 int dec =2;
20172573063 0:e22e3566f3da 30 int n=0;
20172573063 0:e22e3566f3da 31 int p=0;
20172573063 0:e22e3566f3da 32
20172573063 0:e22e3566f3da 33 Thread thread;
20172573063 0:e22e3566f3da 34 Thread thread1;
20172573063 0:e22e3566f3da 35 Thread thread2;
20172573063 0:e22e3566f3da 36 Thread thread3;
20172573063 0:e22e3566f3da 37
20172573063 0:e22e3566f3da 38 void numeros()
20172573063 0:e22e3566f3da 39 {
20172573063 0:e22e3566f3da 40 switch(n) {
20172573063 0:e22e3566f3da 41 case 0:
20172573063 0:e22e3566f3da 42 Dis7seg=0x01;
20172573063 0:e22e3566f3da 43 break;
20172573063 0:e22e3566f3da 44 case 1:
20172573063 0:e22e3566f3da 45 Dis7seg=0x4F;
20172573063 0:e22e3566f3da 46 break;
20172573063 0:e22e3566f3da 47 case 2:
20172573063 0:e22e3566f3da 48 Dis7seg=0x12;
20172573063 0:e22e3566f3da 49 break;
20172573063 0:e22e3566f3da 50 case 3:
20172573063 0:e22e3566f3da 51 Dis7seg=0x06;
20172573063 0:e22e3566f3da 52 break;
20172573063 0:e22e3566f3da 53 case 4:
20172573063 0:e22e3566f3da 54 Dis7seg=0x4C;
20172573063 0:e22e3566f3da 55 break;
20172573063 0:e22e3566f3da 56 case 5:
20172573063 0:e22e3566f3da 57 Dis7seg=0x24;
20172573063 0:e22e3566f3da 58 break;
20172573063 0:e22e3566f3da 59 case 6:
20172573063 0:e22e3566f3da 60 Dis7seg=0x60;
20172573063 0:e22e3566f3da 61 break;
20172573063 0:e22e3566f3da 62 case 7:
20172573063 0:e22e3566f3da 63 Dis7seg=0x0F;
20172573063 0:e22e3566f3da 64 break;
20172573063 0:e22e3566f3da 65 case 8:
20172573063 0:e22e3566f3da 66 Dis7seg=0x00;
20172573063 0:e22e3566f3da 67 break;
20172573063 0:e22e3566f3da 68 case 9:
20172573063 0:e22e3566f3da 69 Dis7seg=0x0C;
20172573063 0:e22e3566f3da 70 break;
20172573063 0:e22e3566f3da 71 }
20172573063 0:e22e3566f3da 72 }
20172573063 0:e22e3566f3da 73 void lidar()
20172573063 0:e22e3566f3da 74 {
20172573063 0:e22e3566f3da 75 servo.period_ms(20);
20172573063 0:e22e3566f3da 76 while(true) {
20172573063 0:e22e3566f3da 77 for(int i=0; i<=12; i++) {
20172573063 0:e22e3566f3da 78 incremento= i*159;
20172573063 0:e22e3566f3da 79 usensor.start();
20172573063 0:e22e3566f3da 80 dist=usensor.get_dist_cm();
20172573063 0:e22e3566f3da 81 distancias[i]=dist;
20172573063 0:e22e3566f3da 82 servo.pulsewidth_us(600+incremento);
20172573063 0:e22e3566f3da 83 Thread::wait(120);
20172573063 0:e22e3566f3da 84 }
20172573063 0:e22e3566f3da 85 for(int i=0; i<=12; i++) {
20172573063 0:e22e3566f3da 86 Decremento= i*159;
20172573063 0:e22e3566f3da 87 usensor.start();
20172573063 0:e22e3566f3da 88 usensor.get_dist_cm();
20172573063 0:e22e3566f3da 89 distancias[i]=dist;
20172573063 0:e22e3566f3da 90 servo.pulsewidth_us(2508-Decremento);
20172573063 0:e22e3566f3da 91 Thread::wait(120);
20172573063 0:e22e3566f3da 92 }
20172573063 0:e22e3566f3da 93 }
20172573063 0:e22e3566f3da 94 }
20172573063 0:e22e3566f3da 95 void Lcd_I2C()
20172573063 0:e22e3566f3da 96 {
20172573063 0:e22e3566f3da 97
20172573063 0:e22e3566f3da 98 lcd.cls();
20172573063 0:e22e3566f3da 99 lcd.locate(0,0);
20172573063 0:e22e3566f3da 100 lcd.setBacklight(TextLCD::LightOn);
20172573063 0:e22e3566f3da 101 while(true) {
20172573063 0:e22e3566f3da 102 lcd.cls();
20172573063 0:e22e3566f3da 103 lcd.locate(0,0);
20172573063 0:e22e3566f3da 104 lcd.printf("cm:%u hola mundo",dist);
20172573063 0:e22e3566f3da 105 Thread::wait(100);
20172573063 0:e22e3566f3da 106 }
20172573063 0:e22e3566f3da 107 }
20172573063 0:e22e3566f3da 108 void Seg()
20172573063 0:e22e3566f3da 109 {
20172573063 0:e22e3566f3da 110 while (true) {
20172573063 0:e22e3566f3da 111 unidad=0b1;
20172573063 0:e22e3566f3da 112 decena=0b0;
20172573063 0:e22e3566f3da 113 n=uni;
20172573063 0:e22e3566f3da 114 numeros();
20172573063 0:e22e3566f3da 115 Thread::wait(5);
20172573063 0:e22e3566f3da 116 unidad=0b0;
20172573063 0:e22e3566f3da 117 decena=0b1;
20172573063 0:e22e3566f3da 118 n=dec;
20172573063 0:e22e3566f3da 119 numeros();
20172573063 0:e22e3566f3da 120 Thread::wait(5);
20172573063 0:e22e3566f3da 121 }
20172573063 0:e22e3566f3da 122 }
20172573063 0:e22e3566f3da 123 int main()
20172573063 0:e22e3566f3da 124 {
20172573063 0:e22e3566f3da 125 thread.start((numeros));
20172573063 0:e22e3566f3da 126 //thread.set_priority (osPriorityNormal);
20172573063 0:e22e3566f3da 127 thread1.start ((lidar));
20172573063 0:e22e3566f3da 128 thread2.start ((Lcd_I2C));
20172573063 0:e22e3566f3da 129 thread3.start((Seg));
20172573063 0:e22e3566f3da 130 thread.join();
20172573063 0:e22e3566f3da 131 }