​ ​ ​ ​ capteur de couleur tcs34725
Page 1 of 2 1 2 LastLast
Results 1 to 10 of 18

Thread: capteur de couleur tcs34725

  1. #1
    New Member
    Join Date
    Jan 2015
    Location
    france
    Posts
    10

    Default capteur de couleur tcs34725

    Bonjour,

    Néophyte dans les protocoles i2c, je cherche à utiliser un capteur de couleur avec tcs34725 avec 28x2 (pin c.3 pour hi2c scl et c.4 pour hi2c sda). Je n'ai pas réussi à réaliser le programme me permettant de lire les couleurs.
    Merci d'avance pour votre aide

    https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf

  2. #2
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,906

    Default

    Quote Originally Posted by melcator07 View Post
    Bonjour,

    Néophyte dans les protocoles i2c, je cherche à utiliser un capteur de couleur avec tcs34725 avec 28x2 (pin c.3 pour hi2c scl et c.4 pour hi2c sda). Je n'ai pas réussi à réaliser le programme me permettant de lire les couleurs.
    Merci d'avance pour votre aide

    https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf
    Bonjour, donnez déjà le programme que vous utilisez ...
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  3. #3
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,501

    Default

    Quote Originally Posted by PieM View Post
    Bonjour, donnez déjà le programme que vous utilisez ...
    Bonjour,

    Et un petit schéma, c'est un module 3,3 V

    MM

  4. #4
    New Member
    Join Date
    Jan 2015
    Location
    france
    Posts
    10

    Default

    Merci à l'intérêt que vous portez au post.
    J'ai réalisé le câblage suivant (j'espère que cela s'affichera)
    tcs34725.jpg

    Ensuite pour le programme, j'utilise blockly pour picaxe mais le souci je ne sais pas quelles sont les adresses pour lire les informations sur tcs34725
    En fouillant sur le forum j'ai fait cela
    symbol var_blanc_bas = w0
    symbol var_blanc_haut = w1
    symbol var_bleu_bas = w2
    symbol var_bleu_haut = w3
    symbol var_rouge_bas = w4
    symbol var_rouge_haut = w5
    symbol var_vert_bas = w6
    symbol var_vert_haut = w7

    main:
    hi2csetup i2cmaster, %01010010, i2cslow, i2cbyte
    hi2cout %10100000, ( %00000001 )
    pause 3
    hi2cout %10100000, ( %00000011 )
    pause 3
    do
    hi2cin %10110100, ( var_blanc_bas , var_blanc_haut )
    pause 3
    hi2cin %10110110, ( var_rouge_bas , var_rouge_haut )
    pause 3
    hi2cin %10111001, ( var_vert_bas , var_vert_haut )
    pause 3
    hi2cin %10111010, ( var_bleu_bas , var_bleu_haut )
    debug
    loop
    stop
    Du coup, j'obtiens pour les variables 83 pour les "bas" et 255 pour les "haut"
    En fait j'ai mis ces adresses en cherchant sur le forum mais je n'y comprends pas grand chose (même en regardant la datasheet du tcs34725)
    Si vous pouviez m'aider ce serait sympa
    A bientôt
    Attached Images Attached Images

  5. #5
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,501

    Default

    Quote Originally Posted by melcator07 View Post
    Merci à l'intérêt que vous portez au post.
    J'ai réalisé le câblage suivant (j'espère que cela s'affichera)
    tcs34725.jpg
    Il faut lire les datasheet AVANT l'utilisation...
    https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf
    Et on lit quoi, page 3 , dans "ABSOLUTE MAXIMUM RATINGS" ?....euhm...trop tard!!

    MM

  6. #6
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,906

    Default

    Pour Michel, la puce est effectivement du 3V mais ce module comporte à priori un interface 5V - 3V. Voir https://www.adafruit.com/product/1334

    @melcator07:
    Oui ça se mélange les pinceaux !
    hi2csetup i2cmaster, %01010010, i2cslow, i2cbyte : Ok pour ça, l'adresse est bonne ($29 *2) Vous pouvez utiliser I2Cfast avec ce module.
    Si les données sont des bytes, les symboles ne sont pas des word.
    ensuite,
    hi2cin %10110100, ( var_blanc_bas , var_blanc_haut )
    ça veut dire que vous allez lire le registre %10110100, et rapatrier deux données var_blanc_bas et var_blanc_haut
    c'est faux; le registre correspondant au blanc est $14 et $15, rouge $16 et$17, vert $18 et $19, bleu $1A et $1B
    Je pense que vos haut et bas sont en fait les lowbyte et highbyte de la valeur blanc qui est sur 16bits
    Donc pour rester dans cette esprit, votre commande doit être :
    hi2cin $14, ( b0 , b1 ) ce qui va lire lowbyte et highbyte de w0 ; le blanc sera donc w0
    hi2cin $16, ( b2 , b3 ) ce qui va lire lowbyte et highbyte de w1 ; le rouge sera donc w1
    and so on....

    pour les symboles ;
    symbol var_blanc = w0
    symbol var_bleu = w1
    symbol var_rouge = w2
    symbol var_vert = w3

    Quant à vos config avec hi2cout, ça ne correspond à rien.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  7. #7
    New Member
    Join Date
    Jan 2015
    Location
    france
    Posts
    10

    Default

    Bonjour et merci,

    alors le programme serait ceci ? :
    symbol var_blanc = w0
    symbol var_bleu = w1
    symbol var_rouge = w2
    symbol var_vert = w3

    main:
    hi2csetup i2cmaster, %01010010, i2cfast, i2cbyte
    do
    hi2cin $14, ( b0 , b1 )
    hi2cin $16, ( b2 , b3 )
    hi2cin $18, ( b4 , b5 )
    hi2cin $1A, ( b6 , b7 )
    debug
    loop
    stop

    Ca se mélange encore pour moi, je vois comment le lien entre b0 et var_blanc par exemple.
    Et ensuite vous parlez de bytes mais (désolé pour mon inexpérience) je souhaite pouvoir détecter la couleur bleu, vert ou rouge ?
    En outre j'utilise pixaxe editor 6.0.9.3
    et j'obtiens ceci au niveau des variable
    variable.jpg

    Merci encore de votre patience et aide

  8. #8
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,906

    Default

    Ce capteur semble plus compliqué à adresser que ses homologues.
    Il lui faut en effet une initialisation, bizarre, car par défaut l'oscillateur interne n'est pas actif.
    et l'adresse des registres doit être sur 8 bits comprenant une partie de l'adresse.
    Donc votre programme initial (sais pas où vous l'avez trouvé...) n'est peut être pas mauvais.

    Par contre, avez vous mis les résistance de tirage sur scl et sda ?

    programme


    symbol var_blanc = w0 'w0 est formé de b0 et b1
    symbol var_rouge = w1
    symbol var_vert = w2
    symbol var_bleu = w3

    'init
    hi2csetup i2cmaster, %01010010, i2cslow, i2cbyte

    hi2cout %10100000,(%00000001) 'correspondrait au registre 0 soit enable et envoyer un 1 = power ON
    pause 3
    hi2cout %10100000,(%00000011) ' ...011 = power ON et RGB conversion ON
    pause 3

    main:
    do
    hi2cin %10110100,(b0,b1) , 10100 = $14, l'adresse du registre du blanc
    hi2cin %10110110,(b2,b3) , ........
    hi2cin %10111000,(b4,b5)
    hi2cin %10111010,(b6,b7)
    debug
    loop






    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  9. #9
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,501

    Default

    Quote Originally Posted by PieM View Post
    Pour Michel, la puce est effectivement du 3V mais ce module comporte à priori un interface 5V - 3V. Voir https://www.adafruit.com/product/1334
    Bonjour,
    et merci PieM, finalement, c'est moi qui n'ai pas lu la bonne doc.

    Melcator, il va falloir travailler un peu les fondamentaux du basic picaxe, symbol, bytes,...

    Si ça peut aider un peu: http://electromag1.wifeo.com/les-pic...leur-basic.php

    MM

  10. #10
    New Member
    Join Date
    Jan 2015
    Location
    france
    Posts
    10

    Default

    Effectivement je n'ai pas mis de résistances de tirage... je ne pourrai le faire que demain mais je vous tiendrai au courant (car pour l'instant avec le nouveau programme pas de changement sur les variables)

    J'apprécie votre aide précieuse.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •