Probléme avec serin et time

dje8269

Senior Member
Bonjour à tous,

Décidément j'ai l'impression que je suis le seul à avoir des soucis !!! .

J'avais fabriqué une petite télécommande et son récepteur, pour le boulot permettant d'activer un appareil à distance . Elle m'est revenue dans les mains pour une petite modification . Je me suis dit facile ! quenini !! je vois pas ou ca coince !

Il faudrait que la broche C.4 passe a l'état bas au bout de 1 minute si rien n'est actionné . Mais qu'il puisse l'éteindre manuellement avant 1 minute ; En fait la personne allume et éteint normalement en moins de 1 minute . Si la personne oublie d'éteindre, au bout d'une minute il faudrait que ça se coupe .

Pour les test j'ai mis 5 secondes. je sais que j'éteins même si la sortie est deja à zéro, je corrigerais après , car même la ça ne s'éteint pas au bout de 5 secondes . J'ai lu qu'on pouvait "sauté" la commande SERIN si pas de réception j'ai donc mis toutes les secondes comme ca le programme continue.
Voici mon code :

Code:
#PICAXE 08M2

dirC.2=0					'Déclare C.2 comme entrée (trigger)
dirC.4=0					'Déclare C.1 comme SORTIE 

low C.4
'############################################################
'			Programme principal
'############################################################

do
	Serin [1000],C.2,0,("X","Y"),b1	'Rentre la valeur dans b1 si les qualifiers recus sont "X" et "Y"

		if b1 = 65 then		'Si b1 = "A" 
		
			toggle C.4
			pause 2000
			b1=0
			time = 0		
		end if
	
if time > 5 then
low C.4
end if
	
loop
 

PieM

Senior Member
pour moi ça marche en simulation.

je sais que j'éteins même si la sortie est deja à zéro, je corrigerais après
Et alors ! tu vas faire un test pour mettre à 0 s'il n'y est pas sinon tu fais rien ? C'est stupide.

Ton serin vient d'un récepteur radio ?
 
Last edited:

dje8269

Senior Member
pour moi ça marche en simulation.
Pour moi aussi , mais j'enlève la commande serin car il demande des valeurs et je n'arrive pas a les rentrer correctement !!??!!

tu vas faire un test pour mettre à 0 s'il n'y est pas sinon tu fais rien
Oui j'avais prévu de faire ça au départ mais j'ai simplifié vu que ca ne fonctionnait pas :

If PinC.4 = 1 and time > 5 then

Je voulais éteindre seulement quand il était allumé . mais si c'est stupide je le ferais pas !

Ton serin vient d'un récepteur radio ?
Oui , mais sinon ca fonctionne impeccable juste que je voulais que la sortie repasse a zéro au bout d'un certain temps
 

PieM

Senior Member
Le timeout ne peut pas marcher si tu es sur une réception radio, en raison des parasites reçus qui réinitialisent en permanence le timeout.
 

dje8269

Senior Member
Eh ben dis donc , j'ai décidément pas de chance . Une fois que j'aurais éclusé tous les problèmes je serais tranquille lol
D'accord , je vais donc faire un compteur en incrémentant une variable word , et a force d'essai je tomberais sur une valeur se rapprochant de la valeur voulue .

J'essaierai demain matin !!

Ben comme d'habitude PieM , MERCI . Mais comment connait tu tout ca ?
 

PieM

Senior Member
Eh ben dis donc , j'ai décidément pas de chance . Une fois que j'aurais éclusé tous les problèmes je serais tranquille lol
D'accord , je vais donc faire un compteur en incrémentant une variable word , et a force d'essai je tomberais sur une valeur se rapprochant de la valeur voulue .

J'essaierai demain matin !!

Ben comme d'habitude PieM , MERCI . Mais comment connait tu tout ca ?
Ben non ça ne peut pas marcher ! tu vas rester en permanence sur serin.
Essaye d'utiliser HSERIN sur C.1
 

dje8269

Senior Member
Ah pardon , j'avais pas compris ca comme ca . Je croyais que le timeout c'était le compteur qui incrémentais la valeur "time" a chaque seconde. et donc je n'arrivais jamais a 5secondes ; mais en fait non tu parlais de la fonction timeout juste derrière le SERin .

Je viens de lire la commande hserin , j'ai pas trop compris la différence mise a part la vitesse !!.

Une interruption ne serait il pas envisageable ?
 

PieM

Senior Member
Ah pardon , j'avais pas compris ca comme ca . Je croyais que le timeout c'était le compteur qui incrémentais la valeur "time" a chaque seconde. et donc je n'arrivais jamais a 5secondes ; mais en fait non tu parlais de la fonction timeout juste derrière le SERin .

Je viens de lire la commande hserin , j'ai pas trop compris la différence mise a part la vitesse !!.

Une interruption ne serait il pas envisageable ?
Et tu en fais quoi de ton interruption ? elle aussi va s'activer avec des parasites de ton Rx.
Relis calmement et complètement la commande HSERIN (et Hsersetup) stp: elle est non bloquante.
 

dje8269

Senior Member
elle aussi va s'activer avec des parasites de ton Rx.
Je pensais la faire s'activer sur le time pas sur la réception . par exemple des que time est supérieur a 5 paf , interruption qui met la sortie a l'état bas ...... . Mais si c'est pas envisageable tant pis, ca auras au moins le merite de m'avoir fais refléchir .....

J'ai relu la commande hserin et Hsersetup . J'y vois effectivement plus clair. déjà ca s'exécute en tache de fond ( un peu comme la commande servo quoi !) et donc n'est pas bloquante . SI je reçois rien , le programme continue sans avoir besoin d'utilisé de timeout . Ce qui devrait me permettre d'utiliser le time . j'ai bon ?

J'ai pas compris par contre pourquoi tu me demande d'utiliser hserin sur C.1 ?
Sur Hsersetup j'ai pas compris le choix du mode ? suis je obligé de le mettre ?

Sur un M2 la syntaxe est "hserin variable" ! . donc je peux écrire "hserin b1" par exemple mais ou sont passés mes qualifiers !!

Quand je pense que j'ai dis ' donne moi ca , je vais le faire vite fait bien fait " . :mad:
 
Last edited:

PieM

Senior Member
sur 08M2 l'entrée hserin est C.1.
pas de qualifiers.
Sur Hsersetup j'ai pas compris le choix du mode ? suis je obligé de le mettre ?
tu as une doc en javanais ou tu lis une ligne sur 2? tu es bien obligé de dire si tu es en mode T ou N.
 

dje8269

Senior Member
sur 08M2 l'entrée hserin est C.1
Autant pour moi , effectivement c'est une entrée fixe defini par la DS , je me disais aussi que je l'avais déjà vu quelques part !

pas de qualifiers.
Ca c'est nettement plus embetant ! car en 433MHZ sans qualifiers dur dur !!! je vais peut etre faire sur 2 bytes alors et le premier bytes me servira de qualifier !

tu as une doc en javanais ou tu lis une ligne sur 2? tu es bien obligé de dire si tu es en mode T ou N.
Ben mode N ou T , inverser les bit ou non pfioouuu , je testerais, que dire de plus !
 

dje8269

Senior Member
repose toi !
Tu as certainement raison . Mais la je suis agacé de voir tant de complexité pour pas grand chose !! enlevé les qualifiers me parait une très mauvaise idée, mais bon . j'arriverais plus tot au boulot demain pour essayer quelques trucs que j'espere avoir a peu prêt saisi .
Quand on as pas de tête , ben on se lève plus tôt que les autres . un peu comme les bras et le chocolat .

Merci de ta patience en tout cas; même si je sent que je commence a t'épuisé de nullité
 

PieM

Senior Member
Mais la je suis agacé de voir tant de complexité pour pas grand chose
Le "pas grand chose" est toujours relatif. Puisque tu as choisi de travailler avec un Picaxe, il faut se plier aux exigences du produit.
Le problème de la réception radio a été longuement évoqué depuis longtemps avec toutes les contraintes en dehors du fait que c'est une instruction bloquante comme d'autres.
 

dje8269

Senior Member
Bon , pour résumé , je l'ai dans l'os !!!

Test avec les interruptions : ECHEC car l'interruption de marche pas avec serin
Test avec le multitaches : ECHEC commande bloquante même le multitache
Test avec hserin : ECHEC , sans qualifier , sa s'allume et s'éteint aléatoirement .

Je ne vois plus grand chose , pour ne pas dire rien !!!. Enfin si , ce que je redoutais , passé avec un 14M2 et le RFin/out , ce qui me fait changer tout mon hard , télécommande et récepteur , typon et tout le bazard ..... pfffff
 

PieM

Senior Member
Il n'y a pas d'interruption avec le timer sur un 08M2
Le multitache n'est pas un vrai multitache! donc une instruction bloquante reste bloquante.
On a déjà parlé de ça !

Passer avec RFIN sur un 14M2 ne sert à rien si il n'est pas en plus du 08M2.
auquel cas autant rester avec un 08M2 et un SERIN qui gère la com et l'autre les autres fonctions.
 

dje8269

Senior Member
Hummmm .........

tu as encore raison , et il n'y as bien sur, pas de timeout avec rfin ?
pas d'interruption sur le timer avec le 14M2 ?

je vais reflechir à l'envers pour voir : faire une pause de 60 seconde et sortir avec une interrutpion si on detecte un signal un truc biscornu quoi !!!

Il doit bien y avoir une solution !!
 

PieM

Senior Member
je ne connais pas ton appli, mais tu n'as qu'à émettre un ordre d'arrêt au bout d'une minute
suffit de distinguer ordre arrêt de l'ordre de marche par un code différent.
 

dje8269

Senior Member
mais tu n'as qu'à émettre un ordre d'arrêt au bout d'une minute
J'y avais pensé , mais ce n'est pas faisable en l'état . EN effet le TX s'enclenche grâce un BP qui viens alimenté tout le circuit émission . Pas d'appui pas d'alimentation . Ainsi rien ne consomme quand on appui pas sur la télécommande ; donc impossible de rendre autonome l'ordre d'arrêt. Et connaissant les personnes qui utilisent cette télécommande il vaut mieux que ca reste ainsi . :)

Je ne vois donc aucune solution !! a part l'emploi de 2 µC comme sur la voiture d'ailleurs ; Un gros point noir du picaxe ces commandes bloquantes et se pseudo multitaches ! . D'ailleurs il faudrat que je pense a faire un post sur mon ressenti du système picaxe , des fois que les concepteurs nous lisent en secret, ils pourraient amélioré certaines choses peut être

PS : pour relié deux broches de deux picaxes différents une simple résistance de 1 K entre les deux fait l'affaire ? pas de pull down ?
 

PieM

Senior Member
D'ailleurs il faudrat que je pense a faire un post sur mon ressenti du système picaxe
;)

Alors pense à l'envoyer à Microchip !

Si le picaxe ne te convient pas, il faut savoir qu'il y a beaucoup d'autres µC sur terre que l'on choisit en fonction de l'application.
 

dje8269

Senior Member
Le picaxe me va bien , simple , convivial , pas trop cher ...... Mais il peut avoir des points noirs . J'ai déjà du mal avec le langage du picaxe qui est super simple, alors changer de µC revient a apprendre un autre langage presque à chaque fois et faire ça à chaque application très peu pour moi .
 

jojojo

Senior Member
Test avec hserin : ECHEC , sans qualifier , sa s'allume et s'éteint aléatoirement .
Hum ...
Non, ça doit fonctionner, ça.
Respecte bien le protocole d'envoi (caractère bidon, plus paus de x ms, puis caractère de contrôle, puis donnée à transmettre), ça doit le faire ....
 

dje8269

Senior Member
Respecte bien le protocole d'envoi (caractère bidon, plus paus de x ms, puis caractère de contrôle, puis donnée à transmettre), ça doit le faire ....
Sans parler de protocole d'envoi , la télécommande éteinte , le récepteur s'allumait puis s'éteignait tout seul .

Mon code de reception :

Code:
#PICAXE 08M2


dirC.2=0					'Déclare C.2 comme entrée (trigger)
dirC.4=0					'Déclare C.1 comme SORTIE 

hsersetup B9600_4, %00

low C.4

'############################################################
'			Programme principal
'############################################################

do
	hserin w1	'Rentre la valeur dans w1

		if W1 = 65 then		'Si w1 = "A" 
			
			toggle C.4
			pause 2000
			W1 = 0
					
		end if
		
	
loop
 

dje8269

Senior Member
Bon ben , j'ai esquivé en disant que j'avais pas eu le temps ...... histoire de pas passé pour un incapable devant les gens du boulot. vous c'est pas pareil !! :p

J'ai décidé ce soir ou plutôt cette nuit de refaire les deux typons ; je passe direct en 14M2 émission pour le codage manchester ; et 14M2 + 08M2 pour la réception . car je les vois venir a me sortir encore des améliorations dans le futur ;

Comme ca plus de soucis . La communication entre les deux µC coté réception se feras par lien direct avec une R de 1K . Je vais prevoir 2 autres liens pour le futur .
Quand meme un petit timeout sur le RFin aurait été bienvenu dans mon cas lol


PS : les arduino ou pic sont ils bloquants aussi avec RFIN ?
 
Last edited:

BESQUEUT

Senior Member
Sans parler de protocole d'envoi , la télécommande éteinte , le récepteur s'allumait puis s'éteignait tout seul .

Mon code de reception :

Code:
#PICAXE 08M2


dirC.2=0					'Déclare C.2 comme entrée (trigger)
dirC.4=0					'Déclare C.1 comme SORTIE 

hsersetup B9600_4, %00

low C.4

'############################################################
'			Programme principal
'############################################################

do
	hserin w1	'Rentre la valeur dans w1

		if W1 = 65 then		'Si w1 = "A" 
			
			toggle C.4
			pause 2000
			W1 = 0
					
		end if
		
	
loop
Pas trop le temps de regarder ça en détails, mais ça me semble un peu trop sommaire.
Il faut à minima mémoriser le dernier ou les 2 derniers octets reçus.
A réception d'un nouvel octet, on vérifie que les 2 ou 3 octets correspondent bien à une séquence valide.
La Pause ne doit intervenir que si une séquence valide est retenue.
Bien se dire que les octets reçus en dehors du hserin (en particulier "IF" et "LOOP") sont perdus. Il faut donc envoyer plus de caractères que nécessaire pour que ce qui ne passe pas à la trappe soit significatif.
Ou utiliser le background receive.

Cela dit, je pense comme PieM que ça devrait marcher, au moins dans un environnement pas trop brouillé :

Une chance sur 256 qu'un caractère parasite soit un A, une sur 65536 que deux caractères successifs soient des A, etc...

Programme de débug :
Ajouter la mémorisation des octets reçus, puis, quand on a saturé la mémoire, envoyer le tout sur un port série.
Les caractères reçus sont-ils complètement aléatoires ? Quelle est la trame émise ?
Ma proposition suggère que la trame émise soit des suites de "A", peu importe le nombre.
 
Last edited:

dje8269

Senior Member
Bonjour à tous,

J'avoue ne pas avoir tout compris dans vos dires . Le fait de remplir la mémoire, séquence valide etc ....

Dans l'exemple du manuel ,il donne w1 comme variable d'enregistrement du hserin, ce qui fait 2 octet mais une seule variable ? si je rajoute un word ça nous ferait 4 octets et donc beaucoup moins de chance qu'un parasite se" déguise" en signal valide non ? Ou est ce que dans w1 il prends en compte comme deux octets ?

mon programme émission

Code:
#PICAXE 08M2				'definition du type de PICAXE

dirC.2=1					'Déclare C.1 comme une sortie
dirC.4=1				


'######################################################################################
'				Programme principal
'######################################################################################				
b1="A"


do
for b3=0 to 3	
Serout C.4,0,($55,$55,$55,$55)    	'trame anglaise
Pause 16          			'X et Y sont les identifiants b3 et b4 forment
		
	for b2= 0 to 5					'action si BP1 appuyé
	
		Serout C.4,0,("X","Y",b1)		'le corps du message                                      '
									
	next b2
next b3
high C.2
loop
 

PieM

Senior Member
Le fait d'émettre à 600 bauds et de recevoir à 9600 ne doit pas aider beaucoup les choses... !

Avec hserin actif tu reçois en permanence ce qui est envoyé dans deux octets, les nouveaux chassant les anciens.
donc quand tu lis le buffer de deux octets tu peux donc avoir des $55, des "x" des "y" des 65 ou des parasites...

Alors tu envoies une floppée de "A" et tu lis en attendant d'avoir deux A successifs donc $4141 soit 16705
 

dje8269

Senior Member
Ce matin j'ai pus faire les PCB ( grace au typon fait hier soir) et une partie du montage ; Entre midi et deux j'ai finis le montage ..... mais la télécommande ne fonctionnait pas comme je voulais . Je rencontre de nouveau un problème psychotechnique , un peu comme les mises a l'échelle , et du coup je n'arrive pas a trouvé la solution .....

Je sais je devrais me reposé , mais si je pouvais rendre la télécommande avant de partir ce serait assez cool !!! sinon pas grave ; Je peux me permettre d'aller vite fait reprogrammé je part a 16h00, je sais ça fais short .

Le principe est toujours le même :

Un TX qui quand on appui sur le BP s'alimente et envoie un ordre ( ici b1=1) tout simplement grâce a un 14M2 et la commande RFout. Je précise ceci à son importance que quand je relâche le BP, j'arrete l'alimentation de l'émetteur et du picaxe .

Coté Rx , j'ai un 14M2 pour recevoir l'ordre par RFin . Quand il reçoit b1=1 il met a l'état haut une sortie ( ici C.0), qui est directement relié a une entrée d'un 08M2 (C.1) . Quand l'entrée du 08M2 est a l'état haut , on detecte un ordre et on change l'état d'une broche de sortie qui active ou non , l'ouverture !!!

Je n'aurais jamais le temps de faire le schéma logiciel ; Je vous mets le schéma typon pour être plus clair ......

Actuellement ça fonctionne mais pas comme je le souhaiterais , en effet si je laisse mon doigts sur le bouton l'etat de sortie change toutes les secondes ........ ce que je ne veux pas . Je pensais passé par un "do loop while " , mais je m'emmêle les pinceaux. La difficulté vient du fait que quand je n'émet plus , b1 reste à 1 pour le 14M2 RX .....

Sans titre1.jpg
Sans titre2.jpg

Programme émission :
Code:
#PICAXE 14M2

'##########################    configuration    ################################	

' b0 à b7 pour les infos envoyés

symbol B_DONNEE 	= B.5		' Broche qui envoie les données au TX
symbol B_led 	= B.1

dirsB = %00100010 		' declare B.5 et B.1 en sortie


'#################################################################################
'##########################    Programme Principal    ############################	
'#################################################################################
b8 = 0
b1 = 1


do
inc B8
rfout B_DONNEE,(b0,b1,b2,b3,b4,b5,b6,b7) 	'envoi des données par RF

if b8>3 then 
	high B_led
end if

loop

Programme RX 14M2 :
Code:
#PICAXE 14M2

'#################################################################################
'##########################    Programme Recepteur    ############################	
'#################################################################################

'########################  Configuration  ########################

dirB.5=0				' Declare B.5 en entrée DATA
dirC.0=1				' Déclare C.0 en sortie

inputtype %0000000000100000 	'met la broche B.5 en  mode TDS


'####################################################################################################
'					Programme Principal
'####################################################################################################
do

RFin B.5,b0,b1,b2,b3,b4,b5,b6,b7		' Enregistre les données du RX

	If b1=1 then
		toggle C.0
		pause 1000
		low C.0
	end if

loop
Programme Rx 08M2

Code:
#PICAXE 08M2

'#################################################################################
'##########################    Programme Recepteur    ############################	
'#################################################################################

'########################  Configuration  ########################

dirC.2=1
dirC.4=1


'####################################################################################################
'					Programme Principal
'####################################################################################################

Do

If pinC.1 = 1 then
	
	toggle C.2
	do loop while pinC.1 =1
	
end if

If pinC.2 = 1 then 
	high C.4
else
	low C.4
end if


Loop
 

PieM

Senior Member
Si tu appuies en permanence sur ton BP de mise sous tension émetteur c'est normal qu'il envoie en permanence b1 vu ta boucle do loop!
si tu ne veux envoyer qu'une fois (ou 2-3 fois) tu envoies tes rfin et ton programme s'arrête.
il redémarre à la mise sous tension suivante.

Dans RX 14M2 il faut mettre b1 à 0 après ton toggle.

Dans RX 08M2 ton programme boucle tout pendant que C.1 est à 1 ? A quoi sert ce deuxieme toggle ???
C.1 est activé une fois sur deux et C.2 l'est 1 fois sur 4 ?

Pour faire ça tu n'as pas besoin du 08M2 ! je ne comprends plus trop là ....
 

dje8269

Senior Member
si tu ne veux envoyer qu'une fois (ou 2-3 fois) tu envoies tes rfin et ton programme s'arrête.
Voila la solution , pourquoi ni ai je pas pensé !!!
Dans RX 14M2 il faut mettre b1 à 0 après ton toggle.

Dans RX 08M2 ton programme boucle tout pendant que C.1 est à 1 ? A quoi sert ce deuxième toggle ???
C.1 est activé une fois sur deux et C.2 l'est 1 fois sur 4 ?
Oui en fait , j'ai essayé tellement de combinaison , que je me suis perdu

Pour faire ça tu n'as pas besoin du 08M2 ! je ne comprends plus trop là ....
Si si , car la je n'ai pas encore mis la temporisation . J'y vais a tâtons, déjà que j'étais bloqué avec ce bouton......

La solution me parait tellement évidente maintenant , toujours l'habitude de faire des "do-loop", que j'avais oublié qu'on pouvait arrêter le programme même sans relâché le bouton.

Malheureusement je ne peux plus faire de test, match de foot oblige, mais je travaille dessus ce week-end et lundi a la première heure , je test tout ca.

Comme d'hab un gros MERCI .

@BESQUEUT : j'aurais bien aimé testé votre solution mais j'avais déjà dessoudé les composants .....
 

BESQUEUT

Senior Member
V@BESQUEUT : j'aurais bien aimé testé votre solution mais j'avais déjà dessoudé les composants .....
C'est pratique d'avoir un Picaxe affecté à rien en particulier mais à toutes sortes d'essais.
Le mien est planté au milieu d'une carte d'essai que j'enrichi de divers connecteurs au fur et à mesure des besoins : test d'un nouveau capteur, d'un LCD ou d'un OLED, envoi de trames de test, lecture d'un port série...
Pour 33€ j'ai aussi un petit analyseur logique scanakit qui serait bien utile pour voir ce qui sort réellement de votre récepteur radio.
A défaut un Picaxe "de test" peut engranger quelques dizaines ou centaines d'octets en mémoire avant de les restituer sur un port série (ou USB).
Attention, si vous cherchez à renvoyer en temps réel ce que vous recevez du récepteur radio vers l'ordi, le Picaxe est beaucoup trop lent et rate beaucoup de caractères : le test n'est pas significatif.
 

dje8269

Senior Member
Comme promis le schéma . ( j'ai mis un émetteur laipac en lieu et place du récepteur je n'avais que ca en stock sur cet ordi)

Je vous soumet mes programmes afin de tester ca lundi matin . Je ne comprends pas un petit bug sur le programme 08M2 RX . quand la PinC.2 est à 1 , ca ne met pas à 1 la broche C.4 ???!!!???

Si vous avez des remarques amélioration ou autres , je suis toujours preneur et prêt a la discussion . Normalement ca devrait le faire !!

Sans titre.jpg

Programme émission :

Code:
#PICAXE 14M2

'##########################    configuration    ################################	

' b0 à b7 pour les infos envoyés

symbol B_DONNEE 	= B.5		' Broche qui envoie les données au TX
symbol B_led 	= B.1		' broche qui indique l'envoie effectué

dirsB = %00100010 		' declare B.5 et B.1 en sortie


'#################################################################################
'##########################    Programme Principal    ############################	
'#################################################################################

b1 = 1				'met 1 dans la variable b1 pour determiné l'ordre

for b8 = 0 to 2			' Envoi de 3 messages pour etre sur, ce qui prends 150ms 

rfout B_DONNEE,(b0,b1,b2,b3,b4,b5,b6,b7) 	'envoi des données par RF

next b8

high B_led		' On allume la led pour savoir que l'ordre est bien parti
pause 1000		' Si la personne laisse le doigt longtemps
low led		' On attend une seconde et on eteins la led
Programme Recepetion 14M2:

Code:
#PICAXE 14M2

'#################################################################################
'##########################    Programme Recepteur    ############################	
'#################################################################################

'########################  Configuration  ########################

dirB.5=0				' Declare B.5 en entrée DATA
dirC.0=1				' Déclare C.0 en sortie

inputtype %0000000000100000 	'met la broche B.5 en  mode TDS


'####################################################################################################
'					Programme Principal
'####################################################################################################
do

RFin B.5,b0,b1,b2,b3,b4,b5,b6,b7	' Enregistre les données du RX

	If b1=1 then
		high C.0
		pause 250		' Pause pour eviter les rebonds elle doit etre superieur a 150ms temps d'emission de l'ordre
		low C.0
	end if

loop
Programme Reception 08M2:


Code:
#PICAXE 08M2

'#################################################################################
'##########################    Programme Recepteur    ############################	
'#################################################################################

'########################  Configuration  ########################

dirC.2=1	' Sortie sur TIP120
dirC.4=1	' Led de visualisation 


'####################################################################################################
'					Programme Principal
'####################################################################################################

Do

If pinC.1 = 1 then		'réception de l'ordre du 14M2 qui dure 250ms
		
	toggle C.2			'on inverse l'interrupteur
	time = 0
	do loop while pinC.1 =1
	
end if

If pinC.2 = 1 then 		' Si l'interrupteur est fermé on allume la led de visualisation
	high C.4
else
	low C.4
end if

If time > 5 then			' Extinction de la sortie apres un temps donné
	low C.2
end if

Loop
 
Last edited:

PieM

Senior Member
Sur RX08M2 :
If pinC.2 = 1 then ne peut pas marcher puisque C.2 est une sortie!

Si je comprends bien si la sortie c.2 est à 1 tu mets C.4 à 1, sinon l'inverse...

ta logique m'étonnera toujours ! tu mets ta R et ta led directement sur C.2 et c'est tout.
 

dje8269

Senior Member
If pinC.2 = 1 then ne peut pas marcher puisque C.2 est une sortie!
Ok , on ne peut pas détecter qu'une sortie est à 1 !
ta logique m'étonnera toujours !
C'est ce qui fais mon originalité lol

tu mets ta R et ta led directement sur C.2 et c'est tout.
Euhh..... comment dire ..... je vais me cacher !!! j'ai honte la !!!
 

dje8269

Senior Member
Du coup comme le hard est fait , ca m'embête un peu de dessouder et de faire des gros pâtés pour déplacer la led et sa R . Comment détecter que la sortie est a 1 sans touché au hard ? Car comme j'utilise la fonction toggle afin d'éviter les bugs je suis coincé .
 

MGU

Senior Member
Bonjour,

Un bout de code vite fait, je ne sais pas si c'est une solution:

Code:
do
toggle C.2

b0=outpinsC
if bit2=1 then
		high C.4
		else
		low C.4
endif
pause 1000
loop
MM
 

PieM

Senior Member
Bien sûr que c'est une solution ...

en simplifiant ça peut même devenir:

Code:
dirsC = %10100
do
toggle C.2
b0=outpinsC
pinc.4=bit2
pause 1000
loop
 

dje8269

Senior Member
Bonjour à tous ,

Je n'avais pas vu ton post PieM !!

Alors je vous fais part du retour d'expérience de ce matin .

Par acquis de conscience j'ai donc essayé mon code en premier lieu , et à ma grande surprise, il fonctionne . Je viens donc de vérifier qu'un simulateur , reste un simulateur , rien ne remplace un vrai test in situ . C'est important je trouve de ce rendre compte soi-même des choses .
J'ai tout de même rencontrer un petit soucis . c'est qu'a l'allumage du récepteur ( inter à glissière), la led s'allumait en partant pour un cycle ( 5s pour les test). J'ai revu mes codes , forcé l'état des sorties a l'état bas a l'initialisation. Rien ni as fait . Des que je mettais sur ON , la led s"allumait pour 5s , pendant mes test ....... . Le problème ne venait pas du soft , J'ai donc mis une R de pull-down (10k) sur la liaison entre les deux PICAXE, et nickel . Ça ne s'allume plus au démarrage.

Code:
#PICAXE 08M2

'#################################################################################
'##########################    Programme Recepteur    ############################	
'#################################################################################

'########################  Configuration  ########################

dirC.2=1	' Sortie sur TIP120
dirC.4=1	' Led de visualisation 

Low C.2
Low C.4

'####################################################################################################
'					Programme Principal
'####################################################################################################

Do

If pinC.1 = 1 then		'réception de l'ordre du 14M2 qui dure 250ms
		
	toggle C.2			'on inverse l'interrupteur
	time = 0
	do loop while pinC.1 =1
	
end if

If pinC.2 = 1 then 		' Si l'interrupteur est fermé on allume la led de visualisation
	high C.4
else
	low C.4
end if

If time > 60 then			' Extinction de la sortie apres un temps donné
	low C.2
end if

Loop
Tout fonctionne bien , et pourtant j'ai une petite question portant sur le HARD, afin de compléter mon "instruction".
Quand le montage est alimenté .

Je met mon multimètre entre la masse du circuit et le collecteur du TIP120 ( transistor darlington) , et j'ai une tension de 0.6V ? est ce normal ? mon montage consomme t-il "au repos" ?

Au plaisir de vous lire !
 

MGU

Senior Member
Bonjour à tous ,


Tout fonctionne bien , et pourtant j'ai une petite question portant sur le HARD, afin de compléter mon "instruction".
Quand le montage est alimenté .

Je met mon multimètre entre la masse du circuit et le collecteur du TIP120 ( transistor darlington) , et j'ai une tension de 0.6V ? est ce normal ? mon montage consomme t-il "au repos" ?

Au plaisir de vous lire !
Bonjour,

Je ne comprends pas non plus:

Au repos, la broche du picaxe est à 0 v, le courant base à 0 mA, le TIP120 ne conduit pas, la tension collecteur est la tension alimentation.

Au travail, la tension broche picaxe est à 5 v, le courant base limité par la résistance (1 k), le Vbe est voisin de 1,2 v (darlington) et le Vcesat est donné par la courbe 8 (lien), fonction de Ic et Ib.

Un Vce de 0,6 v et "repos" sont incompatibles ou le transistor est mort.

Tu peux économiser la 10 k, elle est déjà dans le transistor.

MM
 
Top