Tópicos Abordados na Aula
Sáb Mar 30, 2019 6:36 pm
Na aula de hoje aprendemos as funções e os comandos que serão utilizados para resolução dos exercícios 1.8 em diante, segue abaixo:
1.8 - incrementa e decrementa a velocidade
Analisamos o programa usado e localizamos os erros na função abaixo:
1.9 - Sequencial gradual
Neste exercício a resolução parte usando um pino digital PWM para controlar o brilho do led, que vai começar apagado e vai aumentando o brilho até atingir o brilho máximo e em seguida volta a apagar e retomar o ciclo. Usamos o seguinte programa:
Facinho, né... Só fazer o exercício, testar na placa e faturar aquele 10.0. Só não vale me enganar, sei quando publica um exercício que não testou,
1.10 - luz de vela
O mais fácil de todos, só colocar a função random() para brilho e tempo e ajustar os valores para o efeito ficar parecido com uma vela
1.11 , 1.13 , 1.14 - Controle do led, luz, temperatura, trimpot
Aqui falamos sobre a função map() para ajustar as escalas, está na apostila no ítem 1.2.9 , e os detalhes pontuo abaixo:
Com essa explicação será possível resolver os exercícios até 1.15
Agora só falta, tratarmos interrupções e operadores lógicos, fica para a próxima aula, até lá caprichem nos exercícios e resolvam os já propostos
PS. Termina no exercício 1.21 com um programa pessoal, cujo tema vocês vão escolher e podem ir pensando no que apresentar. Falamos de muitas possibilidades e já vai pensando nisso, pois sua graduação está perto.
Ainda faltou
1.16 , 1.17 - Interrupção
1.18, 1.19, 1.20 - Operações lógicas
1.8 - incrementa e decrementa a velocidade
Analisamos o programa usado e localizamos os erros na função abaixo:
- Código:
//FUNÇÕES COMPLEMENTARES
void letecla(){
tempo += (!digitalRead(teclaUp))*100;
tempo -= (!digitalRead(teclaDown))*100;
delay(tempo);
}
- Quando a tecla está de pressionada, devido ao resitor de pullup, seu estado lógico é HIGH ou interpretado como 1. e quando a tecla está pressionada seu estado lógico é LOW ou interpretado como 0.
- Foi usado o operador ! NOT , apostila ítem 1.2.8, para inverter o estado da tecla, ou seja, quando estiver de pressionada vai ler 0 e quando pressionada vai ler 1
- O operador += e o -= estão descritos na apostila ítem 1.2.8 e correspondem a operação de soma e atribuição, então temos a seguinte situação;
3.1 Tecla UP depressionada ==> leitura HIGH 1 ==> com ! na frente ==> leitura LOW 0 ==> 0 x 100 = 0 ==> tempo = tempo + 0 ==> tempo não alterou
3.2 tecla UP pressionada ==> leitura LOW 0 ==> com ! na frente ==> leitura HIGH 1 == 1 x 100 = 100 ==> tempo = tempo + 100 ==> tempo aumentou
3.3 Tecla DOWN depressionada ==> leitura HIGH 1 ==> com ! na frente ==> leitura LOW 0 ==> 0 x 100 = 0 ==> tempo = tempo - 0 ==> tempo não alterou
3.4 tecla DOWN pressionada ==> leitura LOW 0 ==> com ! na frente ==> leitura HIGH 1 == 1 x 100 = 100 ==> tempo = tempo - 100 ==> tempo diminuiu - logo em seguida é colocado um atraso com a função delay(tempo); logo se o tempo aumentou ou diminuiu afeta o delay, visualmente os leds piscam mais rápido ou mais devagar.
1.9 - Sequencial gradual
Neste exercício a resolução parte usando um pino digital PWM para controlar o brilho do led, que vai começar apagado e vai aumentando o brilho até atingir o brilho máximo e em seguida volta a apagar e retomar o ciclo. Usamos o seguinte programa:
- Código:
brilho += 1;
analogWrite(led, brilho);
delay(10);
- Nesse programa a cada ciclo o brilho é incrementado e o valor controla o brilhho do led usando a função analogRead() num pino digital PWM.
- O incremento usando += pode ter o valor ajustado mas se for igual a 1 poderia ser usado o incremento ++ com o mesmo resultado
- vimos também que o valor vai até 255, logo quando o brilho atinge 255 o próximo incremento é 0 , apagando o led e retomando o ciclo
- o delay controla a frequencia que o efeito é apresentado
Facinho, né... Só fazer o exercício, testar na placa e faturar aquele 10.0. Só não vale me enganar, sei quando publica um exercício que não testou,
1.10 - luz de vela
O mais fácil de todos, só colocar a função random() para brilho e tempo e ajustar os valores para o efeito ficar parecido com uma vela
1.11 , 1.13 , 1.14 - Controle do led, luz, temperatura, trimpot
Aqui falamos sobre a função map() para ajustar as escalas, está na apostila no ítem 1.2.9 , e os detalhes pontuo abaixo:
- Quando fazemos a leitura nos pinos analógicos os valores vão de 0 a 1024, pois tem 10 bits de resolução, e essa é a faixa de valores apresentados
- Quando escrevemos num pino digital PWM os valores vão de 0 a 255, pois tem 8 bits de resolução
- A função map() ajusta usando regra de 3 para corrigir as variações de entrada conforme a expectativa na saída
- Usamos o debug() descrito no ítem 1.2.2 para identificar os valores de entrada e corrigir a escala na saida PWM
- Falamos sobre as 3 entradas possíveis, o LDR ( luminosidade), o NTC (temperatura), o TRIMPOT (posição fisica)
- Falamos também que o valor obtido pode ser usado para controlar uma sáida PWM, que associamos ao brilho do led, ou um tempo para controlar a velocidade do sequencial, como solicitado em alguns dos exercícios.
Com essa explicação será possível resolver os exercícios até 1.15
Agora só falta, tratarmos interrupções e operadores lógicos, fica para a próxima aula, até lá caprichem nos exercícios e resolvam os já propostos
PS. Termina no exercício 1.21 com um programa pessoal, cujo tema vocês vão escolher e podem ir pensando no que apresentar. Falamos de muitas possibilidades e já vai pensando nisso, pois sua graduação está perto.
Ainda faltou
1.16 , 1.17 - Interrupção
1.18, 1.19, 1.20 - Operações lógicas
Permissões neste sub-fórum
Não podes responder a tópicos
|
|