Mudanças entre as edições de "MCO018703 2018 1 AULA11"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 51: Linha 51:
 
[[imagem:Fig031_MCO18703.png|400px|center]]
 
[[imagem:Fig031_MCO18703.png|400px|center]]
  
;Nota: Não podemos utilizar essas portas para outras funções enquanto estivermos utilizando essa shield. O pino 10 também é utilizado pela placa para uma função específica, no caso o backlight, e não deve ser utilizado nos programas.
+
;Nota: Não podemos utilizar essas portas descritas para outras funções enquanto estivermos utilizando essa shield. O pino 10 também é utilizado pela placa para uma função específica, no caso o backlight, e não deve ser utilizado nos programas.
  
 
Para o programa de teste abaixo, é necessário o uso da biblioteca LiquidCrystal, e para determinar qual botão foi pressionado, faremos a leitura da porta analógica A0:
 
Para o programa de teste abaixo, é necessário o uso da biblioteca LiquidCrystal, e para determinar qual botão foi pressionado, faremos a leitura da porta analógica A0:
Linha 91: Linha 91:
 
}
 
}
 
<\code>
 
<\code>
 +
 +
 +
==Desafio==
 +
 +
Tente incluir uma animação no display!
 +
 +
<syntaxhighlight lang=c>
 +
//Rolagem para a esquerda
 +
  for (int posicao = 0; posicao < 3; posicao++)
 +
  {
 +
    lcd.scrollDisplayLeft();
 +
    delay(300);
 +
  }
 +
 
 +
  //Rolagem para a direita
 +
  for (int posicao = 0; posicao < 6; posicao++)
 +
  {
 +
    lcd.scrollDisplayRight();
 +
    delay(300);
 +
  }
 +
<\code>
 +
  
 
=Referências=
 
=Referências=

Edição das 20h20min de 18 de junho de 2018

Apresentação

O objetivo das próximas aulas é o de exercitar a capacidade de vocês trabalharem em equipe na resolução de problemas utilizando o Arduíno. Vamos propor alguns experimentos para vocês "melhorarem" e executarem em sala de aula. Abaixo, apresento algumas tecnologias disponíveis em nosso almoxarifada para que vocês pesquisem e utilizem nas soluções dos problemas. Caso uma equipe conseguir terminar o seu trabalho numa aula, poderá executar testar outra tecnologia.


Prof. Douglas A.

Display LCD 16x2

A shield LCD 16x2 com keypad (teclado) pode ser utilizada para selecionar uma opção em um menu, digitar uma senha ou até mesmo controlar os passos de um robô. As aplicações são as mais diversas. Na Figura abaixo vemos a Shield LCD 16x2 com 5 botões customizáveis.

Fig030 MCO18703.png

Possui um display LCD 16x2 com backlight azul, e 5 botões, além de um botão de reset do Arduino. O ajuste do contraste é feito pelo parafuso do trimpot. Além disso, a placa possui furos para soldagem de barras de pinos, para, por exemplo, colocar um sensor de temperatura.

Esta shield utiliza alguns pinos diferentes dos que usamos normalmente nos projetos para ligar um LCD. Nesta shield teremos que usar a seguinte sequência ao inicializar a biblioteca LiquidCrystal:

LiquidCrystal lcd(8,9,4,5,6,7); // RS,E,D4,D5,D6,D7

A tabela abaixo mostra a relação entre os pinos do Arduino e os sinais do display:

Pino Sinal do Display
4 DB4
5 DB5
6 DB6
7 DB7
8 RS
9 Enable

Os botões da shield usam uma única porta analógica, A0. A Figura abaixo mostra uma associação de resistores para determinar qual botão foi pressionado:

Fig031 MCO18703.png
Nota
Não podemos utilizar essas portas descritas para outras funções enquanto estivermos utilizando essa shield. O pino 10 também é utilizado pela placa para uma função específica, no caso o backlight, e não deve ser utilizado nos programas.

Para o programa de teste abaixo, é necessário o uso da biblioteca LiquidCrystal, e para determinar qual botão foi pressionado, faremos a leitura da porta analógica A0:

<syntaxhighlight lang=c>

  1. include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {

lcd.begin(16, 2);  
lcd.setCursor(0,0);  
lcd.print("Bem vindo!");  
lcd.setCursor(0,1);  
lcd.print("Tecle: ");  

}

void loop() {

int botao;  
botao = analogRead (0);  //Leitura do valor da porta analógica A0
lcd.setCursor(8,1);  
if (botao < 100) {  
 lcd.print ("Direita ");  
}  
else if (botao < 200) {  
 lcd.print ("Cima    ");  
}  
else if (botao < 400){  
 lcd.print ("Baixo   ");  
}  
else if (botao < 600){  
 lcd.print ("Esquerda");  
}  
else if (botao < 800){  
 lcd.print ("Select  ");  
}  

} <\code>


Desafio

Tente incluir uma animação no display!

<syntaxhighlight lang=c> //Rolagem para a esquerda

 for (int posicao = 0; posicao < 3; posicao++)
 {
   lcd.scrollDisplayLeft();
   delay(300);
 }
 
 //Rolagem para a direita
 for (int posicao = 0; posicao < 6; posicao++)
 {
   lcd.scrollDisplayRight();
   delay(300);
 }

<\code>


Referências

[1] https://www.arduinoecia.com.br/2013/08/arduino-shield-lcd-16x2-com-keypad.html

[2]




Icone voltar.png Icone menu.png Icone prox.png