1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

je m'en sors pas avec I2C

Discussion dans 'Robotique et Domotique' créé par phil135, 30 Juin 2016.

  1. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    bonjour

    il faut que je fasse avancer rapidement un mini projet, un test limité, et je tourne en rond sévère:

    il s'agit d'interfacer des (d'abord un seul) capteur de distance à ultrasons sur un arduino

    arduino uno rev3
    capteur à ultrason SRF10 (vendu par lextronic)

    je suis arrivé à scanner le bus i2c , ça me répond que le capteur est en 0x70
    ok, mais le capteur a bien plus de registres que ça, où sont les autres ? comment y accéder ?

    est-ce que l'un de vous aurait un code exemple d'interfaçage d'un capteur i2c à plusieurs registres sur un arduino ? (avec l'initialisation)
    je trouve juste des exemples de capteur de température à un seul registre, et trop peu commentés

    merci infiniment
     
    Dernière édition: 30 Juin 2016
  2. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
  3. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    et bien ... malgré pas mal de recherches je n'avais pas trouvé cet exemple-là. merci je vais l'examiner de prés
    (sans doute pas les bons mots de recherche)
     
  4. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    et bien .... ça marche
    par contre quand j'ai voulu changer l'adresse du capteur pour pouvoir en mettre plusieurs sur le bus, j'ai d'abord eu un comportement bizarre (une sorte de décalage) et en voulant compenser ce décalage j'ai perdu la communication avec le capteur :smt022

    si quelqu'un connait une manip pour revenir aux paramètres usine, je suis preneur

    édit:
    c’était un pb d'adressage , j'ai repris la main. mais je reste intéressé par une manip de reset, au cas où

    il y a une sorte de division par 2 , ou décalage d'un bit vers la droite, entre l'adresse spécifiée et celle obtenue
    et en plus toutes les adresses ne sont pas autorisées :smt021
     
    Dernière édition: 1 Juillet 2016
  5. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    maintenant que c'est ok pour le capteur SRF10, j'ai un autre pb: l'afficheur

    j'ai un afficheur MIDAS MC22005A6W-SPTLYI (vendu par Farnell en ref 2425728 ) qui est en quelques sorte "natif i2c" : les notions de lignes et colonnes de pixels ne sont pas accessibles (j'ai juste des DDRAM address de caractères), du coup les exemples sur le web autour d'un écran parallèle + HD44780 et la library liquidcrystal ... je ne sais pas quoi en faire
     
  6. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
  7. speedjf37

    speedjf37 Compagnon

    Messages:
    987
    Inscrit:
    15 Octobre 2009
    Localité:
    indre et loire
    je m'en sors pas avec I2C
    Bonjour,

    votre LCD MIDAS MC22005A6W-SPTLYI est piloté par un AC780S

    D'après ce site il serait compatible avec LCD HD44780 :
    https://developer.mbed.org/users/wim/notebook/textlcd-enhanced/

    Note that there are many HD44780 compatible LCD controllers around (e.g. KS0066, ST7066, SPLC780, SED1278, LC7985A, NT7603, AIP31066). There are also controllers available that are compatible and provide additional features like an increased number of segment drivers for more characters or internal LCD contrast voltage generators (e.g. KS0073, KS0078, ST7036, SSD1803, SSD1803A, HD66712, SPLC792A). Several other types of displays use controllers that are compatible with the HD44780 to allow an easy transition, for example OLED drivers such as the WS0010 and US2066. The library controls the HD44780 through a 4-bit bus either directly or by using SPI or I2C portexpanders. Several compatible controllers also have native support for SPI and/or I2C serial interfaces in addition to, or instead of, the parallel bus (eg ST7032i, ST7036i, ST7070, SSD1803, AIP31068, PCF211X, AC780). The enhanced TextLCD library supports some of these devices


    quelques liens divers LCD I2C:

    http://blog.f8asb.com/2014/03/01/mise-en-oeuvre-i2c-vers-lcd-carte-chinoise-sur-arduino/

    http://workshopshed.com/2012/07/a-little-venture-with-electronics-lcd-diagnostics-and-software/


    edit: comme dit au dessus LiquidCrystal_I2C.h (il faut paramétrer les pins)

    Bonne chance !

    JF
     
    Dernière édition: 1 Juillet 2016
  8. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    mais justement je ne vois aucune notion de pin dans ma documentation, du coup je ne sais pas quoi faire de liquidcrystal_i2c puisque tous les exemples que je trouve passent par une assignation de pins
    j'ai déjà trouvé les deux derniers liens, mais je n'arrive pas à transposer vers le cas de cet afficheur
    il y a forcement un câblage interne mais je n'y ai pas accès: la seule chose que je trouve dans la doc (http://www.farnell.com/datasheets/2051102.pdf ) c'est des pins i2c (ça ok, je fais marcher le i2c scanner), une liste de registres de commandes et pour les emplacements des caractères, puis un tableau de codes de caractères. c'est surement suffisant pour des gens qui maitrisent bien i2c ... mais moi j'ai besoin d'un exemple de code de mise en œuvre


    par contre je n'avais pas trouvé le premier lien vers textlcd-enhanced
    je suis dans le cas évoqué à la fin de l'introduction : native i2c instead of parallel bus

    l'exemple un peu compliqué donné à la fin semble être un assemblage de tous les cas, à charge pour moi d'en effacer ce qui ne me concerne pas, c'est ça ?
     
  9. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
    je m'en sors pas avec I2C
    Salut phil135
    Dans la doc PDF, chapitre 7 il y a
    5 SDA. Sur Arduino Uno pin A4
    6 SCL. Sur Arduino Uno pin A5
    Si tu utilise une bibliothèque, tu te "fiches" de tout ces registres.
    D'après la doc, l'adresse semble être 0x78(hexa)
    Pour le paramétrage des fonctions de la bibliothèque:
    LiquidCrystal_I2C lcd(0x78, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

    Dans void setup()
    lcd.begin(20,2);

    Bonne nuit
    jpbbricole
     
  10. phil135

    phil135 Compagnon

    Messages:
    953
    Inscrit:
    15 Septembre 2012
    Localité:
    france, essonne, nord
    je m'en sors pas avec I2C
    l'adresse scannée n'est pas celle-ci mais c'est pas grave
    20,2 ok je vois
    le 2 1 0 4 5 6 7 3 positive de liquidcristal , c'est quoi exactement ? pour moi c'etait des identité de pins en sortie d'un module i2c addon
     
  11. jjdu33

    jjdu33 Compagnon

    Messages:
    1 058
    Inscrit:
    2 Janvier 2013
    Localité:
    F-33
    Dernière édition: 2 Juillet 2016
  12. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
    je m'en sors pas avec I2C
    Je ne sait pas exactement, mais j'utilise cette bibliothèque pour mes montages avec ce type d'affichage i2c sans problème.
    Tu peux peut-être trouver la réponse ici.

    Bonne journée
    jpbbricole
     
  13. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
    je m'en sors pas avec I2C
    Salut phil135
    Rectification, si tu prend la bibliothèque LiquidCrystal_I2C.h, c'est une autre version que la mienne et est plus simple à utiliser.
    Code:
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    // Set the LCD address to 0x27 for a 16 chars and 2 line display
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    
    void setup()
    {
        // initialize the LCD
        lcd.begin();
    
        // Turn on the blacklight and print a message.
        lcd.backlight();
        lcd.print("Hello, world!");
    }
    
    void loop()
    {
        // Do nothing here...
    }
    
    Bonne journée
    jpbbricole
     
  14. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804
    je m'en sors pas avec I2C
    En fait non, ce n'est pas nécessaire, les liaisons I2C, SDA et SCL, sont déjà définies dans les Arduino comme expliqué ici.
    Donc connues de la bibliothèque. Il faut uniquement indiquer l'adresse et Colonnes/Lignes.

    Bonne journée (chez nous, très pluvieuse)
    jpbbricole
     
  15. jpbbricole

    jpbbricole Ouvrier

    Messages:
    462
    Inscrit:
    26 Mai 2016
    Localité:
    Corsier-sur-Vevey (Vaud)
    Département:
    1804

Partager cette page