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

Ir para baixo
Monica Moreno
Monica Moreno
Mensagens : 684
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

resolvido 1.8 Empty resolvido 1.8

Qua Set 09, 2020 4:18 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 tempo= 10; // variavel do tempo

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT); // programado como saida
pinMode(led2, OUTPUT); // programado como saida
pinMode(teclaup, INPUT_PULLUP); // programado como entrada
pinMode(tecladown, INPUT_PULLUP); // programado como entrada
}
//FUNÇÕES COMPLEMENTARES

//PROGRAMA PRINCIPAL
void loop() {
 tempo = (tempo -=  !digitalRead(teclaup)*10); // quando aperta a teclaup acende o led
 tempo = (tempo +=  !digitalRead(tecladown *10); //  quando aperta a tecladown acende o led
digitalWrite(led1, HIGH); // acende o led1
digitalWrite(led2, LOW); // apaga o led2
delay(tempo); //da um tempo entre o acender e o apagar
digitalWrite(led1, LOW);  //apaga o led1
digitalWrite(led2, HIGH); //acende o led2
delay(tempo); //da um tempo entre o acender e o apagar
}

1.8 da semana passada !
1.9 do final de semana
1.10 desta semana
1.11 deste final de semana !

oi prof fiz sozinha eu e a video aula ! Smile Smile Smile Shocked Wink study
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

resolvido 1.8 Empty Re: resolvido 1.8

Sex Set 11, 2020 8:34 pm
Oi Monica, Precisa corrigir uns detalhes nesse programa.

tempo = (tempo -= !digitalRead(teclaup)*10); // Nesse calculo mostrei duas formas de fazer, voce acabou confundindo as duas, reveja a forma de implementar.
tempo = (tempo += !digitalRead(tecladown *10); //Nessa linha foi aberto dois parenteses e fechado somente um, precisa revisar

Nas duas linhas acima também precisa revisar a aplicação dos parenteses, funciona igual na matematica, define a ordem em que as equações devem ser resolvidas, aplicar em local errado pode fazer com que o resultado fique distorcido

Nota 5.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos