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
- Committer:
- rperoba
- Date:
- 2020-02-19
- Revision:
- 1:d45444439ccb
- Parent:
- 0:3af2fc20e7c1
- Child:
- 2:e66266d2c51f
File content as of revision 1:d45444439ccb:
#include "mbed.h"
// Código para testar os sensores de linha,lendo através do tempo de decaimento do sensor e utilizando o multiplexador
#define threshold 3000 // parametro que diferencia a leitura do branco pro preto
Serial bt (USBTX,USBRX);
PwmOut pwm(p25);
DigitalOut dir (p26);
PwmOut pwm1(p24);
DigitalOut dir1 (p23);
DigitalOut multiplexador1(p5); // portas do multiplexador que selecionam o sensor de linha
DigitalOut multiplexador2(p6);
DigitalOut multiplexador3(p7); // PRECISA AJUSTAR OS PINOS
DigitalOut multiplexador4(p8);
//DigitalOut multiplexador5(p9);// Enable do multiplexador
DigitalInOut multiplexadorInOut(p9); // In/Out do multiplexador
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
int tabelaVerdade2[16] = {0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
int tabelaVerdade3[16] = {0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1};
int tabelaVerdade4[16] = {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};
Timer tempoDoSensor; // timer para leitura do sensor de linha
void Setup_Sensores (void){ //Define o modo de cada sensor como PullUp
multiplexadorInOut.mode(PullDown);
}
bool sensorCheck(int sensor){// int sensor é qual sensor se deseja ler,entre 0 a 15
// função para ler os motores,retorna true se for branco e false se for preto
multiplexador1.write(tabelaVerdade1[sensor]); // selecionando o sensor
multiplexador2.write(tabelaVerdade2[sensor]);
multiplexador3.write(tabelaVerdade3[sensor]);
multiplexador4.write(tabelaVerdade4[sensor]);
multiplexadorInOut.output(); // colocando o InOut como Out
multiplexadorInOut.write(1); // levando ele a high por pelo menos 10 microssegundos
wait_us(11); // tempo para o output ir para high
tempoDoSensor.start(); // iniciando o contador
multiplexadorInOut.input(); // colocando o InOut como In
while(multiplexadorInOut.read() == 1){// enrolando enquanto o sensor esta lendo
/* if (tempoDoSensor.read_ms() >= threshold){// termina o while se o tempo for maior que o threshold,agilizando o processo de leitura
tempoDoSensor.stop();
float tempoDeLeitura = tempoDoSensor.read_ms();
bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
tempoDoSensor.reset();
return false; // retorna quando for preto
}*/
bt.printf("To no loop \n\r");
}
tempoDoSensor.stop();
float tempoDeLeitura = tempoDoSensor.read_us();
bt.printf ("Tempo de leitura :%f \n\r ",tempoDeLeitura); // debug
tempoDoSensor.reset();
return true;// retorna quando for branco
}
void Final_Stop(){ dir = 0; dir1 = 0; pwm.write(0); pwm1.write(0); } //Função de parada do LF depois do percurso
int main() {
Setup_Sensores();
while(1){
Final_Stop();
/*bt.printf("Iniciando a leitura de sensores: ");
bool tempoSensor4 = sensorCheck(4); // le e printa sensor 4
bt.printf("Sensor 4:%d\n\r",tempoSensor4);
bool tempoSensor5 = sensorCheck(5); // le e printa sensor 5
bt.printf("Sensor 5:%d\n\r",tempoSensor5);
bool tempoSensor6 = sensorCheck(6); // le e printa sensor 6
bt.printf("Sensor 6:%d\n\r",tempoSensor6);
bool tempoSensor7 = sensorCheck(7); // le e printa sensor 7
bt.printf("Sensor 7:%d\n\r",tempoSensor7);
bool tempoSensor8 = sensorCheck(8); // le e printa sensor 8
bt.printf("Sensor 8:%d\n\r",tempoSensor8);
bool tempoSensor9 = sensorCheck(9); // le e printa sensor 9
bt.printf("Sensor 9:%d\n\r",tempoSensor9);
bool tempoSensor10 = sensorCheck(10); // le e printa sensor 10
bt.printf("Sensor 10:%d\n\r",tempoSensor10);
*/ bool tempoSensor11 = sensorCheck(11); // le e printa sensor 11
bt.printf("Sensor 11:%d\n\r",tempoSensor11);
}
}