Exercício 1.8
Seg Abr 27, 2020 3: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 chama 3 //Definido que o pino 3 vai se chamar "chama"
#define brisa 4 //Definido que o pino 4 vai se chamar "brisa"
#define teclacima 2 //Definido que o pino 2 vai chamar-se "teclacima"
#define teclabaixo 13 //Definido que o pino 13 vai chamar-se "teclabaixo"
//DECLARAcAO DE VARIAVEIS
byte tempo= 25; //variavel de tempo
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin (9600); //porta serial aberta
pinMode(chama, OUTPUT); //chama está configurada como saida
pinMode(brisa, OUTPUT); //brisa está configurada como saida
pinMode(teclacima,INPUT_PULLUP); //teclacima está configurada como entrada
pinMode(teclabaixo,INPUT_PULLUP); //teclabaixo está configurada como entrada
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
tempo -= !digitalRead(teclabaixo) *50; //quando a teclabaixo for precionada ela tirará velocidade do pisca do led
tempo += !digitalRead(teclacima) *50; //quando a teclacima for apertada ela colocará velocidade no pisca do led
digitalWrite(chama,HIGH); //chama ira acender
digitalWrite(brisa,LOW); //brisa ficará apagada
delay(tempo); //delay ira ser o tempo
digitalWrite(brisa,HIGH); //brisa ira acender
digitalWrite(chama,LOW); //chama ira apagar
delay(tempo); //delay ira ser o tempo
}
* 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 chama 3 //Definido que o pino 3 vai se chamar "chama"
#define brisa 4 //Definido que o pino 4 vai se chamar "brisa"
#define teclacima 2 //Definido que o pino 2 vai chamar-se "teclacima"
#define teclabaixo 13 //Definido que o pino 13 vai chamar-se "teclabaixo"
//DECLARAcAO DE VARIAVEIS
byte tempo= 25; //variavel de tempo
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin (9600); //porta serial aberta
pinMode(chama, OUTPUT); //chama está configurada como saida
pinMode(brisa, OUTPUT); //brisa está configurada como saida
pinMode(teclacima,INPUT_PULLUP); //teclacima está configurada como entrada
pinMode(teclabaixo,INPUT_PULLUP); //teclabaixo está configurada como entrada
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
tempo -= !digitalRead(teclabaixo) *50; //quando a teclabaixo for precionada ela tirará velocidade do pisca do led
tempo += !digitalRead(teclacima) *50; //quando a teclacima for apertada ela colocará velocidade no pisca do led
digitalWrite(chama,HIGH); //chama ira acender
digitalWrite(brisa,LOW); //brisa ficará apagada
delay(tempo); //delay ira ser o tempo
digitalWrite(brisa,HIGH); //brisa ira acender
digitalWrite(chama,LOW); //chama ira apagar
delay(tempo); //delay ira ser o tempo
}
Re: Exercício 1.8
Qua maio 06, 2020 9:34 pm
Daniel, O programa está correto, porém a calibração dos valores não ficou muito adequada, veja abaixo:
byte tempo= 150; //variavel de tempo
tempo += !digitalRead(teclacima) *150; //quando a teclacima for apertada ela colocará velocidade no pisca do led
o tempo inicia com o valor 150, e quando aperta a tecla para cima, soma ao valor da variável 150, então ela deveria ficar com o valor 300, mas só vai até 255, então o valor fica 45.
Como deveria aumentar o valor da variável acabou reduzindo para 45, no próximo clique iria a 195,
Então o valor que está somanto ficou muito alto, precisa colocar entre 10 e 30 para poder controlar a velocidade de forma adequada,
Como o programa não funcionou adequadamente, apesar da lógica estar correta a nota será 7.0.
Pode arrumar que reavalio e melhoro a nota.
byte tempo= 150; //variavel de tempo
tempo += !digitalRead(teclacima) *150; //quando a teclacima for apertada ela colocará velocidade no pisca do led
o tempo inicia com o valor 150, e quando aperta a tecla para cima, soma ao valor da variável 150, então ela deveria ficar com o valor 300, mas só vai até 255, então o valor fica 45.
Como deveria aumentar o valor da variável acabou reduzindo para 45, no próximo clique iria a 195,
Então o valor que está somanto ficou muito alto, precisa colocar entre 10 e 30 para poder controlar a velocidade de forma adequada,
Como o programa não funcionou adequadamente, apesar da lógica estar correta a nota será 7.0.
Pode arrumar que reavalio e melhoro a nota.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|