ATtiny85 + I2C + LCD
Pilotiamo un display LCD con un microcontrollore ATtiny85 attraverso il protocollo I2C
In questa guida mostreremo come gestire al meglio un display LCD sfruttando solamente due pin (SDA e SCL) di un microcontrollore ATtiny85.
Prima di procedere è importante:
- Aver installato Arduino IDE aggiornato e predisposto all’utilizzo dei dispositivi ATtiny (qui la nostra guida: Arduino IDE vs ATMEL ATtiny)
- Aver a portata di mano le informazioni contenute nel nostro articolo ATMEL ATtiny25/45/85 con Arduino
Librerie necessarie:
- LiquidCrystal_ATtiny
- TinyWireM (installabile da Sketch -> #inlcude libreria -> Gestione librerie…)
Materiale necessario:
- ATMEL ATtiny85 https://amzn.to/2RvWaxB
- Programmatore: https://amzn.to/2CWKIag
- ArduinoIDE: https://www.arduino.cc/en/Main/Software
Procedimento:
Per prima cosa apriamo l’IDE di Arduino e nella tendina “Strumenti” impostiamo correttamente il nostro microcontrollore ATtiny85. Tipicamente io utilizzo le seguenti impostazioni:
Una volta impostato il dispositivo scriviamo il Bootloader (sempre dalla tendina Strumenti). Una volta completata l’operazione procediamo con l’installazione, tramite archivio ZIP, della libreria. Arrivati a questo punto ci basterà scrivere lo sketch a nostro piacimento stando attenti a:
1. Includere la libreria nel progetto
#include <TinyWireM.h> #include "LiquidCrystal_attiny.h"
2. Dichiarare il display e il relativo indirizzo per il protocollo I2C
LiquidCrystal_I2C lcd(0x27,20,4);
dove 0x27 è l’indirizzo (tipicamente fornito dal venditore nella descrizione dell’oggetto acquistato), 20 sono il numero di caratteri orizzontali e 4 i numero di righe del display. Ovviamente tali dati vanno modificati a seconda del display.
SKETCH ESEMPIO:
#include #include "LiquidCrystal_attiny.h" LiquidCrystal_I2C lcd(0x27,20,4); int i = 0; void setup() { lcd.init(); lcd.backlight(); lcd.clear (); lcd.setCursor ( 0, 0 ); lcd.print("RIGA 1"); lcd.setCursor ( 0, 1 ); lcd.print("RIGA 2"); lcd.setCursor ( 0, 2 ); lcd.print("RIGA 3"); } void loop() { lcd.setCursor ( 0, 3 ); lcd.print(i); i=i+1; delay(1000); }
SCHEMA ELETTRICO:
Come possiamo notare dal pinout i terminali interessati sono il 7 per la connessione SCL e il pin 5 per la connessione SDA. Come da pressi è necessario inserire tra SDA e VCC, e tra SCL e VCC una resistenza di pull-up dal valore di 470 ohm.