int segmentos[4] = {2,0,4,16};
int bot[3] = {27,26,25};
//Desafio: usar multiplexação para usar apenas 5 pinos (usar o fato do display ter 2 pinos para o pino comum. Assim os pinos que compartilham o mesmo pino ficariam acessos por 20 ms cada)
int motor[4] = {B00000001,B00000010,B00000100,B00001000};
void setup() {
// put your setup code here, to run once:
//Definição de entradas e saídas
for(int j =1;j<=4;j++) pinMode(segmentos[j], OUTPUT);
for(int j =1;j<=3;j++) pinMode(bot[j], OUTPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
int time = 1000;
int ref = millis();
bool horario = true;
bool iniciar = false;
const int timeBounce = 10; //O bounce depende do tempo de estabilização. Assim, aqui presumi-se que depois de 10 ms as leituras estão estáveis.
int bounce = 0;
bool verificado = false;
do{
digitalWrite(2, HIGH);
//Verificação de se o botão verde (regressiva, pino 26) foi pressionado
if(!digitalRead(bot[0]) == 1 && verificado == false){
verificado = true;
bounce = millis();
}
//Ação do botão azul: acionamento do motor
if(millis() - bounce > timeBounce && verificado == true){
if(!digitalRead(bot[0]) == 1){
//prender a progressão do código enquanto o botão não for solto
while(!digitalRead(bot[0]) == 1){
}
//Inciar motor em sentido horário
iniciar = true;
//Reseta os parâmetros de debounce do botão
bounce = 0;
verificado = false;
}
}
//Acão do motor ao iniciar em sentido horário
if(iniciar == true && horario == true){
digitalWrite(segmentos[1], 1);
// for(int j = 0; j < 4; j++){
// for(int i = 0; i < 4; i++){
// digitalWrite(segmentos[i], bitRead(motor[j],i));
// delay(100);
// }
// }
}
}while(1 == 1);
}