​ ​ ​ ​ Barrière infrarouge v3 de M. Pujades ? - Page 3
Page 3 of 5 FirstFirst 1 2 3 4 5 LastLast
Results 21 to 30 of 43

Thread: Barrière infrarouge v3 de M. Pujades ?

  1. #21
    Senior Member
    Join Date
    Jun 2016
    Location
    Paris
    Posts
    115

    Default

    une trame IR est envoyée toutes les 45 ms
    le recepteur lui boucle en permanence sur le test d'entrée.
    il suffit de tomber sur la pause emetteur pour repasser tout à 0!
    Si je supprime la pause de 45ms dans mon programme tout bizarre, le fonctionnement devient très aléatoire...

    Sinon, je viens d'essayer les codes suivants mais ça ne donne rien, sur le récepteur, C0 et C2 restent à l'état haut fixe...

    Emetteur :
    Code:
    main:
        	high C.1
    	do
      	irout C.2, 1, 126
    	loop
    récepteur :
    Code:
    main:
    high C.1
    	do
      	irin [500], C.3, b0
      		if b0 = 126 then
        			high C.2
        			high C.0
      		else
        			low C.2
        			low C.0
      		endif
    loop
    edit : ça sert à quoi le "b0 = b0 and 127" que P. Pujades à mis dans son code de la barrière avec un seul 08M2 ?
    Last edited by meepmeep; 03-02-2017 at 21:44.

  2. #22
    Senior Member
    Join Date
    Nov 2011
    Location
    MARSEILLE
    Posts
    145

    Default

    Bonsoir BESQUEUT
    Je reviens sur #13 , d'accord pour le trop plein de "goto"dans le code de meepmeep,le votre est plus simple,mais pourquoi traiter ce pauvre "goto"de "putin de merde"?
    Un "main"..........goto main vaut bien un "do"........loop ?Non?

  3. #23
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,835

    Default

    Quote Originally Posted by Jacques ROBERT View Post
    Bonsoir BESQUEUT
    Je reviens sur #13 , d'accord pour le trop plein de "goto"dans le code de meepmeep,le votre est plus simple,mais pourquoi traiter ce pauvre "goto"de "putin de merde"?
    Un "main"..........goto main vaut bien un "do"........loop ?Non?
    Bonjour, lire Programmation_spaghetti
    C'est ce qui est généré par le passage du mode logigramme en basic dans PE6
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  4. #24
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,681

    Default

    Quote Originally Posted by Jacques ROBERT View Post
    Bonsoir BESQUEUT
    Je reviens sur #13 , d'accord pour le trop plein de "goto"dans le code de meepmeep,le votre est plus simple,mais pourquoi traiter ce pauvre "goto"de "putin de merde"?
    Un "main"..........goto main vaut bien un "do"........loop ?Non?
    OK : je n'avais pas pigé que ce code n'était pas de la main de ce cher meepmeep mais l'oeuvre d'un "robot" convertisseur de code.
    Il est vrai également que je me suis sans doute un peu emporté.
    Il n'en reste pas moins que (sauf cas exceptionnels nécessitant une optimisation particulière) tout programme peut être écrit sans aucun goto,
    et que la lisibilité ne peut qu'être meilleure.

    En ce qui concerne la boucle principale :
    - d'une part, difficile de défendre la suppression totale des gotos et de donner en exemple un programme qui commence par ça...
    - d'autre part : un do..loop signale d'entrée de jeu que cette partie du programme est une boucle; à contrario, "main" ne dit rien du tout. Il faut avoir lu tout le programme et dénicher dieu sait où un "goto main" pour découvrir qu'en fait on a bien une boucle principale,
    - et bien souvent, on ne découvre pas un seul mais plusieurs "goto main" et là on est dans une structure de programme bâtarde, très difficile à déboguer.

    Une autre façon de dire la même chose : en commençant à écrire un programme par un DO...LOOP, on ne risque pas, plus tard , d'écrire plusieurs GOTO main, lesquels signent inévitablement une programmation "spaghetti".

    Quote Originally Posted by PieM View Post
    Bonjour, lire Programmation_spaghetti
    C'est ce qui est généré par le passage du mode logigramme en basic dans PE6
    Merci pour ce lien fort intéressant.

    Mais, ce faisant nous polluons allègrement ce thread. Si vous souhaitez débattre de l'intérêt d'une écriture structurée des programmes, merci d'ouvrir un nouveau thread.
    Last edited by BESQUEUT; 04-02-2017 at 10:00.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  5. #25
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,835

    Default

    Quote Originally Posted by meepmeep View Post

    edit : ça sert à quoi le "b0 = b0 and 127" que P. Pujades à mis dans son code de la barrière avec un seul 08M2 ?
    Je ne sais pas où c'est, mais à mon avis ça ne sert à rien. je pense que l'idée était d'inverser les bits de b0, mais il fallait alors écrire b0 and 255.
    10011001 and 255 (11111111) donne 01100110

    pour votre programme, ça ne peut pas marcher comme ça:
    si le time out est atteint, on saute au bouclage de loop. Donc rien ne peut changer!

    le problème vient du fait que vous avez un double test avec ce montage:
    le low C.2, C.0 intervient soit si le faisceau IR est coupé, soit si b0 n'est pas 126

    donc il faut avoir une double entrée sur cette état.

    Code:
    high C.1
    main:
      
          irin [5, defautIR], C.3, b0
          if b0 = 126 then
                high C.2
                high C.0
       else 
           goto defautIR
       endif
    goto main  
    
    defautIR:
                low C.2
                low C.0
    goto main
    Bon je fais le contraire de ce qu'on a dit avec les goto
    mais c'est à l'insu de mon plein gré, car le timeout de PE conduit obligatoirement à un goto.
    Donc il s'agit là de l'exception qui ... etc...

    pour faire plus simple, il faut simplement verifier qu'on reçoit de l'IR:
    Code:
    high C.1
    main:
    irin [5, defautIR], C.3, b0
                   high C.2 , C.0          
    goto main
    defautIR:
                low C.2, C.0
    goto main
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  6. #26
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,681

    Default

    Quote Originally Posted by PieM View Post
    Bon je fais le contraire de ce qu'on a dit avec les goto
    C'est pas très propre non plus, mais les apparences sont sauves :
    Code:
    high C.1
    
    defautIR:
          low C.2, C.0
    do
          irin [5, defautIR], C.3, b0
          high C.2 , C.0          
    loop
    There are 10 types of people in the world: those who understand binary, and those who don't.

  7. #27
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,835

    Default

    Bien vu! ben si c'est quand même plus mieux!
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

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

    Default

    Si je supprime la pause de 45ms dans mon programme tout bizarre, le fonctionnement devient très aléatoire...
    En fait, il est conseillé de laisser cette pause pour être proche de ce que fait une télécommande...
    donc mettre un timeout réception supérieur à 100
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  9. #29

    Default

    Bonjour,

    Mon post servira certainement à rien ...
    J'ai refait il y 1 an je pense des barrières IR pour mes élèves, j'ai récupéré les fichiers sur mon ancien site "technopujades", sans me poser la moindre question !
    Usinage des CI, programmation des Picaxes et 2h plus tard j'avais 4 ou 5 barrières infrarouge de plus à utiliser avec les élèves.
    Je ne comprends donc pas d'ou peu venir ton problème ?
    Autre remarque : j'ai utilisé les mêmes composants utilisés lors de ma 1er fabrication (j'avais commandé en plus à l'époque).
    ___________________________________
    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce que nous n'osons pas qu'elles sont difficiles

    Site académique de Toulouse : http://pedagogie.ac-toulouse.fr/technologie/
    Ancien, très ancien site perso : Technopujades.free.fr
    ___________________________________

  10. #30
    Senior Member
    Join Date
    Jun 2016
    Location
    Paris
    Posts
    115

    Default

    Bonjour,
    Usinage des CI, programmation des Picaxes et 2h plus tard j'avais 4 ou 5 barrières infrarouge de plus à utiliser avec les élèves.
    C'est ce que j'ai voulu faire : j'ai d'abord usiné tes fichiers (avec quelques modifications pour les dimensions finales du circuit imprimé, et l'utilisation de µC 08M2).
    Mais quand j'ai voulu injecter les deux programmes dans chaque µC, il m'a fallut télécharger Logicator pour les ouvrir, mais lors du téléversement, Logicator indiquait des erreurs (mais sans indiquer où...).
    J'ai alors recopié ton programme dans PE6 mais ça n'a jamais fonctionné (la DEL rouge de présence était tantôt éteinte, tantôt clignotait de façon erratique, tantôt allumée, mais jamais quand il le fallait...).
    Et c'est ainsi que je me suis lancé dans l'écriture d'un nouveau programme fonctionnel... avec énormément de difficultés (étant assez novice en Picaxe)...

    Et du coup, toi, comment as-tu fait pour ouvrir tes fichiers de programmes sans avoir d'erreurs ???
    Et je ne te pose même pas la question du fonctionnement de ton programme avec les pauses de 50ms pour l'émetteur et les pauses de 10ms pour le récepteur ... qui est pour moi un grand mystère... (c'est pour ça que j'ai essayé de tout reprendre depuis le début avec irin et irout ... et en m'inspirant des documentation de chez A4, qui finalement n'a rien donné de probant pour moi)

    Voilà pour les explications ! Merci en tous les cas pour ta réponse...

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
  •