ciao a tutti
ho comprato un display seriale della Devantech di cui questo è il datasheet LCD03, e vorrei pilotarlo con il protocollo i2c tramite la libreria Wire. Il punto è che non riesco, l'indirizzo del dispositivo è 0xC6 ma quello che non capisco è il formato con cui dare i comandi. Qualcuno mi può suggerire come dare ad esempio il comando 12 per cancellare lo schermo?
grazie
Prova così
#include <Wire.h>
void setup()
{
Wire.begin();
}
void loop()
{
delay (1000); // wait 1 seconds
Wire.beginTransmission(0x63); // DEFAULT ADDRESS 0XC6/2
Wire.send(0x0); // Command registe
Wire.send(0xc); // Clear screen
Wire.endTransmission();
}
Fantastico!
Grazie Eugenio, funziona, in effetti è un protocollo semplicissimo! Ma perchè hai dimezzato l'indirizzo?
Di nulla.
Perchè Wire.beginTransmission funziona a 7 bit, mentre il tuo indirizzo è a 8 bit.
mi sa che questa cosa dei bit me la devo studiare...
comunque ti ringrazio, sei stato gentilissimo
Dario
...ho capito: passando da 8 a 7 bit si toglie l'ultimo numero e quindi in binario si passa da 11000110 (198 dec) a 1100011 (99 dec) che appunto è la metà...
Prova a definire i comandi come qui sotto
#define cursorHome 1
#define cursorHide 4
#define cursorUnderline 5
#define cursorBlink 6
#define backSpace 8
#define tab 9
#define cursorUp 11
#define cursorDown 10
#define clearScreen 12
#define carriageReturn 13
#define clearColumn 17
#define tabSet 18
#define lightOn 19
#define lighOff 20
Poi definisci questa funzione:
void lcdCommand(byte addr, byte command)
{
Wire.beginTransmission(addr);
Wire.send(0);
Wire.send(command);
Wire.endTransmission();
}
e la usi così:
lcdCommand(0x63, lightOn);