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

Ir para baixo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Tópicos Abordados na Aula Empty 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:
Código:

//FUNÇÕES COMPLEMENTARES
void letecla(){
  tempo += (!digitalRead(teclaUp))*100;  
  tempo -= (!digitalRead(teclaDown))*100;
  delay(tempo);
}
Na analise do programa letecla() fizemos as seguintes considerações:

  1. 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.
  2. 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
  3. 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
  4. 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);

  1. 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.
  2. O incremento usando += pode ter o valor ajustado mas se for igual a 1 poderia ser usado o incremento ++ com o mesmo resultado
  3. 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
  4. 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,  Cool

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:

  1. 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
  2. Quando escrevemos num pino digital PWM os valores vão de 0 a 255, pois tem 8 bits de resolução
  3. A função map() ajusta usando regra de 3 para corrigir as variações de entrada conforme a expectativa na saída
  4. Usamos o debug() descrito no ítem 1.2.2 para identificar os valores de entrada e corrigir a escala na saida PWM
  5. Falamos sobre as 3 entradas possíveis, o LDR ( luminosidade), o NTC (temperatura), o TRIMPOT  (posição fisica)
  6. 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
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos