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

Ir para baixo
avatar
LucyAnna800
Mensagens : 98
Data de inscrição : 11/06/2022
Idade : 12
Escola : Colegio Lindaura Ribeiro Lucas

Exercicio 1.8 Empty Exercicio 1.8

Qui Ago 18, 2022 11:18 am
/*
* 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 //batizado o pino3 de led1
#define led2 4 //batizado o pino4 de led2
#define teclaup 2 //batizado o pino2 de teclaup
#define tecladown 13 //batizado o pino13 de tecladown
//DECLARAcAO DE VARIAVEIS
byte tempo= 10;

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT); //led1 configurado como saída
pinMode(led2, OUTPUT); //led2 configurado como saída
pinMode(teclaup, INPUT_PULLUP); //teclaup configurado como entrada pullup
pinMode(tecladown, INPUT_PULLUP); //tecladown configurado como entrada pullup
}

//FUNÇÕES COMPLEMENTARES

//PROGRAMA PRINCIPAL
void loop() {
tempo -= !digitalRead(teclaup)*10;
tempo += !digitalRead(tecladown)*10;
digitalWrite(led1, HIGH); //led1 aceso
digitalWrite(led2, LOW); //led2 apagado
delay(tempo); //tempo
digitalWrite(led1, LOW); //led1 apagado
digitalWrite(led2, HIGH); //led2 aceso
delay(tempo); //tempo
}
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

Exercicio 1.8 Empty Re: Exercicio 1.8

Qui Ago 18, 2022 9:05 pm
Oi Lucy, o programa funcionou, mas vi que não fez o comentário no principal trecho do programa, que é a função aritmetica, e acho que não entendeu. Então vou explicar como funciona.
1) quando faz tempo += alguma coisa, na verdade está somando o valor do tempo com ele mesmo mais alguma coisa, equivale a tempo = tempo + alguma coisa
2) quando fazemos !digitalRead(tecladown)*10; se a tecla está depressionada, retorna 0, e todo número vezes 0 é igial a zero. Sendo assim tempo + zero é ugual ao proprio tempo e o valor não se altera
3) quando fazemos !digitalRead(tecladown)*10; se a tecla está pressionada, retorna 1, quando fazemos 10 * 1 é igual a 10, e somando ao tempo fica tempo + 10 e o tempode pausa aumenta.
4) Mesma coisa para a operação de redução do tempo.

Então vou dar nota 9.0 e aguardo que faça uma interpretação disso para fazer o comentário.
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos