Programmation Picaxe
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Programmation Picaxe



  1. #1
    meigetsu

    Post Programmation Picaxe


    ------

    Bonjour je suis en terminale s en sciences de l'ingénieur et pour le bac nous devons réaliser un projet de groupe.
    Avec mon groupe nous travaillons sur un système d'arrosage automatique contrôlé. Nous avons un picaxe 18M2, un circuit intégré sur lequel est branché le microcontrôleur, une électrovanne en sortie, des capteurs ( température, humidité, luminosité en entrée ) et des diodes également en sortie pour vérifier le fonctionnement de chaque capteur. Pour ce qui est du branchement de l'ensemble du matériel, je n'ai eu aucun problème.
    J'ai réalisé mon code de programmation sur le logiciel programming editor de Picaxe, je n'ai pas de problème majeur sur celui-ci, enfin si sinon je ne ferais pas appel à vous .
    Je vous poste le code ci dessous :
    Code:
    	let dirsB = 255
    main: 
    
    label_01:   low b.0	; initialisation des diodes au niveau 0
    	      low b.1
    	      low b.2
    	      low b.3
    
    label_02:   readadc c.2, b0
    		debug b0 ; lecture des entrées analogiques de chaque capteur
    		readadc c.1, b1
    		debug b1
    		readadc b.7, b2
    		debug b2
    		
    		if b0 < 254 then label_03 ; test capteur luminosité
    		goto label_01
    						
    
    label_03:   high b.0 ; niveau haut pour la diode b.0,
    			; c'est à dire la diode correspondant au capteur luminosité
    	      goto label_04
    	      
    	     
    label_04:   if b1 < 100 then label_05 ; test capteur humidité
    		goto label_01
    
    label_05:	high b.1 		; niveau haut pour la diode b.1,
    			;  c'est à dire la diode correspondant au capteur d'humidité
    		goto label_06
    		
    
    label_06:	if b2>145 then label_07 ; tests capteur température
    label_07:	if b2<170 then label_08
    		goto label_01
    		
    
    label_08:	high b.2 		; niveau haut pour la diode b.2,
    			;  c'est à dire la diode correspondant au capteur de température
    		goto label_17
    		
    label_17:	if pinb.0 = 1 and pinb.1 = 1 and pinb.2 = 1 then label_10  ; test diode finale, 
    					; c'est à dire la diode correspondant à l'ensemble des capteurs,
    					; si niveau haut de b.0 et b.1 et b.2
    
    		
    label_10:	high b.3		; niveau haut pour diode b.3 et électrovanne
    		wait 1		; attente d'une seconde
    		goto label_02
    Alors pour ce qui est du code, celui-ci marche très bien. J'arrive à allumer la diode afin de vérifier si mon capteur de luminosité marche ou non. Le problème que j'ai , c'est que j'aimerais que chaque diode en sortie puisse s'allumer indépendemment des autres.
    Ici, si la condition du capteur d'humidité est remplie, la diode correspondante s'allumera mais également celle du capteur de luminosité.
    Si je test le capteur de température et que la diode correspondante s'allume, celles du capteur de luminosité et humidité le sont également.
    La derniere diode s'allume si l'ensemble des conditions sont validées.
    Je souhaite pouvoir allumer indépendemment chaque diode, c'est à dire que si mon capteur de température est valide et uniquement lui, seul sa diode s'allume.
    Pouvez vous m'aider à modifier mon code pour cela.
    Merci d'avance. Meigetsu

    -----

  2. #2
    luc_1049

    Re : Programmation Picaxe

    bonjour

    Vous avez codé avec succès une partie de votre logiciel et avez su joué avec les conditions en assembleur. Vous avez su aussi allumé des led. ce que vous devez faire c'est juste adapté vos conditions quitte à les complexifier et allumer une led aulieu de toutes d'après ce que vous dites.

    Cela devrait vous être possible moyennant un peu de réflexion et l'analyse du logiciel qui vous revient de fait.
    cdlt

  3. #3
    mag1

    Re : Programmation Picaxe

    Bonjour,

    Je ne suis pas entré dans les détails de votre code. Pour une raison simple, c'est qu'en le regardant, de loin, je n'ai pas envie de le lire.

    Le système picaxe dispose de la commande SYMBOL permettant d'assigner un nom aux ports et aux variables, ce qui rend tout de suite la lecture plus digeste.
    Il est aussi conseillé de donner aux labels des noms plus explicites que "label_04" qui ressemble plutôt à une "traduction basic" de flowcode, quasiment illisible. Si vous travaillez en basic sur PE, faites du basic. Si vous travaillez en graphique, n'essayez pas de le traduire.

    Vous deviez commencer par faire cela, ce qui vous aidera, ainsi que tous ceux qui liront votre programme.

    A suivre...

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

  4. #4
    meigetsu

    Re : Programmation Picaxe

    Je vous remercie, je tiens compte de vos commentaires, je vais modifier mon code et tenter de réussir ce pour quoi je suis venu.
    Je vous tiens informé

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

    Re : Programmation Picaxe

    Je reviens vers vous pour vous annoncé que j'ai finalement réussi mon programme.
    J'ai amélioré la présentation du programme et la condition que je vous demandais au début est enfin valable !
    Je vous poste le code, par plaisir
    Code:
    symbol LED_VERTE = b.0			;
    symbol LED_ORANGE = b.1			;
    symbol LED_ROUGE = b.2			;Déclaration des variables
    symbol LED_BLANCHE = b.3		;
    
    symbol Entree_Luminosite = c.2	;
    symbol Entree_Humidite = c.1		;
    symbol Entree_Temperature = b.7	;
    
    symbol Luminosite = b0			;
    symbol Humidite = b1			;
    symbol Temperature = b2			;
    
    	let dirsB = 255
    main: 
    
    Initialisation:      low LED_VERTE		; initialisation des diodes au niveau 0
    	     	         low LED_ORANGE		;
    	               low LED_ROUGE		;
    	               low LED_BLANCHE	;
    
    Lire_CAN:  	         readadc Entree_Luminosite, Luminosite			;
    		         debug Luminosite 						; lecture des entrées analogiques de chaque capteur
    		         readadc Entree_Humidite, Humidite			; et convertion en numerique
    		         debug Humidite							;
    		         readadc Entree_Temperature, Temperature		;
    		         debug Temperature	
    	   	         						;
    		
    Test_Luminosite:	   if Luminosite < 175 then Sortie_Luminosite		; test capteur luminosité
    			   low LED_VERTE
    			   low LED_BLANCHE						
    		         goto Lire_CAN
    		         
    Sortie_Luminosite:   high LED_VERTE 		; niveau haut pour la diode b.0,
    								; c'est à dire la diode correspondant au capteur luminosité
    	                   
    	     
    Test_Humidite:       if Humidite < 100 then Sortie_Humidite 		; test capteur humidité
    		         low LED_ORANGE
    		         low LED_BLANCHE
    		         goto Lire_CAN
    
    Sortie_Humidite:	   high LED_ORANGE 		; niveau haut pour la diode b.1,
    								; c'est à dire la diode correspondant au capteur d'humidité
    		        	
    
    Test_Temperature:	   if Temperature>145 and Temperature<152 then Sortie_Temperature ; tests capteur température
    			   low LED_ROUGE
    			   low LED_BLANCHE
    			   goto Lire_CAN 
    
    		
    Sortie_Temperature:  high LED_ROUGE 		; niveau haut pour la diode b.2,
    								; c'est à dire la diode correspondant au capteur de température
    		         		
    Test_Final:	         if pinb.0 = 1 and pinb.1 = 1 and pinb.2 = 1 then Sortie_Final ; test diode finale, 
    			   			   		; c'est à dire la diode correspondant à l'ensemble des capteurs,
    								; si niveau haut de b.0 et b.1 et b.2
    			   goto Lire_CAN
    Sortie_Final:	   high LED_BLANCHE		; niveau haut pour diode b.3 et électrovanne
    			   wait 1				; attente d'une seconde
    		         			
    		         goto Lire_CAN

  7. #6
    mag1

    Re : Programmation Picaxe

    OK. Ben c'est mieux non?
    Et c'est quoi les leds rouge, orange.....Il faut tout commenter, tout.

    Il faudrait maintenant mieux structurer ce programme
    En fait, il y a trois programmes indépendants.

    Faire ces 3 sous programmes, appelés par des gosub dans le main.
    Chaque programme ayant son readadc . Le test entrée est négatif alors on éteint la led et return pour passer au gosub suivant.

    Un truc aussi:
    Il y a dans ce picaxe trois types de variables
    les bits 0 ou 1
    les bytes b0, b1,... sur 1 octet (de 0 à 255)
    les words w0,w1, ...sur deux octets(de 0 à 65535)

    le tout se partageant 26 octets .

    Alors, perso, pour éviter les mélanges:
    b0 est destiné à la découpe en bits : bit0,bit1...
    Les bytes commencent à b1,b2...
    Les words en décroissant w13, w12,...jusqu'à ce qu'ils rencontrent les bytes.

    A suivre

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

  8. #7
    meigetsu

    Re : Programmation Picaxe

    Je te remercie pour ces précisions, je vais peaufiner mon code .

Discussions similaires

  1. Problème de programmation sur PICAXE
    Par invitef92e655a dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 18/02/2013, 15h10
  2. Programmation d'un picaxe 8M (microchip)
    Par jcchud dans le forum Électronique
    Réponses: 11
    Dernier message: 30/08/2012, 13h41
  3. raccordement cable programmation Picaxe
    Par micharmi dans le forum Électronique
    Réponses: 20
    Dernier message: 23/04/2012, 08h16
  4. Conseil programmation PICAXE
    Par invite9104bf70 dans le forum Électronique
    Réponses: 1
    Dernier message: 29/09/2010, 21h02
  5. Programmation PICAXE : le logiciel se contredit
    Par TheMoustic dans le forum Électronique
    Réponses: 21
    Dernier message: 02/01/2010, 00h48
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...