Classe C++ Arduíno
20/10/2017
0
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)