Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Gigio
Gigio
Mensagens : 68
Data de inscrição : 09/03/2022
Idade : 16
Escola : Colegio Estadual Professor Lindaura Ribeiro Lucas

Dúvida no Exercício 1.8 Empty Dúvida no Exercício 1.8

Qua Abr 06, 2022 2:54 pm
/*
* Exercicio: 1.8
* Tema: Pinos Digitais
* Atividade: Fazer um pisca-pisca com 2 leds alternando entre um aceso e outro apagado com a velocidade controlada pelas teclas UP(aumenta a velocidade) e DOWN (diminui a velocidade)
* Descrição: Usar a leitura das teclas e multiplicar por uma constante para fazer o incremento e decremento da velocidade
* Hardware: Ligar os leds em dois pinos digital configurado como SAÍDA e as teclas em outros pinos digitais
* Comandos: pinMode, digitalWrite, delay, PULLUP
* Dica1: Usar os operadores matemáticos para aumentar e diminuir o tempo do pisca
* Dica2: A tecla quando não está pressionada fica em HIGH (1) e quando pressiona o pino é aterrado e vem para nível lógico LOW (0)
* Dica3: Todo numero multiplicado por zero 0 é igual a zero, e todo numero somado com zero é igual a ele mesmo
* Dica4: Para incrementar o tempo quando a tecla UP for pressionada, o valor fica 1, deve ser multiplicado por um numero e somado ao valor do tempo
* Dica5: Usar uma variável tipo Byte para o tempo, essa quando chega em 255 e incrementada volta a zero.
* Dica6: Multiplicar 255 por um valor para chegar ao tempo desejado,
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 4 //Definido que o pino 4 vai se chamar "led2"
#define teclaup 2 //Definido que o pino 2 vai chamar-se "teclaup"
#define tecladown 13 //Definido que o pino 12 vai chamar-se "tecladown"

//DECLARAcAO DE VARIAVEIS
byte zawarudo = 10;

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2, OUTPUT);
pinMode(teclaup, INPUT_PULLUP);
pinMode(tecladown, INPUT_PULLUP);
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
zawarudo = (zawarudo - !digitalRead(teclaup)*10);
zawarudo = (zawarudo + !digitalRead(tecladown)*10);
Serial.println(zawarudo);
digitalWrite(led1, HIGH);
delay(zawarudo);
digitalWrite(led2,HIGH);
digitalWrite(led1,LOW);
delay(zawarudo);
digitalWrite(led2,LOW);
}

//Estou tendo problemas na hora de pressionar as teclas, por algum motivo o valor de tempo fica ou diminuindo ou aumentando dependendo da ordem do tempo (zawarudo) ali encima, a tecla apenas pausa o crescimento ou encolhimento do valor, se puder ajudar, agradeço.
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Dúvida no Exercício 1.8 Empty Re: Dúvida no Exercício 1.8

Sex Abr 29, 2022 12:55 am
Oi Giovanni, fiz o teste do programa e está funcionando. No simulide o pino 13 não funcionou o input_pullup, dai troquei para o pino 5 deu boa.
Consegue ver se o inputpullup funcionou quando ligar na tecla e a linha ficar avermelhada, isso indica qe está com nivel alto ou seja proximo a 5V, quanto pressionar a tecla fica azul, ou com nível baixo, proximo a 0V.
Agora falta os comentários, fazer o teste e comprovar o funcionamento. Vou dar nota 5.0 até concluir o exercício.
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos