RTOS

Dependencies:   mbed mbed-rtos hcsr04 TextLCD MMA8451Q

Committer:
Diego_Mbed
Date:
Thu Jun 11 02:07:45 2020 +0000
Revision:
0:a07af2ea22c3
Rtos;

Who changed what in which revision?

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