.
Dependencies: mbed hcsr04 TextLCD MMA8451Q
main.cpp@0:e22e3566f3da, 2020-06-11 (annotated)
- Committer:
- 20172573063
- Date:
- Thu Jun 11 02:54:45 2020 +0000
- Revision:
- 0:e22e3566f3da
prueba_kath;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |