Pages: [1] 2 3   Go Down
Author Topic: Connections I2C Afficheur + clavier  (Read 6165 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour.

En provenance de mon boulot, j'ai récupéré des afficheurs devenus obsolète, c'est un afficheur classique 2*16 caractères comme ceux vendu pour l'arduino et que je possède déjà pour mes essaies mais avec en plus un clavier 3 boutons + 2 petites leds monter sur le lexan. Le tout réuni sur une carte pour dialoguer en I2C.

J'ai récupérer la bibliothèque pour dialoguer en IC2 avec les afficheurs I2C vendu pour l'arduino. Mais la j'ai les boutons et Leds en plus.

N'aillant pas encore beaucoup travaillé l'I2C, à part le petit module au lycée, je ne sais pas exactement par ou commencer.

Qu'est ce qu'il me faut pour dialoguer avec ce type de système? Et est-ce possible déjà? Y a t'il de la doc a avoir pour que je puisse trouvé ce qu'il me manque? etc.. (les adresses ou d'autres données)

Merci de m'aiguiller un peut pour le fonctionnement de l'I2C.
« Last Edit: December 16, 2010, 05:12:36 am by Christophe37 » Logged

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux commencer par scanner le bus I2C tu trouveras ainsi l'adresse du module.
Ensuite il faut déterminer si c'est un contrôleur I2C classique (un chip connu) ou un micro-contrôleur programmé en slave I2C.
Il y a de grande chance que ce soit un chip I2C, si tu arrives à lire sa référence tu trouveras la doc par google.
Ensuite reste à savoir comment il a été branché ... prendre une loupe et essayer de refaire le schéma.

Tu peux t'inspirer de celui que je revends :
http://www.zartronic.fr/lcd-shield-pour-arduino-p-125.html

A+ Teiva

www.Zartronic.fr : Votre source Arduino en France
Logged


www.Zartronic.fr : Arduino & Robotique

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci, j'ai le LCD Shield avec les boutons en m'a procession.
En ce qui concerne le composant I2C c'est pas facile à voir car il est positionné derrière le LCD, mais sa c'est pas un problème car je peut avoir les doc et je peut demander au développeur qui l'utilisait.

Mais ma demande concerne donc plus sur ce qu'il me faut comme info pour pouvoir l'utilisé avec l'ardino ainsi je pourrais la demander au développeur.
Donc pour le moment il faut que je connaisse l'adresse du module, le type de contrôleur et sont câblage.

Mais j'arrive pas encore bien avoir ce qu'il faut pour interagir avec.
Par exemple il faut une adresse pour localisé le composant mais après il faut lui dire ce que tu veux lui faire faire. Lire les boutons, allumer la led, ou envoyer un texte à l'afficheur. Il y a donc l'adresse du chip et après il y a surement le registre à connaitre qui doit être lier à son câblage.

Pour moi l'avantage d'utiliser ce module afficheur c'est qu'il est dans son boitier plastique que je peut l'intégrer facilement dans mon meuble et qu'il possède 3 boutons  et 2 leds sur le lexan ce qui est parfait pour ce que je veut en faire. Et en plus il est gratuit
« Last Edit: December 16, 2010, 07:35:33 am by Christophe37 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est bien un microcontroleur ATTINY2313.

J'ai récupéré la doc, et le protocole pour attaquer le microcontroleur, les adresses du registre.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec la documentation que j'ai,
L'adresse du contrôleur I2C de la carte afficheur est 0x23.

Le registre des Boutons est 0x10: sur un Byte
Byte 0:
   b0:       1 = Button 1 (left) down.
   b1:       1 = Button 1 down for at least 1s.
   b2:       1 = Button 2 (middle) down.
   b3:       1 = Button 2 down for at least 1s.
   b4:       1 = Button 3 (right) down.
   b5:       1 = Button 3 down for at least 1s.
   b6, b7: Reserved, read as zeroes.

Le rétroéclairage est 0x20: 1 Byte
Byte 0:
      0 = Backlight OFF
      1 = Backlight ON

le contrast est 0x21: 1Byte
Byte 0:
      0 (minimum) to 255(maximum)

Les Leds 0x22: 1 byte
Byte 0:
      b0:       0 = Led1 (red) OFF
            1 = Led1 ON
      b1-3: flashing period index for Led1
        b4:       0 = Led2 (green) OFF
            1 = Led2 ON
      b5-7:flashing period index for Led2

Flashing period index      Cycle delay (s)
0      (infinite)
1      0.32
2      0.64
3      0.96
4      1.28
5      1.60
6      1.92
7      2.24


Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Excuser moi, j'ai était coupé dans mon élan lors de mon précédent post, Donc comme je disais, j'ai récupéré la documentation et j'ai noté quelques infos.

Est-ce que vous pouvez m'indiquer la démarche pour utiliser mon afficheur clavier, vu que c'est un système pas conçu a l'origine pour l'arduino je suppose que les bibliothèque d'origine doivent être modifier
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Personne pour m'aider a me lancer.

Un informaticien à mon boulot m'a dit que la gestion de l'I2C n'était pas évidente.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3599
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pourtant c'est très simple avec l'arduino :

http://arduino.cc/en/Reference/Wire
Exemple : http://www.instructables.com/id/I2C-between-Arduinos/
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup, je vais pouvoir avancer. Il est vrai qu'en BTS IRIS on voit malheureusement que très peut l'I2C, pourtant indispensable.

Merci en tout cas.
« Last Edit: December 24, 2010, 07:40:01 am by Christophe37 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je n'arrive pas a ouvrir tout les liens des "pages suivante" dans les exemples, mais cela viens peut être de la connections à mon boulot qui est restreinte.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour et joyeux Noel.

J'aurais besoin d'aide s'il vous plai pour m'aider à comprendre le fonctionnement de l'I2C.


Si j'ai bien compris mon arduino est un maître, donc apparemment lors de la déclaration j'ai pas d'adresse à mettre. Puis je dois déclarer :
Wire.beginTransmission avec l'adressage de mon afficheur en mode decimal.

Ensuite j'ai juste à lire les données comme pour les boutons par exemple, je doit donc lui écrire 0x10 en décimal et il me répond les par le code représentant les boutons?

Et pour lui affecter une valeur, je vois pas trop. Par exemple pour le contraste:
Je doit lui dire que je veux le registre 0x21 puis lui donner la valeur que je veuille qu'il soit. Mais de quelle manière s'il vous plaie

Idem pour l'affichage des lignes faut que je regarde sur quelle adresse lui envoyer
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

tu devrais trouver les info que tu cherches ici : tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/
(il n'y a pas de www dans l'adresse)

Désolé de ne pas mettre l'adresse en lien mais comme c'est mon 1er post, je n'ai pas le droit

Serge
« Last Edit: December 28, 2010, 08:57:08 am by Le_Pnume » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

Je viens de faire l'essai de mon afficheur mais il ne veut rien savoir.

Mais j'ai avant d'aller plus loin 2 questions, en I2C j'utilise déjà la carte miniBoard avec la DS1307.
http://www.futurlec.com/Pictures/ET-MINI_DS1307_600.jpg
Pour l'utiliser j'utilise la bibliothèque fourni, cela marche trés bien mais je suppose que l'adresse de la carte sur l'I2C est réglé dans la bibliothèque car on ne fait rien du tout comme réglage. En tout cas j'arrive à récupérer l'heures.

Par contre j'ai connecté mon Afficheur I2C sur le réseaux I2C et j'arrive à rien, l'afficheur boot j'essaie de communiquer avec lui mais rien ne se passe il boot et reboot continuellement. Par contre à chaque fois qu'il reboot on vois que l'I2C est arrêté car je récupère plus l'heures pendant 1 à 2 lectures.

Autre info l'afficheur est alimenté en 12V, il a donc 4 fils, le 12V, la masse et le SCl et SDA. En interne il possède un 7805 pour avoir du 5v. Du coup j'ai ajouté une alimentation 12V et relier la masse de l'arduino à la masse du 12V par contre les résistance de pull up (2.2K) sont sur le 5V de l'arduino.

J'ose pas tenter de mettre les pull up sur le 12V pour 2 raisons c'est que la petite carte DS1307 possède déjà des pull up qui sont donc sur le 5V mais il y a des cavaliers qui apparemment permettent de les enlever. Ensuite pour le moment j'ai pas de résistance plus grosse sous la main et 2.2K sous 12v est peut être pas assez élevé.

Autre souci le micro contrôleur de l'afficheur attend surement quelque chose pour arrêter de booter en permanence. Je sais pas si c'est dés que la connections est établi. Lors du boot on vois la version su soft embarqué, puis le clignotement du 1er caractère et le clignotement alternatif des 2 LED. A un moment assez court, environ 1 seconde les Leds et l'afficheur s'arrêtent de clignoter et c'est a ce moment que je récupère plus les informations de la DS1307

Voici le tout petit bout de code pour essayer de communiquer avec lui.
Code:
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,5);       //set the date
  RTC.set(DS1307_MTH,3);        //set the month
  RTC.set(DS1307_YR,9);         //set the year
  RTC.start();
  Wire.begin();
}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,false));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,false));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,false));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,false)); //read year
  Serial.println();

  delay(1000);
//Pour l'afficheur
  Wire.beginTransmission(0x38); //Adresse de l'afficheur
  Wire.send(0x20); //Registre pour le rétroéclairage
  Wire.send(1); //Allumage du rétroéclairage
  Wire.endTransmission();
}


je précise que j'ai essayé d'autre registre mais aucun ne provoque quelque chose.

Autre chose quelle est le symptôme lorsque si l'on inverse le SDA et le SCL car j'ai un doute sur mon schéma car l'alim était inversé, sans gravité car il y a une diode en entrée.

Merci
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3599
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je résume : quand tu branches l'afficheur sur ton réseau i2c, le DS1307 ne fonctionne plus ?

Je ne connais pas super bien la librairie DS1307 mais peut-être y'a-t-il un conflit avec la librairie wire ?
Puisque l'afficheur semble fonctionner en 5V, pourquoi ne pas le brancher directement en 5V ? (soit sur l'entrée 12V, dans ce cas vérifier la tension à la sortie du régulateur, soit en bypassant le régulateur).

Est-ce que l'afficheur marche sans DS1307 ?
Logged


Pages: [1] 2 3   Go Up
Jump to: