Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@1:d45444439ccb, 2020-02-19 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |