RioBotz / Mbed 2 deprecated TesteSensoresLFBeta

Dependencies:   mbed

Committer:
rperoba
Date:
Sat Feb 22 12:53:47 2020 +0000
Revision:
3:7eb93419c1e8
Parent:
2:e66266d2c51f
Child:
4:4e2761eb8b22
Mudei o mode pra none , o que conseguimos fazer rodar encostando o dedo no sensor, e esta com o print de todos os sensores;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rperoba 0:3af2fc20e7c1 1 #include "mbed.h"
rperoba 0:3af2fc20e7c1 2
rperoba 0:3af2fc20e7c1 3 // Código para testar os sensores de linha,lendo através do tempo de decaimento do sensor e utilizando o multiplexador
rperoba 3:7eb93419c1e8 4 #define threshold 30000 // parametro que diferencia a leitura do branco pro preto
rperoba 1:d45444439ccb 5 Serial bt (USBTX,USBRX);
rperoba 0:3af2fc20e7c1 6
rperoba 1:d45444439ccb 7 PwmOut pwm(p25);
rperoba 1:d45444439ccb 8 DigitalOut dir (p26);
rperoba 1:d45444439ccb 9 PwmOut pwm1(p24);
rperoba 1:d45444439ccb 10 DigitalOut dir1 (p23);
rperoba 3:7eb93419c1e8 11
rperoba 0:3af2fc20e7c1 12 DigitalOut multiplexador1(p5); // portas do multiplexador que selecionam o sensor de linha
rperoba 0:3af2fc20e7c1 13 DigitalOut multiplexador2(p6);
rperoba 3:7eb93419c1e8 14 DigitalOut multiplexador3(p8); // PRECISA AJUSTAR OS PINOS
rperoba 3:7eb93419c1e8 15 DigitalOut multiplexador4(p7);
rperoba 1:d45444439ccb 16 //DigitalOut multiplexador5(p9);// Enable do multiplexador
rperoba 3:7eb93419c1e8 17 DigitalInOut multiplexadorInOut(p12); // In/Out do multiplexador
rperoba 1:d45444439ccb 18
rperoba 0:3af2fc20e7c1 19 int tabelaVerdade1[16] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}; // Arrays para selecionar o sensor de linha na função sensorCheck
rperoba 0:3af2fc20e7c1 20 int tabelaVerdade2[16] = {0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
rperoba 0:3af2fc20e7c1 21 int tabelaVerdade3[16] = {0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1};
rperoba 0:3af2fc20e7c1 22 int tabelaVerdade4[16] = {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};
rperoba 1:d45444439ccb 23
rperoba 0:3af2fc20e7c1 24 Timer tempoDoSensor; // timer para leitura do sensor de linha
rperoba 0:3af2fc20e7c1 25
rperoba 3:7eb93419c1e8 26 void Setup_Sensores (void){ //Define o modo de cada sensor
rperoba 3:7eb93419c1e8 27
rperoba 1:d45444439ccb 28
rperoba 3:7eb93419c1e8 29 multiplexadorInOut.mode(PullNone);
rperoba 3:7eb93419c1e8 30 multiplexadorInOut.input();
rperoba 3:7eb93419c1e8 31 bt.printf("Status do Sensor iniciando: %d ", multiplexadorInOut.read());
rperoba 3:7eb93419c1e8 32 multiplexadorInOut.output();
rperoba 3:7eb93419c1e8 33 multiplexadorInOut = 0;
rperoba 3:7eb93419c1e8 34 wait_ms(10);
rperoba 3:7eb93419c1e8 35 multiplexadorInOut.input();
rperoba 3:7eb93419c1e8 36 bt.printf("Status do SensorLOW: %d ", multiplexadorInOut.read());
rperoba 3:7eb93419c1e8 37 multiplexadorInOut.output();
rperoba 3:7eb93419c1e8 38 multiplexadorInOut = 1;
rperoba 3:7eb93419c1e8 39 wait_ms(10);
rperoba 3:7eb93419c1e8 40 multiplexadorInOut.input();
rperoba 3:7eb93419c1e8 41 bt.printf("Status do SensorHIGH: %d ", multiplexadorInOut.read());
rperoba 3:7eb93419c1e8 42 multiplexadorInOut.output();
rperoba 3:7eb93419c1e8 43 multiplexadorInOut = 0;
rperoba 3:7eb93419c1e8 44 wait_ms(10);
rperoba 3:7eb93419c1e8 45 multiplexadorInOut.input();
rperoba 3:7eb93419c1e8 46 bt.printf("Status do SensorLOW: %d ", multiplexadorInOut.read());
rperoba 1:d45444439ccb 47 }
rperoba 1:d45444439ccb 48
rperoba 1:d45444439ccb 49
rperoba 1:d45444439ccb 50
rperoba 0:3af2fc20e7c1 51 bool sensorCheck(int sensor){// int sensor é qual sensor se deseja ler,entre 0 a 15
rperoba 0:3af2fc20e7c1 52 // função para ler os motores,retorna true se for branco e false se for preto
rperoba 1:d45444439ccb 53
rperoba 0:3af2fc20e7c1 54 multiplexador1.write(tabelaVerdade1[sensor]); // selecionando o sensor
rperoba 0:3af2fc20e7c1 55 multiplexador2.write(tabelaVerdade2[sensor]);
rperoba 0:3af2fc20e7c1 56 multiplexador3.write(tabelaVerdade3[sensor]);
rperoba 0:3af2fc20e7c1 57 multiplexador4.write(tabelaVerdade4[sensor]);
rperoba 3:7eb93419c1e8 58 //bt.printf("Status do Sensor entrando no check: %d ", multiplexadorInOut.read());
rperoba 0:3af2fc20e7c1 59 multiplexadorInOut.output(); // colocando o InOut como Out
rperoba 3:7eb93419c1e8 60 multiplexadorInOut = 1; // levando ele a high por pelo menos 10 microssegundos
rperoba 0:3af2fc20e7c1 61
rperoba 0:3af2fc20e7c1 62 tempoDoSensor.start(); // iniciando o contador
rperoba 3:7eb93419c1e8 63
rperoba 3:7eb93419c1e8 64 wait_ms(10); // tempo para o output ir para high
rperoba 3:7eb93419c1e8 65
rperoba 0:3af2fc20e7c1 66 multiplexadorInOut.input(); // colocando o InOut como In
rperoba 3:7eb93419c1e8 67 //bt.printf("Status do Sensor supostamente em HIGH: %d ", multiplexadorInOut.read());
rperoba 3:7eb93419c1e8 68
rperoba 3:7eb93419c1e8 69 while(multiplexadorInOut == 1){// enrolando enquanto o sensor esta lendo
rperoba 3:7eb93419c1e8 70 //bt.printf("To no loop ->");
rperoba 3:7eb93419c1e8 71 //bt.printf("Status do Sensor: %d ", multiplexadorInOut.read());
rperoba 3:7eb93419c1e8 72
rperoba 3:7eb93419c1e8 73 if (tempoDoSensor.read_us() >= threshold){// termina o while se o tempo for maior que o threshold,agilizando o processo de leitura
rperoba 0:3af2fc20e7c1 74 tempoDoSensor.stop();
rperoba 3:7eb93419c1e8 75 bt.printf("To no if ->");
rperoba 3:7eb93419c1e8 76 float tempoDeLeitura = tempoDoSensor.read_us();
rperoba 1:d45444439ccb 77 bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
rperoba 1:d45444439ccb 78 tempoDoSensor.reset();
rperoba 3:7eb93419c1e8 79 multiplexadorInOut.output();
rperoba 3:7eb93419c1e8 80 multiplexadorInOut = 0;
rperoba 0:3af2fc20e7c1 81 return false; // retorna quando for preto
rperoba 2:e66266d2c51f 82 }
rperoba 2:e66266d2c51f 83
rperoba 0:3af2fc20e7c1 84 }
rperoba 0:3af2fc20e7c1 85 tempoDoSensor.stop();
rperoba 1:d45444439ccb 86 float tempoDeLeitura = tempoDoSensor.read_us();
rperoba 1:d45444439ccb 87 bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
rperoba 0:3af2fc20e7c1 88 tempoDoSensor.reset();
rperoba 3:7eb93419c1e8 89 multiplexadorInOut.output();
rperoba 3:7eb93419c1e8 90 multiplexadorInOut = 0;
rperoba 0:3af2fc20e7c1 91 return true;// retorna quando for branco
rperoba 0:3af2fc20e7c1 92 }
rperoba 1:d45444439ccb 93 void Final_Stop(){ dir = 0; dir1 = 0; pwm.write(0); pwm1.write(0); } //Função de parada do LF depois do percurso
rperoba 0:3af2fc20e7c1 94
rperoba 0:3af2fc20e7c1 95 int main() {
rperoba 1:d45444439ccb 96 Setup_Sensores();
rperoba 1:d45444439ccb 97 while(1){
rperoba 1:d45444439ccb 98 Final_Stop();
rperoba 3:7eb93419c1e8 99 //bt.printf("Iniciando a leitura de sensores: ");
rperoba 3:7eb93419c1e8 100 bool tempoSensor0 = sensorCheck(0); // le e printa sensor 0
rperoba 3:7eb93419c1e8 101 bt.printf("Sensor 0:%d -> ",tempoSensor0);
rperoba 3:7eb93419c1e8 102 bool tempoSensor1 = sensorCheck(1); // le e printa sensor 1
rperoba 3:7eb93419c1e8 103 bt.printf("Sensor 1:%d\n\r",tempoSensor1);
rperoba 3:7eb93419c1e8 104 bool tempoSensor2 = sensorCheck(2); // le e printa sensor 2
rperoba 3:7eb93419c1e8 105 bt.printf("Sensor 2:%d\n\r",tempoSensor2);
rperoba 3:7eb93419c1e8 106 bool tempoSensor3 = sensorCheck(3); // le e printa sensor 3
rperoba 3:7eb93419c1e8 107 bt.printf("Sensor 3:%d\n\r",tempoSensor3);
rperoba 1:d45444439ccb 108 bool tempoSensor4 = sensorCheck(4); // le e printa sensor 4
rperoba 1:d45444439ccb 109 bt.printf("Sensor 4:%d\n\r",tempoSensor4);
rperoba 1:d45444439ccb 110 bool tempoSensor5 = sensorCheck(5); // le e printa sensor 5
rperoba 1:d45444439ccb 111 bt.printf("Sensor 5:%d\n\r",tempoSensor5);
rperoba 1:d45444439ccb 112 bool tempoSensor6 = sensorCheck(6); // le e printa sensor 6
rperoba 3:7eb93419c1e8 113 bt.printf("Sensor 6:%d\n\r",tempoSensor6);
rperoba 1:d45444439ccb 114 bool tempoSensor7 = sensorCheck(7); // le e printa sensor 7
rperoba 1:d45444439ccb 115 bt.printf("Sensor 7:%d\n\r",tempoSensor7);
rperoba 3:7eb93419c1e8 116
rperoba 1:d45444439ccb 117 }
rperoba 1:d45444439ccb 118
rperoba 0:3af2fc20e7c1 119 }