Pages: [1]   Go Down
Author Topic: Afficheur I2C  (Read 1278 times)
0 Members and 1 Guest are viewing this topic.
Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
#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....
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Offline Offline
Faraday Member
**
Karma: 33
Posts: 5044
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
#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

Code:
/*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);}
« Last Edit: January 22, 2012, 08:21:59 am by Artouste » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Ce serait possible d'avoir la référence de l'afficheur en question ?
Je suppose que c'est un afficheur en provenance de lextronic vu que tu parle de cubloc/... ?

Adresse I2C : 0x00 !? Tu est sur de toi ? 0x00 fait partie des adresses I2C réservé, donc normalement aucun fabricants ne devrait utiliser cette adresse.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous les 2, je vais m'y remettre.
D'ailleurs je viens de me rendre compte, qu'avec Picaxe, pour l'adresse 0 je mettais 1( dû? à l'octet d'écriture 8bits  finissant par 1?).

L'afficheur, c'est un CLCD204-BLB
pour l'adresse en mode I2C, voir la page 7et 8 du doc joint.
Les switchs de config de l'adresse du module sont bien sur l'adresse 0.
C'est vrai ce que tu dis,Skywodd, pour les adresses réservées. Ces afficheurs,qui datent peut-être, semblent  hors de la norme (actuelle?)
Ils sont parfaits avec Cubloc (surtout en mode Cunet), acceptables avec Picaxe (petits défauts d'affichage contournables).
Etant maintenant Arduiniste, j'essaie de récupérer, réemployer...le possible.

 

* CLCD.pdf (356.73 KB - downloaded 19 times.)
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Offline Offline
Faraday Member
**
Karma: 33
Posts: 5044
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous les 2, je vais m'y remettre.
D'ailleurs je viens de me rendre compte, qu'avec Picaxe, pour l'adresse 0 je mettais 1( dû? à l'octet d'écriture 8bits  finissant par 1?).

L'afficheur, c'est un CLCD204-BLB
pour l'adresse en mode I2C, voir la page 7et 8 du doc joint.
Les switchs de config de l'adresse du module sont bien sur l'adresse 0.
C'est vrai ce que tu dis,Skywodd, pour les adresses réservées. Ces afficheurs,qui datent peut-être, semblent  hors de la norme (actuelle?)
Ils sont parfaits avec Cubloc (surtout en mode Cunet), acceptables avec Picaxe (petits défauts d'affichage contournables).
Etant maintenant Arduiniste, j'essaie de récupérer, réemployer...le possible.

 

bonsoir
OK
vous avez fureté là ?
http://www.pobot.org/Ecran-CLCDxxx-sur-I2C-avec-Arduino.html
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

Pour l'adresse I2C,  la notice de l'afficheur indique qu'avec les 3 bits du commutateur DIL on peut la définir de 0 à 7...... Il y a le choix !

L'adresse 0 est en théorie une adresse à part comme indiqué par skywood, c'est l'adresse "d'appel général" et seuls certains périphériques savent y répondre.

Dans le cas de cet afficheur qui est un produit plutôt 'amateur' et certainement pas référencé comme I2C 'officiel' l'adresse 0 est peut être gérée comme une adresse ordinaire. le probleme pourrait survenir plus tard si un périphérique 'standard' est ajouté sur le bus et se met à réagir à cette adresse 'appel général"
Tant que l'afficheur est seul  périphérique sur le bus peut être pas de pb s'il est 'étudié pour' et si l'Arduino s'en accommode...
« Last Edit: January 22, 2012, 04:08:12 pm by al1fch » Logged

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Artouste

Sympa comme lien. J'en profite pour commencer à comprendre comment fonctionnent les librairies.
En y fouillant,  l'adresse du CLCD semble bien être 0x00.
J'y retrouve le protocole en hexa des commandes.
Je vais refaire le montage et retester tout cela. Avec librairie CLCD ce sera pour l'usage courant. C'est trop pratique: merci la communauté!

Mais d'abord en direct avec wire seule, je suis du genre têtu et je veux savoir comment ça marche!
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Offline Offline
Faraday Member
**
Karma: 33
Posts: 5044
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Mais d'abord en direct avec wire seule, je suis du genre têtu et je veux savoir comment ça marche!
...
bonsoir
Cela procède d'une bonne démarche intellectuelle  smiley-mr-green

Le bout de code simple pour le SAA1064 + haut (me) semble facilement adaptable pour faire de l'expérimentation   smiley-cool
Logged

Bretagne
Offline Offline
Full Member
***
Karma: 2
Posts: 196
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset




Bonsoir,
grace à vous j'avance
Merci

ça marche avec ce code tout simple, depuis que j'ai vérifié le "chevelu" au dessus de la breadboard, Il manquait un fil!
ça m'apprendra à laisser des tas de circuit (inutiles pour le test en cours) sur la même planche
Code:
Wire.begin();   
   Wire.beginTransmission(0x00);
   Wire.send("Salut");
    Wire.endTransmission();

Avec la librairie CLCD y a pas photo pour afficher.

Mais toujours coupeur de cheveu en 4, avant cette librairie et "print", comment faisait-on pour convertir une variable int ou long, signée ou non en chr pour l'envoyer byte par byte avec send?
Connaissez-vous un bon tutoriel pour débutant sur la classe String?
Logged

...ils embarquèrent la logique, coupèrent les cordons, alors, libérés de leurs chaînes, une immensité s'ouvrait devant eux...

Pages: [1]   Go Up
Jump to: