papybricol:
Bonjour,
Je voudrai utiliser un afficheur en mode I2C(il fonctionne bien avec Cubloc ou Picaxe).
J'ai ajouté les 2 résistances 4,7k de tirage au 5V.
Mais je débute avec la librairie Wire. Et c'est loin d'être clair dans ma tête!
Pour envoyer des datas à l'afficheur est-ce WRITE ou SEND? J'utilise Arduino 23.
L'adresse de l'afficheur est 0x00
Faut-il mettre byte?
La doc de l'afficheur impose:
adresse: &H00
envoyer 3 fois (0) pour une initialisation correcte
&H1B puis &H43 pour effacer écran
etc...
1° essai avec le code ci-dessous: rien ne s'affiche, l'écran et le curseur sont actifs.
#include <Wire.h>
Wire.begin();
void affichLCD()
{
Wire.beginTransmission(0);
Wire.send(byte(0x00));
Wire.send(byte(0x00));
Wire.send(byte(0x00)
Wire.send("bonjour");
Wire.endTransmission();
delay (1000);
}
Merci de m'éclairer....
bonjour
Je ne suis pas spécialiste de l'I2C mais j'ai quelques afficheurs (4 X 7 segments drivé par SAA1064)
et ça roule bien
voir si un/des petit delay n'est pas nécessaire apres le Wire.begin() ?
c'est quoi comme afficheur ? datasheet de l'afficheur ?
le code de base que j'utilise sans me poser (trop) de question
/*include the i2c lib */
#include <Wire.h>
/* define the SAA1064 i2c address */
const int address = 0x38;
/* defining the digits 1 to 9*/
const int numbers[11] = { 4+2, 64+16+8+2+1, 64+8+4+2+1, 64+32+4+2, B10110100, B11111110, B10101111, B00111000, B10111111, B10111101,B00000000};
/* defining the buffer wich is going to loop trough transmission */
/*buffer[6] = {instructionbyte, contollbyte, digit 1, digit 2, digit 3,digit 4};*/
unsigned char buffer[6] = {0x00, B01000111, numbers[0], numbers[1], numbers[2],numbers[3]};
void setup(){
/* connect i2c */
Wire.begin();
/* keep it relaxe... */
delay(50);
}
void loop() {
/* begin transmission with SAA1064 */
Wire.beginTransmission(address);
/* loop buffer though transmission */
for(int i = 0; i < 7; i++) Wire.send((byte)buffer[i]);
/* end transmission */
Wire.endTransmission();
/* delay */
delay(50);}