ultimo aggiornamento 30 marzo 2012

 
Si tratta di uno shield con un display LCD integrato (2 Righe/16 Caratteri) commercializzato dalla Homotix completato con una con una piccola tastiera.
Lo shield può essere utilizzato su schede Arduino o Arduino compatibili.
I display con logica di controllo HD44780 sono caratterizzati da un bus parallelo ad 8 bit per l'invio dei dati, questo bus può funzionare anche a 4 bit serializzando l'invio dei bit più significativi a quelli meno significativi, ed ulteriori 3 pin di controllo necessari per l'abilitazione delle diverse aree di memoria o per inviare il segnale di enable.
Il trimmer da 10k regola la retroilluminazione.
I due pin BACKLIGHT, presenti se il LCD è dotato di retroilluminazione possono essere connessi direttamente all'alimentazione tramite una resistenza di limitazione, oppure connessi al transistor che opportunamente comandato dal processore ne può comandare l'accensione o lo spegnemmo. Inoltre se questo è comandato con un impulso PWM ( Pulse-Width Modulation) ne può variare la luminosità.      Il pin RW è "forzato" a massa (solo scrittura) così da risparmiare un collegamento.
 

homotix

Pin utilizzati
Pin

Funzione

Analog 0 Pulsanti (select, up, right, down and left)
Digital 4 DB4
Digital 5 DB5
Digital 6 DB6
Digital 7 DB7
Digital 8 RS (Data or Signal Display Selection)
Digital 9 Enable
Digital 10 Controllo retroilluminazione
+5V Alimentazione +5V
GND Alimentazione GND

 

 

 

 

 

Modulo LCD leypad - Fronte

Modulo LCD leypad - retro

Interfaccia tastiera
La tastiera stile joystick è costituito da 5 tasti - per selezionare, su, destra, in basso ea sinistra. Per salvare i pin IO digitale, l'interfaccia di tastiera utilizza un solo canale ADC. Il valore della chiave viene letto attraverso un partitore di tensione 5 stadi come illustrato di seguito.
Quando si preme un tasto, l'ADC legge il valore di tensione attraverso il partitore di tensione, la tensione è il valore rispetto ai valori soglia di tensione memorizzati in un array per identificare quale tasto viene premuto.

Inserimento corretto dello shield

Inserimento non corretto dello shield

Xona con i vari tasti abbinabili a varie funzioni, il trimmer permette di variare il contrasto del dsplay

Il connettore ausiliario permette di connetetre con altri circuiti i pin inutilizzati

Circuito elettrico
 
 
Elenco componenti
 
R1: 2,2 kΏ 1/4W Varie
R2: 330 Ώ 1/4W CS codice HMT-LCDS01
R3: 680 Ώ 1/4W 6 Pulsanti da CS
R4: 1 kΏ 1/4W Strip maschio 2 poli 90° (1 pezzo) + 1 ponticello
R5: 3,3 kΏ 1/4W Strip maschio 8 poli (2 pezzi)
R6: 10 Ώ 1/4W Strip maschio 6 poli (3 pezzi)
CONTRASTO: 10 kΏ trimmer Strip maschio 5 poli (1 pezzo)
TR: Transistor NPN tipo 2N3904 Strip maschio 16 poli (1 pezzo)
LCD1: LCD 1x16 tipo RC162051 APEX Strip femmina 16 poli (1 pezzo)
 
RC162051YFHLYB - Display LCD 16 caratteri x 2 linee con retroilluminazione

Piedinatura Datasheet display RC162051YFHLYB Foto

Transistor  2N3904 SMALL SIGNAL NPN TRANSISTOR
  
Piedinatura Datasheet Foto del transistor
 

MONTAGGIO DELLA SCHEDA

Per la realizzazione dell'unità occorre fare riferimento al piano di montaggio Per la saldatura si utilizzerà un piccolo saldatore a punta fine, della potenza di circa 25 – 30 W. S’inizierà dalle resistenze proseguendo con i pulsanti, il trimmer, il transistor, e finendo con i pin-strip.
Occorrerà anche saldare al display LCD un connettore pin strip femmina 1x16. Se si vuole avere l’illuminazione sempre attiva occorre montare il ponticello sul Jumper JP1.

Collaudo del modulo display
 
Per verificare il funzionamento del modulo display di può utilizzare il programma Test_LCD-keypad_homotix.pde che permette di verificare il corretto riconoscimento dei tasti. Nel caso non si leggesse nulla sul display regolare il contrasto agendo sul trimmer presente sul modulo.
E' possibile inoltre utilizzare il programma brightness_homotix.pde per testare la retroilluminazione.
 
 
 
/*
 Test_LCD-keypad_homotix.pde
 Il programma permette di verificare il funzionamento del
 display LCD e del Keypad.
 Sul display viene mostrato il nome del tasto premuto
 
 Vengono utilizzati i seguenti pin
 Pin +5V         -> Alimentazione
 Pin GND         -> Alimentazione
 Pin Digital 13  -> Bus D4 dati LCD
 Pin Digital 12  -> Bus D5 dati LCD
 Pin Digital 11  -> Bus D6 dati LCD
 Pin Digital 10  -> Bus D7 dati LCD
 Pin Digital 7   -> terminale RS display LCD
 Pin Digital 8   -> terminale EN display LCD
 Pin Digital 9   -> attivazione retroilluminazione
 Pin Analogico 0 -> lettura keypad
 
 Creato il 18/3/2012
 da Adriano Gandolfo <https://www.adrirobot.it>
 per <http://www.homotix.it>
 This example code is in the public domain.
 */
#include <LiquidCrystal.h>  //richiama la libreria per utilizzo LCD

// Selezione dei pin utilizzati dal display LCD
// Sintassi LiquidCrystal(rs, enable, d4, d5, d6, d7) 

LiquidCrystal lcd(7, 8, 13, 12, 11, 10);

// defininizione dei valori utilizzati da pulsanti
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

int read_LCD_buttons()  // lettura del pulsante
{
  adc_key_in = analogRead(0);   // lettura del valore
  if (adc_key_in > 1000) return btnNONE;
  if (adc_key_in < 50)   return btnRIGHT;  
  if (adc_key_in < 890)  return btnUP; 
  if (adc_key_in < 920)  return btnDOWN; 
  if (adc_key_in < 945)  return btnLEFT; 
  if (adc_key_in < 985)  return btnSELECT;   
  return btnNONE;
}
void setup()
{
  pinMode(10, OUTPUT);       //ricordarsi di attivarlo come uscita
  analogWrite(10, 90);
  lcd.begin(16, 2);          // inizializzazione libreria
  lcd.setCursor(0, 0);
  lcd.print("Valore AN :     "); // Scrittura messaggio
}
void loop()
{
  lcd.setCursor(0,0);
    // Cancellazione riga
  lcd.print("                  ");
    //reset the cursor to first char, second line
  lcd.setCursor(0, 0);
  lcd.print("Valore AN : "); // Scrittura messaggio
  lcd.print(adc_key_in);         // mostra il valore letto in analogico
  lcd.setCursor(0,1);            // spostamento cursore
  lcd.print("Tasto: "); // Scrittura messaggio
  lcd_key = read_LCD_buttons();  // Lettura del tasto premuto
  switch (lcd_key)               // in base al valore letto mostra un diverso messaggio
  {
  case btnRIGHT:
    {
      lcd.print("DESTRA    ");
      break;
    }
  case btnLEFT:
    {
      lcd.print("SINISTRA  ");
      break;
    }
  case btnUP:
    {
      lcd.print("SU        ");
      break;
    }
  case btnDOWN:
    {
      lcd.print("GIU'      ");
      break;
    }
  case btnSELECT:
    {
      lcd.print("SELEZIONE");
      break;
    }
  case btnNONE:
    {
      lcd.print("NESSUNO  ");
      break;
    }
  }
}
 
Elenco revisioni

30/03/2011

Emissione preliminare
Private Policy Cookie Policy