Classe C++ Arduíno
Não sou entendedor de C++.
Tenho um projeto de semáforo com Arduíno e gostaria de controlar 4 semáforos independentemente.
Criei uma classe para apenas instanciar e mandar os comandos pra ela.
Como a IDE do Arduino não oferece muitas ferramentas para debug, alguém pode ajudar e ver se a classe está correta?
segue abaixo o code
Tenho um projeto de semáforo com Arduíno e gostaria de controlar 4 semáforos independentemente.
Criei uma classe para apenas instanciar e mandar os comandos pra ela.
Como a IDE do Arduino não oferece muitas ferramentas para debug, alguém pode ajudar e ver se a classe está correta?
segue abaixo o code
class Semaforo{
private:
private verde;
private amarelo;
private vermelho;
private pedestreVerde;
private pedestraVermelho;
private sensorIdentifica;
private frequencia = 0;
public:
Semaforo(int pinVerde, int pinAmarelo, int pintVermelho, int pedestreVerde, int pedestreVermelho, byte EntradaSensor){
setVerde(pinVerde);
setAmarelo(pinAmarelo);
setVermelho(pinVermelho);
setPedestreVerde(pedestreVerde);
setPedestreVermelho(pedestreVermelho);
setSensor(EntradaSensor);
}
void fecharSemaforo(void){
digitalWrite (verde, LOW);
digitalWrite (amarelo, HIGH);
delay(4000);
digitalWrite (amarelo, LOW);
digitalWrite (vermelho, HIGH);
digitalWrite (pedestreVerde, HIGH);
}
void abrirSemaforo(void){
digitalWrite (pedestreVerde, LOW);
digitalWrite (vermelho, LOW);
digitalWrite (amarelo, LOW);
digitalWrite (verde, HIGH);
}
/**
* @param Int minutos
* Tempo em que o semáforo ficara em intermitente, por padrão 60 segundos
*/
void intermitente(int minutos = 60){
digitalWrite (verde, LOW);
digitalWrite (vermelho, LOW);
for(int i = 0; i <= minutos; i--){
digitalWrite (amarelo, HIGH);
delay(4000);
digitalWrite (amarelo, LOW);
}
}
void setVermelho(int ledVermelho){
vermelho = ledVermelho;
pinMode(vermelho, OUTPUT);
}
void setAmarelo(int ledAmarelo){
amarelo = ledAmarelo;
pinMode(amarelo, OUTPUT);
}
void setVerde(int ledVerde){
verde = ledVerde;
pinMode(verde, OUTPUT);
}
void setPedestreVerde(int ledPedestreVerde){
pedestreVerde = ledPedestreVerde;
pinMode(pedestreVerde, OUTPUT);
}
void setPedestreVermelho(int ledPedestreVermelho){
pedestreVermelho = ledPedestreVermelhor;
pinMode(pedestreVermelho, OUTPUT);
}
void setSensor(byte sensor){
sensorIdentifica = sensor;
pinMode(sensorIdentifica, INPUT);
}
void verifica(int sensorIdentifica){
int leitura = 0;
while(true){ //sim é um loop infinito, que deve rodar infinitamente pois o semaforo nunca pode parar de identificar carros
for (int i=0; i<1000; i++){ //faz mil leituras
leitura = leitura + analogRead (sensorIdentifica);
}
if(leitura/1000 > frequencia){ //verifica se a media das 1000 leituras é maior que a frequencia maxima do campo (caso aumente, seginifca que um carro passou por ali)
if(verficarTempoFechado() > 7){//respeitando que deve ter no minimo 7segundos de semaforo fechado, para que a pessagem dos pedestrese seja feita em segurança
//lembrar que aqui deve ser verificado o tempo minimo de todos os outros semáforos, alem da quantidade de carros que estao naquela, se via é maior que o numero contido nesta
//a partir daí tomar a decisao (se tempo minimo ja acabou, entao verifica quantidade de carros, onde tem mais deve abrir)
}
}
delay(55);
}
}
void ajustaFrequencia(){
for (int i=0; i<10000; i++){ //faz mil leituras
frequencia = leitura + analogRead (sensorIdentifica);
}
}
};
Kelvin Eger
Curtidas 0