Aide à la création d'un temporisateur et bascule avec un pic.
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Aide à la création d'un temporisateur et bascule avec un pic.



  1. #1
    Valou31290

    Aide à la création d'un temporisateur et bascule avec un pic.


    ------

    Bonjour à tous, ça fait longtemps que je suis inscris et m'aide souvent de ce forum, mais je créé à ce jour ma première discussion.
    Bon voilà pour vous expliquer un peu mon problème, je désire faire un montage avec un PIC (je ne sais pas encore lequel utiliser sachant que je m'y connais peux), j'aimerais faire grâce à 5 boutons poussoirs et 5 rangés de LEDs, allumer une rangé de LEDs en appuyant sur un bouton poussoir (spécifique à la rangée) et en appuyant sur celui-ci éteindre les autres rangés de LEDs (ce sujet à déjà été abordé mais pas exactement pour ça).
    En plus de ça sur chaque sortie du pic créer une temporisation sur les rangées de LEDs extinction de la rangée après une temporisation égale à 30 secondes par exemple.
    Je m'y connais en électronique mais vraiment pas au niveau des composants programmables sachant que j'ai des bases en C et c'est tout. S'il vous plait aidez moi
    Je sais que ça ne fait pas sérieux de ne pas avoir fait de schéma mais j'ai vraiment besoin d'aide pour le commencer c'est pour a que je créé ce topic.
    Je vous remercie en avance pour vos réponses.

    -----

  2. #2
    alainav1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    bonjour,
    pour comprendre le fonctionnement du pic je te propose de regarder les cours de bigonoff
    et de commencer par faire clignoter une led .
    tu peux aussi t'en sortir sans µP avec du classique NE555(pour creer des temporisations ) , porte logique ..
    si tu veux etre efficace tout de suite avec un µP une carte arduino uno est plus simple pour debuter (mais c'est 30 euros !) et te permettra de debuter en programmation de µP (la programmation est proche du C)
    quand au pic il te faut un programmateur (pickit est à mon avis la reference ) et passer plus de temps pour etre operationnel mais ensuite un pic 16FXX c'est quelques euros .
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  3. #3
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Merci pour cette réponse rapide, j'ai commencé à regarder les cours de bigonoff, mais pour cause de temps, pour tout dire c'est un projet STI, le temps de tout apprendre les cours seront déjà finis..
    Pour la temporisation j'ai pensé à un NE555 mais je me suis dis que ça serait plus pratique d'intégrer toutes ces fonctions dans le pic, pour minimiser le nombre de composant et aussi le cout.
    Je crois aussi pour mes réalisations personnelles m'acheter une carte arduino pour progresser dans cela. J'avais fais un circuit avec des bascules et des ne555 mais ça faisait beaucoup, beaucoup de composants et à la fin on m'a dit de ne pas faire comme ça mais de procéder par la programmation..
    Sachant que je n'ai pas beaucoup de temps devant moi si quelqu'un pourrait m'aider à faire le code dans le pic je lui serais très reconnaissant. Pour le câblage du pic un quartz de 4MHz et au sorties du pic des transistors pour pouvoir commander une rangée de LEDs me parait la meilleure solution, mais toujours revient ce problème de programmation...
    Sur le forum j'ai vu quelqu'un qui voulait faire une bascule et HULK28 lui avait proposer un exemple de code, celui ci :

    Code:
    #define led1     PORTB.F0
    #define led2     PORTB.F1
    #define BP1      PORTB.F2
    #define BP2      PORTB.F3
    
    void main(void)
    {
    led1=0;
    led2=0;
    
    while(1)   // boucle infinie
         {
         if (BP1 == 0)  // si appui sur BP1
            {
            Delay_ms(80);  // anti-rebonds
            if(BP1 == 0)      // si appui toujours présent
              {
              led1=1;
              led2=0;
              }
            }
            
         if (BP2 == 0)
            {
            Delay_ms(80);
            if(BP2 == 0)
              {
              led1=0;
              led2=1;
              }
            }
          }
    }
    Serait-il possible de reprendre celui ci pour réaliser mes fonctions ?
    Dernière modification par Valou31290 ; 12/12/2012 à 14h39.

  4. #4
    alainav1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,
    si tu veux un programme tout fait je crois pas que ce soit l'objectif du forum .
    mais ce n'est que mon avis
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  5. A voir en vidéo sur Futura
  6. #5
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Non je ne souhaite absolument pas de programme tout fait sinon comment apprendre si l'on me fait tout ? J'aimerais juste savoir si le code ci dessus pourrait être réutilisé dans ce cas, si oui je le reprendrais car je ne sais pas quel langage de programmation accepte un pic, une fois fait je re posterais le code que j'aurais refait pour savoir si celui ci est correct, je déteste qu'on me dise tout

  7. #6
    alainav1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,
    le pic se programme à l'origine en assembleur
    en fonction du pic utilisé il existe des langages de haut niveaux mais je pense qu'une connaissance de base en assembleur est nécessaire pour comprendre comment ça marche (registre de configuration ....)
    voici des lien qui peuvent t'interresser
    http://herve.hollard.perso.sfr.fr/prog_pic_c.htm
    http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm
    cordialement
    Alain
    Dernière modification par alainav1 ; 13/12/2012 à 11h14.
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  8. #7
    Valou31290

    Post Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,
    Merci beaucoup de m'aider et merci pour les liens je vais y faire un tour et commencer donc à apprendre l'assembleur, je savais que c'était inévitable
    Je reviendrais poser des questions si j'en ai, et mettre mon premier code dans ce sujet pour savoir si celui ci est bon.

  9. #8
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,

    Pour faire facilement un petit programme simple, regarde aussi du côté des picaxes.

    La programmation est en simple basic et pas besoin de programmateur.

    Plus d'infos sur demande.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  10. #9
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour, d'accord merci de votre aide, je regarde tout ça aujourd'hui et vous tiens au courant de mon
    avancement dans ce projet, ça tombe bien je connais bien le basic éventuellement

  11. #10
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour, je me suis renseigné sur les différents moyens que je peux utiliser et j'ai penché sur l'utilisation d'un Micro-contrôleur PICAXE-18M2+, j'ai donc débuté l'algorigramme de mon projet mais je suis déjà bloqué pour la temporisation, y aurait-il un moyen d'arrêter la temporisation si appui sur BP2,BP3 ou BP4 lorsque la temporisation de l'appui sur bp1 à commencée ? Sans être obligé de faire :
    Si appui sur BP1, High 1 wait 0,5 si appui sur bp2, bp3 ou bp4 low 1 goto le programme de départ si non wait 0,5 etc.. tout ça jusqu’à une temporisation de 15 secondes par palier de 0,5 secondes.
    Suis-je obligé de procéder comme ceci ?
    Cordialement, Valentin.

  12. #11
    alainav1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,
    la gestion d'une interruption doit resoudre ton probleme
    http://henri.lichiere.free.fr/electr...08M/index.html
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  13. #12
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,

    Je verrais aussi une interruption sur les ports des poussoirs.
    Dans la routine d'interruption, un test pour savoir quel bouton est pressé.
    Un sous programme pour chaque cas.
    Regarde la variable time pour la temporisation.

    wait 0,5 ne fonctionnerait pas. pause 500 oui. Les picaxes ne comprennent que les entiers.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  14. #13
    foudefoot

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    ça tombe bien je connais bien le basic éventuellement .
    Bonjour,
    Si je puis me permettre une petite intervention, pourquoi ne pas essayer les PICBASIC (PB-3B de chez Lextronic, par exemple), ils sont fait exclusivement pour le language basic, et surtout sont très simples d'emploi (très peux de composant externes).
    Cordialement
    Denis

  15. #14
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Les picbasic-3b et les picaxes ont (à peu près) le même usage.
    sauf qu'un picaxe 08M2 coute 2,40euro et est encore plus facile à utiliser.
    Quelques fonctions spécifiques sont propres à chaque famille.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  16. #15
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour, merci à tous pour vos réponse, j'ai regardé pour une interruption mais j'ai eu une autre idée, pars forcément la plus simple mais celle-ci :
    Code:
    'Projet STI 18/12/12'
    
    symbol led1 = 0
    symbol Led2 = 1
    symbol Led3 = 2
    symbol Led4 = 3
    symbol bp1 = pin0
    symbol bp2 = pin1
    symbol bp3 = pin2
    symbol bp4 = pin3 	;Correspondance des pins.
    
    		let dirsB = 255
    main:
    		if bp1=1 then gosub BP1 	        ;Si BP1 est appuyé aller au sous-programme "BP1"
    		if bp2=1 then gosub BP2		;Si BP2 est appuyé aller au sous-programme "BP2"
    		if bp3=1 then gosub BP3		;Si BP3 est appuyé aller au sous-programme "BP3"
    		if bp4=1 then gosub BP4		;Si BP4 est appuyé aller au sous-programme "BP4"
    		goto main				        ;Reboucler tant qu'un bp n'est pas appuyé
    		
    BP1:	
    		high led1                            	;Mise de la sortie 0 à l'état haut
    		goto Led1                          	;Aller au sous-programme Led1
    		
    BP2:	
    		high led2 	                               ;Mise de la sortie 1 à l'état haut
    		goto Led2	                               ;Aller au sous-programme Led2
    		
    BP3:	
    		high led3                                  ;Mise de la sortie 2 à l'état haut
    		goto Led3                                ;Aller au sous-programme Led3
    		
    BP4:	
    		high led4                                 ;Mise de la sortie 3 à l'état haut
    		goto Led4                               ;Aller au sous-programme Led4		
    		              
    Led1:		
                    pause 500                                        ;Pause de 500ms
    		if b0= 30 then gosub Eteindre Led      ;Si la variable b0 = 30 aller au sous-programme Eteindre Led
    		if bp2=1 then gosub Eteindre Led       ;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3=1 then gosub Eteindre Led	       ;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4=1 then gosub Eteindre Led	       ;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		inc b0				               ;Incrément de b0
    		goto Led1				               ;Reboucler "Led1" tant que b0 != 30
    
    Led2:		pause 500               
    		if b0= 30 then gosub Eteindre Led	;Si la variable b0 = 30 aller au sous-programme Eteindre Led
    		if bp1=1 then gosub Eteindre Led	        ;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3=1 then gosub Eteindre Led        ;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4=1 then gosub Eteindre Led        ;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		inc b0				                ;Incrément de b0			
    		goto Led2				                ;Reboucler "Led2" tant que b0 != 30
    		
    Led3:		pause 500               
    		if b0= 30 then gosub Eteindre Led	;Si la variable b0 = 30 aller au sous-programme Eteindre Led
    		if bp1=1 then gosub Eteindre Led        ;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp2=1 then gosub Eteindre Led        ;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4=1 then gosub Eteindre Led        ;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		inc b0				                ;Incrément de b0			
    		goto Led3				                ;Reboucler "Led3" tant que b0 != 30
    		
    Led4:		pause 500               
    		if b0= 30 then gosub Eteindre Led	;Si la variable b0 = 30 aller au sous-programme Eteindre Led
    		if bp1=1 then gosub Eteindre Led        ;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp2=1 then gosub Eteindre Led        ;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3=1 then gosub Eteindre Led        ;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		inc b0				                ;Incrément de b0
    		goto Led4				                ;Reboucler "Led4" tant que b0 != 30
    
    Eteindre Led:	low led1
    			low led2
    			low led3
    			low led4			;Éteindre toute les Leds
    			return			;Retour au programme principal
    Serait-elle la bonne ?
    Je pense rester sur les picaxes car le coût du composant plus les éléments (platine de programmation, câble) revient à peux cher, je compte utiliser aussi le picaxe 18M2+

  17. #16
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,

    On peut effectivement faire des boucles de test, ce n'est pas la solution la plus élégante, mais ça fonctionnera.
    Utiliser pause pour faire les tempo n'est pas élégant non plus. Pendant les pauses, le programme est arrêté. Il est préférable d'utiliser la variable "time" qui est un compte secondes en tache de fond, et la tester dans une boucle Do ...Loop while time < tempo.
    Le programme, c'est aussi une question de style, qui s'améliore avec l'expérience

    Les ports sont nommés C.0,...,C.7 et B.0,...,B.7

    As tu utilisé Picaxe Editor?
    Testé le programme dans le simulateur?

    Perso, j'évite le 18M2, plus cher et je n'ai pas encore vu l'avantage par rapport aux 08M2,14M2, 20M2, 20X2..

    Si tu ne connais pas:

    http://electromag1.over-blog.com/

    MM
    Dernière modification par mag1 ; 18/12/2012 à 12h08.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  18. #17
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    C'est vrai ce n'est pas élégant
    J'utilise PICAXE programming editor et bon au début ça fonctionnait pas pour tout avouer j'avais un problème de nom des sous programmes, je l'ai donc refait (fonctionnel à la simulation).
    C'est sur que la commande settimer serait bien mieux que de faire ce que je fais mais après test de pleins de solutions je n'arrive pas à régler le timer sur 49910 pour 1 seconde avec un quartz de 4MHz je tape ceci :
    Code:
    main: 
    		settimer 49910
    		b4=timer
    			
    principal:
    J'ai regardé sur internet j'ai fais exactement comme sur internet mais à la simulation ça me dit que j'ai une erreur à la ligne 2 après settimer 49910

  19. #18
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Attention à ne pas tout mélanger et il faut lire un peu la doc.

    La commande settimer est utilisable par la série X2, plus évoluée.
    Pour la série M2, la variable système time remplace (en gros) l'utilisation du timer.
    Dans l'entête du programme, il est bon de placer la directive "#picaxe 20M2" ( si on utilise un 20M2 évidemment), la vérification de syntaxe intègre alors les spécificités du modèle utilisé.

    Par contre, regarde la commande setint, les ports utilisables dépendent du picaxe, sur un 20M2, il y en a 5.

    Le mieux, pour savoir ce qui se passe, c'est d'acheter une petite boite à connexions, deux ou trois piles, du fils, des résistances de 1k et 10k et quelques leds.
    Pour moins de 5 euros, c'est beaucoup mieux que la simulation.

    http://www.gotronic.fr/art-plaque-de...pide-17706.htm

    MM
    Dernière modification par mag1 ; 18/12/2012 à 16h57.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  20. #19
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour, merci pour tout le temps que vous m'accordez, j'ai acheté la platine de test comme ça je pourrais tester mes programmes
    J'ai lu la doc mais on va dire que j'ai passé certains chapitres.. Je l'ai donc re relu et pense avoir trouver comment utiliser cette variable time, j'ai refait mon programme et à la simulation il fonctionne :
    Code:
    'Projet STI 18/12/12'
    #picaxe18m2 
    
    let dirsB = 255
    setfreq m16                                                              ;Choix de la fréquence à 16MHz
    symbol led1 = 0
    symbol Led2 = 1
    symbol Led3 = 2
    symbol Led4 = 3
    symbol bp1 = pin0
    symbol bp2 = pin1
    symbol bp3 = pin2
    symbol bp4 = pin3 					                ;Variables
    
    			
    principal:	do 	
    		if bp1=%00000001 then bouton   		;Si BP1 est appuyé aller au sous-programme "bouton"	
    		if bp2=%00000001 then bouton2		;Si BP2 est appuyé aller au sous-programme "bouton2"
    		if bp3=%00000001 then bouton3		;Si BP3 est appuyé aller au sous-programme "bouton3"
    		if bp4=%00000001 then bouton4		;Si BP4 est appuyé aller au sous-programme "bouton4"
    		loop				                 		;Reboucler tant qu'un bp n'est pas appuyé		
    		
    bouton:	high led1 			         		;Mise de la sortie 0 à l'état haut
    		goto diodeEL		        		;Aller au sous-programme diodeEL
    		
    bouton2:	high led2 			        		;Mise de la sortie 1 à l'état haut
    		goto diodeEL2	         			;Aller au sous-programme diodeEL2
    		
    bouton3:	high led3 			         		;Mise de la sortie 2 à l'état haut
    		goto diodeEL3		         		;Aller au sous-programme diodeEL3
    		
    bouton4:	high led4	 				        ;Mise de la sortie 3 à l'état haut
    		goto diodeEL4				        ;Aller au sous-programme diodeEL4		
    		              
    diodeEL:	time=0
    		do			               	
    		if bp2= %00000001 then Eteindre        	;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3= %00000001 then Eteindre        	;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4= %00000001 then Eteindre 	;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		loop while time!=%00001111		;Rebouclage de diodeEL tant que le temps n'est pas égal à 15 secondes
    		goto Eteindre		         		;Quand le temps = 15 sec aller au sous-programme Eteindre
    
    diodeEL2:	time=0
    		do             
    		if bp1= %00000001 then Eteindre         ;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3= %00000001 then Eteindre  	;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4= %00000001 then Eteindre  	;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		loop while time!=%00001111		;Rebouclage de diodeEL2 tant que le temps n'est pas égal à 15 secondes
    		goto Eteindre	        			;Quand le temps = 15 sec aller au sous-programme Eteindre	
    		
    diodeEL3:	time=0
    		do              
    		if bp1= %00000001 then Eteindre 	;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp2= %00000001 then Eteindre 	;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp4= %00000001 then Eteindre  	;Si impulsion sur BP4 arrêt de la boucle et va au sous programme Eteindre Led
    		loop while time!=%00001111		;Rebouclage de diodeEL3 tant que le temps n'est pas égal à 15 secondes			
    		goto Eteindre			        	;Quand le temps = 15 sec aller au sous-programme Eteindre
    		
    diodeEL4:	time=0
    		do               
    		if bp1= %00000001 then Eteindre  	;Si impulsion sur BP1 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp2= %00000001 then Eteindre  	;Si impulsion sur BP2 arrêt de la boucle et va au sous programme Eteindre Led
    		if bp3= %00000001 then Eteindre  	;Si impulsion sur BP3 arrêt de la boucle et va au sous programme Eteindre Led
    		loop while time!=%00001111		;Rebouclage de diodeEL4 tant que le temps n'est pas égal à 15 secondes
    		goto Eteindre				        ;Quand le temps = 15 sec aller au sous-programme Eteindre
    
    Eteindre:	low led1
    		low led2
    		low led3
    		low led4				         	;Eteindre toutes les Leds
    		gosub principal			         	;Retour au programme principal
    Serais-je bon cette fois-ci ? J'ai mis du code en binaire certes inutile mais j'aime bien écrire ou faire compliqué quand on peux faire simple
    Cordialement, Valentin
    Dernière modification par Valou31290 ; 19/12/2012 à 08h59.

  21. #20
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,

    Ça fonctionne, bravo!

    Quelques remarques toutefois:

    La directive dirsB n'est pas toujours utile. Les utilitaires de conversion l'écrivent pour assurer la compatibilité avec les vieux picaxes qui avaient des ports figés en entrée ou sortie.
    Les ports des picaxes M2 sont (sauf exception) des entrées ou des sorties au choix.
    Écrire simplement" high C.2" suffit pour que le port C.2 soit une sortie en niveau haut.
    Il y a plusieurs familles de ports désignés A, B, C. Il faut donc écrire B.2 ou C.2 au lieu de 2 .

    Il est dangereux de conditionner une fin de boucle par time != 15 (je préfère time <>15, plus connu), mais surtout, il ne faut pas rater le 15, sinon bug!
    Écrire "while <= 15 ", plus sûr.

    Les "gosub" dirigent vers un sous programme qui doit toujours se terminer par "return". La syntaxe picaxe est très (trop) souple.

    Effectivement, le binaire est ici totalement inutile, voire nuisible, surtout pour définir une durée en secondes.

    Attention aux boutons poussoirs, générateurs de mauvais contacts aux conséquences inattendues. Quand un changement d'état est détecté, il est prudent de le faire suivre par une courte pause (anti rebonds logiciel).

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  22. #21
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Merci ! J'ai rectifié ma boucle pour mettre <=14, la tempo de 15 secondes et plus précise comme ça, ensuite j'ai corrigé et nommé les I/O comme vous me l'aviez décris en mettant high C.0 ... J'ai également enlevé le gosub de la fin pour le remplacer par un goto et remis le code en décimal .
    J'ai pensé aussi à l'anti rebond est-il vraiment nécessaire ? Si oui je pense que je le mettrais niveau composant si je détecte que le µ ne fait pas ce que je veux.

  23. #22
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    OK, je crois que c'est mieux.

    L'anti rebond serait inutile si les poussoirs étaient idéaux (très très rares). En cas de problème, essayer une pause de quelques ms ne coute rien.

    Un détail: Il est bon de diviser son programme en blocs fonctionnels mais ici, pourquoi passer par bouton:, au lieu de placer high led sous le time=0 ?

    Pourquoi un 18M2? Une plaque d'essai 20M2 peut utiliser un 08M2, un 14M2, un 20M2 ou un 20X2 (même disposition de broches alim et programmation)
    Le 18M2 a un brochage spécifique.

    Dans cet application, un 14M2 est suffisant? Mais bon, c'est histoire de pinailler.

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  24. #23
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour, je testerais le programme sans pause et ensuite avec la pause c'est sur, ça ne coûte rien de mettre une pause de quelques ms.
    C'est vrai ça sert à rien de passer par "bouton" je vais rectifier ça.
    J'ai choisi un 18M2 pour mes applications future, je sais que là j'aurais pu utiliser un 14M2 pour ce micro programme.
    Cordialement, Valentin.

  25. #24
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Voilà ce que j'ai fais pour vous donner un aperçu de mon code :
    Code:
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '                                                      Projet STI 18/12/12			                                    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    #picaxe14m2 
    
    setfreq m16							;Fréquence réglé à 16Mhz 
    symbol bp1 = pinC.0
    symbol bp2 = pinC.1
    symbol bp3 = pinC.2
    symbol bp4 = pinC.3					        ;Variables
    
    main:		do	
    		if bp1=1 then diodeEL		         	;Si BP1 est appuyé aller au sous-programme "diodeEL"	
    		if bp2=1 then diodeEL2	        		;Si BP2 est appuyé aller au sous-programme "diodeEL2"
    		if bp3=1 then diodeEL3	        		;Si BP3 est appuyé aller au sous-programme "diodeEL3"
    		if bp4=1 then diodeEL4	        		;Si BP4 est appuyé aller au sous-programme "diodeEL4"
    		loop					        ;Reboucler tant qu'un bp n'est pas appuyé	
    				
    		              
    diodeEL:	time=0						;Reset du temps
    		high B.0					;Mise à l'état haut de B.0
    		do			               	
    		if bp2=1 or bp3=1 or bp4=1 then low B.0	        ;Si BP2, BP3 ou BP4 = 1 mise à l'état bas de B.0 et retour au programme principal
    		goto main 						
    		else				
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp2,3,4 <> 1
    		ENDIF							
    		low B.0						;Mise à l'état bas de B.0 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.0 et retour au programme principal
    		
    
    diodeEL2:	time=0						;Reset du temps
    		high B.1					;Mise à l'état haut de B.1 
    		do             
    		if bp1=1 or bp3=1 or bp4=1 then low B.1	        ;Si BP1, BP3 ou BP4 = 1 mise à l'état bas de B.1 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp1,3,4 <> 1
    		ENDIF
    		low B.1						;Mise à l'état bas de B.1 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.1 et retour au programme principal	
    		
    		
    diodeEL3:	time=0						;Reset du temps
    		high B.2					;Mise à l'état haut de B.2
    		do              
    		if bp1=1 or bp2=1 or bp4=1 then low B.2	        ;Si BP1, BP2 ou BP4 = 1 mise à l'état bas de B.0 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp1,2,4 <> 1
    		ENDIF
    		low B.2						;Mise à l'état bas de B.2 après 15 secs	
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.2 et retour au programme principal
    		
    		
    diodeEL4:	time=0						;Reset du temps
    		high B.3					;Mise à l'état haut de B.3
    		do               
    		if bp1=1 or bp2=1 or bp3=1 then low B.3	        ;Si BP1, BP2 ou BP3 = 1 mise à l'état bas de B.0 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> 15 secondes ou bp1,2,3 <> 1
    		ENDIF
    		low B.3						;Mise à l'état bas de B.3 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.3 et retour au programme principal
    J'utilise un 14M2, je pense être bon cette fois ci sans les antis rebond

  26. #25
    mag1

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Bonjour,


    Je me suis permis de modifier légèrement "diodeEL", je pense qu'il fait exactement la même chose, en plus compacte.

    Nommer les ports de sortie était pourtant une bonne idée.

    Code:
    #picaxe 14m2 
    
    setfreq m16							;Fréquence réglé à 16Mhz 
    symbol bp1 = pinC.0
    symbol bp2 = pinC.1
    symbol bp3 = pinC.2
    symbol bp4 = pinC.3					        ;Variables
    
    main:		do	
    		if bp1=1 then diodeEL		         	;Si BP1 est appuyé aller au sous-programme "diodeEL"	
    		if bp2=1 then diodeEL2	        		;Si BP2 est appuyé aller au sous-programme "diodeEL2"
    		if bp3=1 then diodeEL3	        		;Si BP3 est appuyé aller au sous-programme "diodeEL3"
    		if bp4=1 then diodeEL4	        		;Si BP4 est appuyé aller au sous-programme "diodeEL4"
    		loop					        ;Reboucler tant qu'un bp n'est pas appuyé	
    				
    		              
    diodeEL:	time=0						;Reset du temps
    		high B.0					;Mise à l'état haut de B.0
    		do			               	
    		if bp2=1 or bp3=1 or bp4=1 then exit   ;Si BP2, BP3 ou BP4 = 1 mise à l'état bas de B.0 et retour au programme principal
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp2,3,4 <> 1
    		low B.0						;Mise à l'état bas de B.0 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.0 et retour au programme principal
    		
    
    diodeEL2:	time=0						;Reset du temps
    		high B.1					;Mise à l'état haut de B.1 
    		do             
    		if bp1=1 or bp3=1 or bp4=1 then low B.1	        ;Si BP1, BP3 ou BP4 = 1 mise à l'état bas de B.1 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp1,3,4 <> 1
    		ENDIF
    		low B.1						;Mise à l'état bas de B.1 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.1 et retour au programme principal	
    		
    		
    diodeEL3:	time=0						;Reset du temps
    		high B.2					;Mise à l'état haut de B.2
    		do              
    		if bp1=1 or bp2=1 or bp4=1 then low B.2	        ;Si BP1, BP2 ou BP4 = 1 mise à l'état bas de B.0 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> à 15 secondes ou bp1,2,4 <> 1
    		ENDIF
    		low B.2						;Mise à l'état bas de B.2 après 15 secs	
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.2 et retour au programme principal
    		
    		
    diodeEL4:	time=0						;Reset du temps
    		high B.3					;Mise à l'état haut de B.3
    		do               
    		if bp1=1 or bp2=1 or bp3=1 then low B.3	        ;Si BP1, BP2 ou BP3 = 1 mise à l'état bas de B.0 et retour au programme principal
    		goto main
    		else
    		loop while time <=14				;Rebouclage du IF tant que le temps <> 15 secondes ou bp1,2,3 <> 1
    		ENDIF
    		low B.3						;Mise à l'état bas de B.3 après 15 secs
    		goto main					;Quand le temps = 15 secs mise à l'état bas de B.3 et retour au programme principal
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  27. #26
    Valou31290

    Re : Aide à la création d'un temporisateur et bascule avec un pic.

    Merci ! Après avoir simulé vos modifications j'ai fais à tous pareil car plus compacte et toujours aussi opérationnel, j'y avais pas pensé
    Merci à vous !

Discussions similaires

  1. Montage d'un interrupteur à bascule avec LED
    Par yannouk dans le forum Électronique
    Réponses: 6
    Dernier message: 21/11/2012, 21h47
  2. Création d'un bouton poussoir avec temporisateur...
    Par invite9bf1aa1e dans le forum Électronique
    Réponses: 3
    Dernier message: 17/04/2010, 16h42
  3. Création d'un programmateur pic à 2 résistances
    Par invitee1a1afab dans le forum Électronique
    Réponses: 16
    Dernier message: 19/03/2010, 07h24
  4. Aide sur la creation d'un projet
    Par invitea761424e dans le forum Électronique
    Réponses: 1
    Dernier message: 21/10/2009, 17h12
  5. Aide a la creation d'un site
    Par inviteaf2cb19a dans le forum Internet - Réseau - Sécurité générale
    Réponses: 9
    Dernier message: 23/03/2009, 09h37
Découvrez nos comparatifs produits sur l'informatique et les technologies.