RioBotz / Mbed 2 deprecated TesteSensoresLFBeta

Dependencies:   mbed

main.cpp

Committer:
rperoba
Date:
2020-02-19
Revision:
0:3af2fc20e7c1
Child:
1:d45444439ccb

File content as of revision 0:3af2fc20e7c1:

#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 500 // parametro que diferencia a leitura do branco pro preto
Serial bt (p28,p27);

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(p10); // 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

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_ms(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();
            tempoDoSensor.reset();
            float tempoDeLeitura = tempoDoSensor.read_ms();
            bt.printf ("Tempo de leitura :%f /n ",tempoDeLeitura); // debug
            return false; // retorna quando for preto
            }
    }
    tempoDoSensor.stop();
    tempoDoSensor.reset();
    float tempoDeLeitura = tempoDoSensor.read_ms();
    bt.printf ("Tempo de leitura :%f /n ",tempoDeLeitura); // debug
    return true;// retorna quando for branco
    }

int main() {
    bt.printf("Iniciando a leitura de sensores: ");
    bool tempoSensor4 = sensorCheck(4); // le e printa sensor 4
    bt.printf("Sensor 4:%d\n",tempoSensor4);
    bool tempoSensor5 = sensorCheck(5); // le e printa sensor 5
    bt.printf("Sensor 5:%d\n",tempoSensor5);
    bool tempoSensor6 = sensorCheck(6); // le e printa sensor 6
    bt.printf("Sensor 6:%d\n",tempoSensor6);
    bool tempoSensor7 = sensorCheck(7); // le e printa sensor 7
    bt.printf("Sensor 7:%d\n",tempoSensor7);
    bool tempoSensor8 = sensorCheck(8); // le e printa sensor 8
    bt.printf("Sensor 8:%d\n",tempoSensor8);
    bool tempoSensor9 = sensorCheck(9); // le e printa sensor 9
    bt.printf("Sensor 9:%d\n",tempoSensor9);
    bool tempoSensor10 = sensorCheck(10); // le e printa sensor 10
    bt.printf("Sensor 10:%d\n",tempoSensor10);
    bool tempoSensor11 = sensorCheck(11); // le e printa sensor 11
    bt.printf("Sensor 11:%d\n",tempoSensor11);
}