Escolar Documentos
Profissional Documentos
Cultura Documentos
ArduinoLcdSensorIR
Projeto: ArduinoLcdSensorIR
A única dificuldade encontrada foi a curiosa pinagem do LCD, que reproduzo abaixo
(observe as posições anômalas dos pinos 15 e 16); a seqüência é 16 – 15 – 1 – 2 – 3 – 4 – 5 – 6 –
7 – 8 – 9 – 10 – 11 – 12 – 13 – 14. Não sei se é uma regra geral para este tipo de LCD ou se
depende do fabricante, mas tome cuidado!
Os pinos são:
Pino Descrição
1 Ground
2 VCC (+5V)
3 Contrast adjustment
4 Register Select (R/S)
5 Read/Write (R/W)
1
ArduinoLcdSensorIR - Karl Heinz Benz
6 Clock (Enable)
7 Data 0
8 Data 1
9 Data 2
10 Data 3
11 Data 4
12 Data 5
13 Data 6
14 Data 7
15 Backlight Anode (+)
16 Backlight Cathode (-)
/*
LiquidCrystal Library - Hello World
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
2
ArduinoLcdSensorIR - Karl Heinz Benz
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
O resultado, conforme a mesma referência, deve ser (1 hora e pouco, ou 5.171 segundos
após ser ligado):
Se não funcionar, verifique as conexões; se você estiver usando outro modelo de LCD, a
pinagem poderá ser diferente. Ajuste o potenciômetro para a luminosidade ideal. Experimente
outros textos, na primeira e segunda linhas, sempre lembrando da limitação de 16 letras por linha
(com este modelo de LCD, claro).
Importante: não continue a montagem se você não conseguiu obter sucesso com o display
LCD. Aumentar a complexidade do problema não irá aumentar suas chances de sucesso, muito
pelo contrário.
3
ArduinoLcdSensorIR - Karl Heinz Benz
O sensor IR GP2Y0A02
Um detalhe relevante é que este sensor retorna uma informação ambígua em certas
condições, conforme o gráfico 1 - ou seja, abaixo de aproximadamente 20 cm de distância, suas
leituras não são confiáveis. Em outras palavras, o sensor mede, de forma confiável, distâncias
entre 20 e 150 cm. Isto deve ser levado em conta na hora de montar o sensor em algum
dispositivo robótico.
Gráfico 1
4
ArduinoLcdSensorIR - Karl Heinz Benz
Gráfico 2
O resultado, neste caso, não é enviado ao LCD, mas sim ao computador, via interface
serial (comando Serial.println(distance);). Você pode fazer as adaptações necessárias.
5
ArduinoLcdSensorIR - Karl Heinz Benz
Observa-se facilmente que, após os 150 cm, a medição se torna completamente imprecisa,
pois praticamente não há mais variação da tensão de entrada em função da distância.
Gráfico 3
6
ArduinoLcdSensorIR - Karl Heinz Benz
/*
Projeto: ArduinoLcdSensorIR
Data: 27/06/2010
http://creativecommons.org/licenses/by-nc-sa/3.0/br/
http://www.arduino.cc/en/Tutorial/LiquidCrystal
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
*/
#include <LiquidCrystal.h>
float VLido;
float Distancia;
float DInf;
float DSup;
float VInf;
float VSup;
void setup() {
// configuração inicial do LCD (16 colunas, 2 linhas)
lcd.begin(16, 2);
// posiciona o cursor (coluna 0, linha 0)
7
ArduinoLcdSensorIR - Karl Heinz Benz
lcd.setCursor(0, 0);
// envia mensagem ao LCD
lcd.print("Sharp GP2Y0A02YK");
}
void loop() {
// O valor do sensor deve ser multiplicado pelo valor da tensão de alimentação (3.3 ou 5V)
// e dividido por 1024
float VLido = analogRead(IRpin) * 0.0048828125; // valor do sensor * (5 / 1024)