buonasera a tutti
lo so immagino siate stanchi di leggere post in cui si chiede aiuto per l'interfaccia i2c su un lcd.
Mi trovo tuttavia costretto a chiedere aiuto perchè nonostante le mie ricerche sul forum e in generale su internet non riesco proprio a risolvere il mio problema.
Da qualche settimana sono sto cercando di programmare il mio arduiono due per comandare un'apparecchiatura.
Acquisto anche un lcd 20x4 che collego direttamante a 12 fili per mostrami le temperature, tuttavia mi accorgo che una volta attivato il tutto quest'ultimo comincia ad avere problemi di interferenze (mostra ogni tanto caratteri strani ect) quindi mi viene consigliato di provare il collegamento i2c
mi prendo uno di questi
e provo a smanettarci un po
dopo un bel po di tentativi vari, post letti, ricerche eseguite, sono ancora al punto di partenza il mio lcd non visualizza nessun messaggio
Ora lanciando i2c scanner su che l'indirizzo del mio dispositivo è 27x0;
guardando LCD blue i2c vedo che il mio modulo rispecchia il 1° tipo e copio il codice di prova;
scarico la newliquidcrystal avendo cura di eliminare prima le librerie della liquidcrystal classica;
provo il tutto e nulla
muovo il potenziometro e vedo correttamente i 32 quadratini bianchi torno leggermente indietro e nulla
ora il codice che utilizzio è questo:
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 16 chars 2 line display
// A FEW use address 0x3F
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//NONE
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Use Serial Mon");
lcd.setCursor(0,1);
lcd.print("Type to display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
L'unico effetto che vedo è l'accensione e rapido spegnimento della backlight per 3 volte come da prime righe del setup
Ho provato per scrupolo anche gli altri codici caricati nella pagina LCD blue ma nulla
Ho ricontrollato i cavi ma sembra tutto corretto
IL dubbio che mi è venuto è che effettivamente la newliquid funzioni correttamente con arduino 2 ma non trovo nulla a riguardo
Vi ringrazio in anticipo per l'aiuto