​ ​ ​ ​ capteur de couleur tcs34725 - Page 2
Page 2 of 2 FirstFirst 1 2
Results 11 to 18 of 18

Thread: capteur de couleur tcs34725

  1. #11
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,920

    Default

    Michel, j'ai failli écrire la même chose que toi ! C'est en voyant la photo du bidule que j'ai eu un doute...

    Melcator, suivez le conseil de Michel (MGU) il a fait un site sur le Picaxe absolument remarquable. Une référence pour les Picaxiens.
    Concernant le programme, tester celui en #8, et sans R de tirage à V+, ça ne peut pas marcher !!
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

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

    Thumbs up

    Bonjour,

    Ca marche (trop content), il manquait les résistances de tirage (10 kohms).
    Merci pour le site de MGU, je n'avais pas saisi la notion des b0,b1 etc.. car j'utilisais blockly pour picaxe et il ne gère pas cela (ni la déclaration directe de variable).
    Bref il me reste plus qu'à fouiller un peu car les valeurs (avec debug) ne sont pas super stables ... peut être voir dans les paramètres scales... je suis au début.
    En tout cas merci

    Ps : pour la petite histoire je suis prof de technologie en collège et on participe à un concours robotique qui doit gérer du vert, les autres concurrents utilisent du makeblock ou du lego ... ce serait sympa si picaxe tirait son épingle du jeu

  3. #13
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,920

    Default

    Quote Originally Posted by melcator07 View Post
    Bonjour,

    Ca marche (trop content), il manquait les résistances de tirage (10 kohms).
    Merci pour le site de MGU, je n'avais pas saisi la notion des b0,b1 etc.. car j'utilisais blockly pour picaxe et il ne gère pas cela (ni la déclaration directe de variable).
    Bref il me reste plus qu'à fouiller un peu car les valeurs (avec debug) ne sont pas super stables ... peut être voir dans les paramètres scales... je suis au début.
    En tout cas merci

    Ps : pour la petite histoire je suis prof de technologie en collège et on participe à un concours robotique qui doit gérer du vert, les autres concurrents utilisent du makeblock ou du lego ... ce serait sympa si picaxe tirait son épingle du jeu
    Super!
    Le problème de blockly est sa limitation dans les fonctions. Travailler en Basic picaxe est à conseiller.
    Oui, visiblement il y a certains paramètres qui doivent permettre de stabiliser la lecture. Vais regarder.
    Sinon , il est possible de lisser les valeurs par soft de façon simple. Je vous dirai comment faire si vous êtes intéressé.

    L'utilisation du makeblock est sans doute plus simple, car c'est une base arduino, qui a déjà les bibliothèques du tcs34725. Mais pas certain que cela permette de modifier les paramètres...
    Makeblock et lego ont l'inconvénient d'être des solutions captives ...
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

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

    Default

    Merci PieM,
    ton aide est précieuse et je suis preneur...
    Avec toi, j'avance et tes conseils sont judicieux.
    A bientôt

  5. #15
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,920

    Default

    Quote Originally Posted by melcator07 View Post
    Merci PieM,
    ton aide est précieuse et je suis preneur...
    Avec toi, j'avance et tes conseils sont judicieux.
    A bientôt
    Merci,
    rapidement, tu as un paramètre temps d'intégration : ATIME dans le registre $01.
    par défaut il semble être à la valeur $FF soit 256.
    son calcul est :
    ATIME = 256 - tps d'intégration /2.54 en ms
    donc à priori le temps d'intégration de base est 0 ms
    Avec ATIME= $00 le tps d'intégration sera donc de 256 * 2.54 soit 650 ms

    pour tester :
    ajouter aux hi2cout:
    hi2cout %10100001,(%00000000) ' ...00 = ATIME dans le registre 1

    Si ça ne donne rien, on passera à une solution soft.

    Il est évident que jouer sur ce temps va influer sur le temps de réponse de ton robot. A voir donc en fonction de ce qu'il doit faire...

    Si tu ne dois lire que le vert, inutile de lire les autres couleurs , non ?
    Le piège aurait été de demander à lire le jaune ! pas sûr que les élèves connaissent la synthèse additive des couleurs...
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

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

    Thumbs up

    Bonsoir,
    J'ai mis du temps car en lisant la documentation page 9 et 17, j'ai vu qu'on pouvait placer des seuils (AILTL...) mais j'ai pas réussi du coup j'ai mis des seuil sur la variable "var_blanc". Puis après avec comparaison j'allume une del rouge, verte ou bleu (pour essai car pour mon robot il suffira de détecter le vert).
    Code:
    symbol var_blanc = w0 'w0 est forme de b0 et b1
    symbol var_rouge = w1
    symbol var_vert = w2
    symbol var_bleu = w3
    
    'init
    hi2csetup i2cmaster, %01010010, i2cfast, 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
    'hi2cout %10100001,(%00000000) ' ...00 = ATIME dans le registre 1
    
    main:
    do
    hi2cin %10110100,(b0,b1)
    pause 3
    hi2cin %10110110,(b2,b3)
    pause 3
    hi2cin %10111000,(b4,b5)
    pause 3
    hi2cin %10111010,(b6,b7)
    pause 3
    if var_blanc > 3000 and var_blanc < 14000 then 'seuil noir et blanc pour déclencher
    if var_rouge > var_vert and var_rouge > var_bleu then
        	high B.3 ' lumière rouge
    else
    	low B.3
    endif
    if var_bleu > var_vert and var_bleu > var_rouge then
        	high B.4 'lumière bleu
    else
    	low B.4
    endif
    if var_vert > var_bleu and var_vert > var_rouge then
        	high B.7 'lumière bleu
    else
    	low B.7
    endif
    else
    low B.3
    low B.4
    low B.7
    endif
    debug
    loop
    Du coup ça fonctionne correctement et c'est cool.
    Merci aux solutions de PieM et le site de MGU est super

    Ps : j'utilise une carte axe020 pour mon robot

  7. #17
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,920

    Default

    Quote Originally Posted by melcator07 View Post
    Bonsoir,
    J'ai mis du temps car en lisant la documentation page 9 et 17, j'ai vu qu'on pouvait placer des seuils (AILTL...) mais j'ai pas réussi du coup j'ai mis des seuil sur la variable "var_blanc". Puis après avec comparaison j'allume une del rouge, verte ou bleu (pour essai car pour mon robot il suffira de détecter le vert).
    Code:
    symbol var_blanc = w0 'w0 est forme de b0 et b1
    symbol var_rouge = w1
    symbol var_vert = w2
    symbol var_vert = w3
    
    'init
    hi2csetup i2cmaster, %01010010, i2cfast, 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
    'hi2cout %10100001,(%00000000) ' ...00 = ATIME dans le registre 1
    
    main:
    do
    hi2cin %10110100,(b0,b1)
    pause 3
    hi2cin %10110110,(b2,b3)
    pause 3
    hi2cin %10111000,(b4,b5)
    pause 3
    hi2cin %10111010,(b6,b7)
    pause 3
    if var_blanc > 3000 and var_blanc < 14000 then 'seuil noir et blanc pour déclencher
    if var_rouge > var_vert and var_rouge > var_bleu then
            high B.3 ' lumière rouge
    else
        low B.3
    endif
    if var_bleu > var_vert and var_bleu > var_rouge then
            high B.4 'lumière bleu
    else
        low B.4
    endif
    if var_vert > var_bleu and var_vert > var_rouge then
            high B.7 'lumière bleu
    else
        low B.7
    endif
    else
    low B.3
    low B.4
    low B.7
    endif
    debug
    loop
    Du coup ça fonctionne correctement et c'est cool.
    Merci aux solutions de PieM et le site de MGU est super

    Ps : j'utilise une carte axe020 pour mon robot
    Une autre façon de programmer pour la sélection:

    Code:
    if var_blanc > 3000 and var_blanc < 14000 then 'seuil noir et blanc pour déclencher
          w4 = var_rouge min var_vert min var_bleu ' w4 sera le maxi des 3 valeurs
          select w4
                case var_rouge : high B.3 ' lumière rouge
                case var_vert : high B.7 ' lumière verte
                case var_bleu : high B.4 'lumière bleue
          end select
                low B.3, B.4, B.7
    endif
    Pour fixer des seuils, il te faut les définir dans les registres $04, $05,$06,$07 en entrant les low bytes et highbytes:
    soit w10 = seuil haut 'donc formé de b20 et b21
    soit w11 = seuil bas 'donc formé de b22 et b23
    w10 = 14000
    w11 = 3000
    les instructions devraient être:

    hi2cout %10100100,(b22,b23) 'seuil bas
    hi2cout %10100110,(b20,b21) 'seuil haut
    Last edited by PieM; 14-02-2018 at 10:24. Reason: complément (pas réveillé)
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

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

    Default

    Bonjour,

    Super la modification de programme... je vois que je dois faire des progrès en basic (et d'autres choses d'ailleurs)
    Je vais recevoir des capteurs de couleur tcs3200. Il semble plus simple à programmer. Je pense pouvoir le faire avec blockly pour picaxe (brique "compter pulsation en ..." ). Ce serait mieux pour l'utiliser avec mes élèves de collège.
    A voir...
    Merci en tout cas pour ton aide apportée.
    A bientôt

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
  •