RioBotz / Mbed 2 deprecated TesteSensoresLFBeta

Dependencies:   mbed

Committer:
rperoba
Date:
Wed Feb 19 21:17:35 2020 +0000
Revision:
1:d45444439ccb
Parent:
0:3af2fc20e7c1
Child:
2:e66266d2c51f
Com os pinos certos

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 1:d45444439ccb 4 #define threshold 3000 // 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 0:3af2fc20e7c1 11 DigitalOut multiplexador1(p5); // portas do multiplexador que selecionam o sensor de linha
rperoba 0:3af2fc20e7c1 12 DigitalOut multiplexador2(p6);
rperoba 0:3af2fc20e7c1 13 DigitalOut multiplexador3(p7); // PRECISA AJUSTAR OS PINOS
rperoba 0:3af2fc20e7c1 14 DigitalOut multiplexador4(p8);
rperoba 1:d45444439ccb 15 //DigitalOut multiplexador5(p9);// Enable do multiplexador
rperoba 1:d45444439ccb 16 DigitalInOut multiplexadorInOut(p9); // In/Out do multiplexador
rperoba 1:d45444439ccb 17
rperoba 0:3af2fc20e7c1 18 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 19 int tabelaVerdade2[16] = {0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
rperoba 0:3af2fc20e7c1 20 int tabelaVerdade3[16] = {0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1};
rperoba 0:3af2fc20e7c1 21 int tabelaVerdade4[16] = {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};
rperoba 1:d45444439ccb 22
rperoba 0:3af2fc20e7c1 23 Timer tempoDoSensor; // timer para leitura do sensor de linha
rperoba 0:3af2fc20e7c1 24
rperoba 1:d45444439ccb 25 void Setup_Sensores (void){ //Define o modo de cada sensor como PullUp
rperoba 1:d45444439ccb 26
rperoba 1:d45444439ccb 27 multiplexadorInOut.mode(PullDown);
rperoba 1:d45444439ccb 28
rperoba 1:d45444439ccb 29 }
rperoba 1:d45444439ccb 30
rperoba 1:d45444439ccb 31
rperoba 1:d45444439ccb 32
rperoba 0:3af2fc20e7c1 33 bool sensorCheck(int sensor){// int sensor é qual sensor se deseja ler,entre 0 a 15
rperoba 0:3af2fc20e7c1 34 // função para ler os motores,retorna true se for branco e false se for preto
rperoba 1:d45444439ccb 35
rperoba 0:3af2fc20e7c1 36 multiplexador1.write(tabelaVerdade1[sensor]); // selecionando o sensor
rperoba 0:3af2fc20e7c1 37 multiplexador2.write(tabelaVerdade2[sensor]);
rperoba 0:3af2fc20e7c1 38 multiplexador3.write(tabelaVerdade3[sensor]);
rperoba 0:3af2fc20e7c1 39 multiplexador4.write(tabelaVerdade4[sensor]);
rperoba 1:d45444439ccb 40
rperoba 0:3af2fc20e7c1 41 multiplexadorInOut.output(); // colocando o InOut como Out
rperoba 0:3af2fc20e7c1 42 multiplexadorInOut.write(1); // levando ele a high por pelo menos 10 microssegundos
rperoba 0:3af2fc20e7c1 43
rperoba 1:d45444439ccb 44 wait_us(11); // tempo para o output ir para high
rperoba 1:d45444439ccb 45
rperoba 0:3af2fc20e7c1 46 tempoDoSensor.start(); // iniciando o contador
rperoba 0:3af2fc20e7c1 47 multiplexadorInOut.input(); // colocando o InOut como In
rperoba 0:3af2fc20e7c1 48 while(multiplexadorInOut.read() == 1){// enrolando enquanto o sensor esta lendo
rperoba 1:d45444439ccb 49 /* if (tempoDoSensor.read_ms() >= threshold){// termina o while se o tempo for maior que o threshold,agilizando o processo de leitura
rperoba 0:3af2fc20e7c1 50 tempoDoSensor.stop();
rperoba 1:d45444439ccb 51
rperoba 0:3af2fc20e7c1 52 float tempoDeLeitura = tempoDoSensor.read_ms();
rperoba 1:d45444439ccb 53 bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
rperoba 1:d45444439ccb 54 tempoDoSensor.reset();
rperoba 0:3af2fc20e7c1 55 return false; // retorna quando for preto
rperoba 1:d45444439ccb 56 }*/
rperoba 1:d45444439ccb 57 bt.printf("To no loop \n\r");
rperoba 0:3af2fc20e7c1 58 }
rperoba 0:3af2fc20e7c1 59 tempoDoSensor.stop();
rperoba 1:d45444439ccb 60 float tempoDeLeitura = tempoDoSensor.read_us();
rperoba 1:d45444439ccb 61 bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
rperoba 0:3af2fc20e7c1 62 tempoDoSensor.reset();
rperoba 0:3af2fc20e7c1 63 return true;// retorna quando for branco
rperoba 0:3af2fc20e7c1 64 }
rperoba 1:d45444439ccb 65 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 66
rperoba 0:3af2fc20e7c1 67 int main() {
rperoba 1:d45444439ccb 68 Setup_Sensores();
rperoba 1:d45444439ccb 69 while(1){
rperoba 1:d45444439ccb 70 Final_Stop();
rperoba 1:d45444439ccb 71 /*bt.printf("Iniciando a leitura de sensores: ");
rperoba 1:d45444439ccb 72 bool tempoSensor4 = sensorCheck(4); // le e printa sensor 4
rperoba 1:d45444439ccb 73 bt.printf("Sensor 4:%d\n\r",tempoSensor4);
rperoba 1:d45444439ccb 74 bool tempoSensor5 = sensorCheck(5); // le e printa sensor 5
rperoba 1:d45444439ccb 75 bt.printf("Sensor 5:%d\n\r",tempoSensor5);
rperoba 1:d45444439ccb 76 bool tempoSensor6 = sensorCheck(6); // le e printa sensor 6
rperoba 1:d45444439ccb 77 bt.printf("Sensor 6:%d\n\r",tempoSensor6);
rperoba 1:d45444439ccb 78 bool tempoSensor7 = sensorCheck(7); // le e printa sensor 7
rperoba 1:d45444439ccb 79 bt.printf("Sensor 7:%d\n\r",tempoSensor7);
rperoba 1:d45444439ccb 80 bool tempoSensor8 = sensorCheck(8); // le e printa sensor 8
rperoba 1:d45444439ccb 81 bt.printf("Sensor 8:%d\n\r",tempoSensor8);
rperoba 1:d45444439ccb 82 bool tempoSensor9 = sensorCheck(9); // le e printa sensor 9
rperoba 1:d45444439ccb 83 bt.printf("Sensor 9:%d\n\r",tempoSensor9);
rperoba 1:d45444439ccb 84 bool tempoSensor10 = sensorCheck(10); // le e printa sensor 10
rperoba 1:d45444439ccb 85 bt.printf("Sensor 10:%d\n\r",tempoSensor10);
rperoba 1:d45444439ccb 86 */ bool tempoSensor11 = sensorCheck(11); // le e printa sensor 11
rperoba 1:d45444439ccb 87 bt.printf("Sensor 11:%d\n\r",tempoSensor11);
rperoba 1:d45444439ccb 88 }
rperoba 1:d45444439ccb 89
rperoba 0:3af2fc20e7c1 90 }