gostaria de montar um projeto assim, aperta buton 1 começa a contagem  0 a 10  aperta buton 2 para , aperta  de novo buton 1 faz a regressao .  seria 1 conta,    2 para ,1 retorna  0,1,2,3,4,5, 5,4,3,2,1,0.

preciso de um dica

Exibições: 924

Responder esta

Respostas a este tópico

Olá, fiz um código aqui e parece estar 99% do que você quer fazer. Veja se resolve o seu problema.

Apesar de parecer simples a solução me deu um certo trabalho. Me desculpe pelo tamanho do código, ainda não consegui fazer menor.


#define botao1 2 //Definindo botao1 como porta digital 2
#define botao2 3 //Definindo botao2 como porta digital 3
boolean apertoBotao1, apertoBotao2 = 0; //variáveis para armazenar aperto dos botões
int contador = -1; //variável contadora de tempo
byte tempoAnterior = -1; //variável para armazenar tempo anterior
void setup() {
Serial.begin(9600); //Inicia a comunicação serial com o baud rate em 9600
Serial.flush(); //Limpa a serial para evitar "lixo" na tela
delayMicroseconds(100); // atraso para confirmação de limpeza na serial
Serial.println("Sistema acionado."); // Mensagem de inicio
Serial.println();// Pula uma linha
pinMode(botao1, INPUT); //Define botao1 como entrada
pinMode(botao2, INPUT); //Define botao1 como entrada
/*Lembrando que por default todos os pinos são configurados
como entrada e caso não queira definir pinos de entrada
através de pinMode não é necessário.*/
}


void loop() {

if(digitalRead(botao1)){ //Leitura digital do pino 2
apertouBotao1(); //Se verdadeiro ( = 1, "pressionado") chama a função
}
else if(digitalRead(botao2)){ //Leitura digital do pino 3
apertoBotao2 = 1; //Se verdadeiro ( = 1, "pressionado") atribui o valor 1 a variável
delay(200); //atraso de 200ms (tempo médio de aperto de um botão)
Serial.println("Parada"); //exibe a mensagem
}

}


void tempoCrescente(){ //Função para contagem crescente de tempo
for(int i = 0; i<= 99; i++){ //laço de repetição para contagem de tempo
if(digitalRead(botao2)){ // se durante o laço houver um acionamento no botao2
contador--; //contador é decrementado apenas para ao abortar o laço o valor não alterar
break; //comando break aborta o laço for
}
delay(10); //atraso de 10ms para contagem de tempo; 100 * 10 = 1000ms
}
contador++; //incrementa o contador a cada um segundo
}


void tempoDecrescente(){//Função para contagem decrescente de tempo
for(int i = 0; i<= 99; i++){//laço de repetição para contagem de tempo
if(digitalRead(botao2)){ // se durante o laço houver um acionamento no botao2
contador++; //contador é incrementado apenas para ao abortar o laço o valor não alterar
break; //comando break aborta o laço for
}
delay(10); //atraso de 10ms para contagem de tempo; 100 * 10 = 1000ms
}
contador--; //decrementa o contador a cada um segundo
}


void apertouBotao1(){ //função chamada ao pressionar o botao 1
apertoBotao1 = 1; ///atribui 1 a variavel
Serial.println("Botao 1 apertado"); //exibe a mensagem
if(contador <= 0){ //testa a condição, se verdadeira
while(apertoBotao1 == 1 && (!digitalRead(botao2)) && contador < 10){//laço de repetição, se todas as condições forem verdadeiras
tempoCrescente();// chama função

if(tempoAnterior != contador) {//testa condição, se for diferente
Serial.println(contador); //Exibi o novo valor na tela
tempoAnterior = contador;//atribui o valor de uma variável a outra
}
}

if(contador <= 0)contador = -1; // testa condição, caso verdadeira atribui o valor -1 a variável (isso permite exibir a partir do 0)
}

else{//se a condição (if(contador <= 0)) for falsa
while(apertoBotao1 == 1 && (!digitalRead(botao2)) && contador > 0){//laço de repetição, se todas as condições forem verdadeiras
tempoDecrescente(); //chama a função
if(tempoAnterior != contador) {//testa condição, se for diferente
Serial.println(contador);//Exibi o novo valor na tela
tempoAnterior = contador;//atribui o valor de uma variável a outra
}
}
if(contador <= 0)contador = -1; // testa condição, caso verdadeira atribui o valor -1 a variável (isso permite exibir a partir do 0)
}
}

Valeu pelo codigo Vargas, agora tou tentar  incluir  les .obrigado   

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço