Télécommande voiture RC + caméra

dje8269

Senior Member
Donc en fait tu escamotes le problème car tu arrêtes le moteur de temps en temps
tu as raison car la led est allumé tres faiblement . Donc visuellement elle est plus souvent eteint qu'allumé , ce qui signifierais que le moteur est plus souvent allumé qu'eteint . Donc c'est pas bon même si ca marche .

Tu vas faire un test pour mettre le compteur à 0 si il est différent de 0
Oui tu as encore raison . Faire un test pour supprimer une ligne n'est pas tres interressant .

Allez je continu mes test pour trouvé la solution ultime, avec ce hi2cflag
 

dje8269

Senior Member
Cette fois ce devrait être la bonne :
enfin je l'espere . Qu'en dis tu ?

le led est allumé fortement en permanence, ce qui signifie une extinction total du moteur !
de plus j'utilise la commande pwmduty pour l'extinction ,plus besoin de l'ecrire dans le scratchpad . cela prouve que le programme tourne en attendant de re-recevoir une info dans le scratchpad. Enfin je pense !

Code:
#PICAXE 28X2

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

Symbol moteur = B.0
Symbol sens = C.6
Symbol Direction = B.1
Symbol Pan = B.2
Symbol Tilt = B.3
Symbol Sirene = B.5
Symbol Secu = PinC.7
Symbol Gyro = pinA.0
Symbol Option = A.2

dirsA = %0101	'declare les broches A.0 et A.2 en sortie
dirsB = %00101111 'declare les broches B.0, B.1, B.2, B.3, et B.5 en sortie
dirsC = %01000000 'declare La broche C.7 en entrée


'########################  Initialisation  ########################

setfreq m8	

hi2csetup i2cslave, %10100000		' Met le 28X2 en Esclave

servo B.1,150				'Servo direction en broche B.1, position neutre a 150, MAJ 20ms

pwmout B.0, 125, 0 			' rapport cyclique a 0

put 1,125					' Ecrit dans le scratchpad la valeur du point milieu pour le moteur
put 3,125					' Ecrit dans le scratchpad la valeur du point milieu de la direction
Low sens					' met le relais a l'etat bas


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

main:
do
	get 0,b0,b1,b2,b3,b4,b5			' Lecture du scratchpad

if hi2cflag = 0 then 			'Si flag=0, donc perte de com

	b6 = b6+1 max 25			'Compteur d'erreurs de flag
		if b6>20 then 
		gosub Escape	
		end if
						
else
hi2cflag = 0		're-armement du flag
b6 = 0			'RAZ du compteur			
end if


		

'#####  Commande TOR  #####

Gyro = bit4	

'#####  Commande moteur  #####

Select Case b1			

Case < 101 		'Marche arriere
	high sens
	b1 = 100-b1					' Mise a l'echelle
	w13 = b1*37/10+130  max 500
	
	
Case > 128		'Marche avant
	low sens
	b1= b1-129					'Mise a l'echelle
	w13 = b1*3+130 max 500			'130 commence à faire avancer la voiture.
	
else
	w13 = 0					'Sinon point milieu , donc a l'arret

end select

pwmduty B.0, w13					'envoi du pwm sur le moteur

'#####  Commande direction  #####

Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 192 - b3
case > 134
	b3 = b3*4/10
	b3 = 200 - b3
else
	b3=150
	
end select

servopos 1,b3

Loop



Escape:

do while hi2cflag = 0
	pwmduty B.0,0
	gyro = 1
loop

b6 = 0
gyro = 0
hi2cflag = 0
return
 

dje8269

Senior Member
Re moi ,

Bon je pense qu'il faut que j'avance un peu .

Et si on passait a la sirène ? je pense que cela va posé un problème aussi avec les pauses mais surtout avec la réactivité de la voiture.

Ce que je souhaiterais réussir à faire .

Quand on appui sur un bouton cela enclenche une sirène . quand je re-appui cela l'arrête . Par la suite , il y aurais un autre bouton permettant de changer le style de sirène .
cette sirène devra être joué pendant que la voiture roule .

Je pensais la mettre en multitache, car sinon comment joué de la musique pendant que le programme tourne ? j'ai trouvé ca pour les musiques :
Lien vers fréquences Il faut regarder à la fin de la page
 

PieM

Senior Member
Cette fois ce devrait être la bonne :
enfin je l'espere . Qu'en dis tu ?

le led est allumé fortement en permanence, ce qui signifie une extinction total du moteur !
de plus j'utilise la commande pwmduty pour l'extinction ,plus besoin de l'ecrire dans le scratchpad . cela prouve que le programme tourne en attendant de re-recevoir une info dans le scratchpad. Enfin je pense
J'ai regardé rapidement mais rès sincèrement je ne comprends pas comment fonctionne ton programme :
tu mets le flag à 0 à deux endroits, avec un compteur qui lorsqu'il arrive au bout renvoie sur une autre boucle d'attente... Je suis incapable de savoir ce qui agit dans la réalité.

cela prouve que le programme tourne en attendant de re-recevoir une info dans le scratchpad.
De toute façon le programme tourne même si le scratchpad n'est pas mis à jour. les commandes servo et pwm sont en tâche de fond. Le problème n'est pas là...

Enfin si le résultat te convient ...
 

PieM

Senior Member
Je pensais la mettre en multitache, car sinon comment joué de la musique pendant que le programme tourne ? j'ai trouvé ca pour les musiques :
Lien vers fréquences Il faut regarder à la fin de la page
Pas de multitache sur un X2 et de toute façon ça ne sert à rien avec une commande son.
Il faut utiliser un PWM et te débrouiller sans les pauses.
 

dje8269

Senior Member
tu mets le flag à 0 à deux endroits
Oui effectivement ,en fait , il faut prendre en compte que des fois le compteur se met compter mais sans arrivé jusqu'à 20 ! Lors d'une micro rupture par exemple il compte jusqu'à 10 , quand il reprends la com il faut aussi le remettre a 0 tout comme le compteur .

En fait la deuxieme boucle sert a savoir quand on as repris la communication , c'est grace a cette astuce que je peux eteindre entierement le moteur . sans quoi le moteur " clignoterais" comme tu me l'as fais remarqué .

En fait pour résume :

On regarde si le flag est a 0 :
- si il est à 1 on a la com , donc on re-arme le flag , on met le compteur a 0 et on continue normalement le programme.
- si on perd la com, le flag passe à 0 et la deux solutions :
- la communication reprend, avant que le compteur arrive a 20 , on efface le compteur , et on re-arme le flag et on continue normalement.
- La communication ne reprend pas , le compteur arrive a 20, alors la on "appelle les pompiers".

sub escape:
La tant que la com n'est pas revenu on boucle pour éteindre le moteur et on ne fais que ca. ça sert de temporisation.
Si la com revient , on sort de la boucle de coupure du moteur .
On re-arme le flag et on remet le compteur a 0 . et ca repart .

Peut etre y a-t-il plus simple , mais ca marche impeccable . Je sais pas si j'ai été trés clair .

De toute façon le programme tourne même si le scratchpad n'est pas mis à jour
Oui mais il tourne sur une seule fonction , éteindre le moteur
 

dje8269

Senior Member
Il faut utiliser un PWM et te débrouiller sans les pauses.
D'accord je vais essayé ca , j'ai mis une sortie sur B.5 pour ca, comme tu me l'avais dis . Car compatible avec la sortie pwm du moteur il me semble, ou je confond avec le servo .

Sirène de police :
setfreq m4
pwmout pwmdiv16, 2, 143, 287
pause 545
pwmout pwmdiv16, 2, 127, 256
pause 545
il faut donc remplacé les pause par des sons non audibles ? tu crois que ca peut le faire ?
 

PieM

Senior Member
La tant que la com n'est pas revenu on boucle pour éteindre le moteur et on ne fais que ca. ça sert de temporisation.
Si la com revient , on sort de la boucle de coupure du moteur .
On re-arme le flag et on remet le compteur a 0 . et ca repart .

Peut etre y a-t-il plus simple , mais ca marche impeccable . Je sais pas si j'ai été trés clair .
C'est ce que faisait le programme dont tu parlais en #385. plus simplement.


il faut donc remplacé les pause par des sons non audibles ? tu crois que ca peut le faire ?
Un pwm ne définit pas une durée ! Il va te falloir travailler avec les timers du 28X2 !!
Si tu as l'intention de faire un orchestre, tu as une autre solution, c'est de mettre un 08M2.

En plus si tu t'amuses à changer la fréquence de ton Picaxe en cours de route, tu vas avoir des surprises !
 

dje8269

Senior Member
Si tu as l'intention de faire un orchestre, tu as une autre solution, c'est de mettre un 08M2.
Je crois que PapyJP, m'avais fais la remarque aussi . Disons que ce seras une trés bonne solution de repli .
Je vais tout de même essayé avec les timers .

Si tu as l'intention de faire un orchestre
J'avais pensé mettre 3 ou 4 sonnerie genre, ambulance , pompier , police avec un bouton pour basculer d'une a l'autre

En plus si tu t'amuses à changer la fréquence de ton Picaxe en cours de route
effectivement dans mon Copier/Collé y'as le setfreq m4 , erreur j'ajusterais les frequences pour garder le m8 je n'ai que les diviser par deux non ?
 

dje8269

Senior Member
Excellent Michel merci bien .

Je n'ai plus qu'as essayé d'adapter tout ca a la fréquence de 8Mhz . trouvé la solution avec le time ( je pense me diriger vers la méthode du lapin blanc . Même si dans ma conviction profonde , je me vois déjà rajouté un 08M2 dédié a ca , car dans tous les cas je doit refaire le typon, et je perds pas de vue qu'il me reste encore deux servos à commander pour la caméra, et que je souhaite un max de réactivité .

En tout cas c'est cool , la sirène pompiers US doit être géniale .
 

dje8269

Senior Member
Bon, le choix de passé par un picaxe dédié pour jouer la musique se precise, car le pwm perturbe ma direction, le servo se met a faire des petits accoups .

sinon voici une petite vidéo . Dur dur de vous montrer la réaction quand perte de connection, mais ca marche impeccable .

Vidéo par ici

[video=dailymotion;x1qbozk]http://www.dailymotion.com/video/x1qbozk_voiture-rc-avec-picaxe-7_tech[/video]
 

dje8269

Senior Member
En principe le PWM sur B.5 est indépendant du timer servo...
J'ai écris un programme de test que j'ai injecté , et à ma grande surprise le servo "vibrotais", ca m'as fait un peu peur , j'ai donc re-injecter l'ancien programme, et nickel . J'en ai déduis que l'utilisation d'un pwm me perturbais quelque chose .

J'avoue que c'est bizarre, car je n'avais même pas déclencher le pwm encore .

Je vais regardé mon schéma, mais y'as des chances que je dédis un picaxe rien qu'a ca . un petit 08M2 que je programmerai pas sur site pour me simplifier le typon. Je pense que je devrais m'en sortir pour les lumieres avec le time . genre 1 secondes la lampe rouge allumé et l'autre seconde la bleue .

Sinon encore merci pour tout , car la voiture fonctionne vraiment très bien . On voit le début de la fin du tunnel lol . Plus qu'a mettre ma camera et les deux servos et le tour est joué .

Pour les infos sur la caméra j'ai pris celle-ci : camera
 

dje8269

Senior Member
En attendant j'ai bossé sur la sécu moteur .

Je me posais une question , est ce que ça vaut vraiment le coup de creer une fonction sub pour ca , ou juste en l'integrant comme je l'ai fais, c'est bon .
J'ai preféré temporisé la coupure moteur, car on peut taper un mur, sans forcement insisté dessus ; D'ou le déclenchement retardé !

Les test sont OK !
Code:
#PICAXE 28X2

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

'b0 à b7 pour les communications
'b8 pour le compteur d'erreur de com
'b9 pour la secu moteur
'b10 pour le compteur de la secu moteur


Symbol moteur = B.0
Symbol sens = C.6
Symbol Direction = B.1
Symbol Pan = B.2
Symbol Tilt = B.3
Symbol Sirene = B.5
Symbol Secu = PinC.7
Symbol Gyro = pinA.0
Symbol Option = A.2

dirsA = %0101	'declare les broches A.0 et A.2 en sortie
l'intégrant = %00101111 'declare les broches B.0, B.1, B.2, B.3, et B.5 en sortie
dirsC = %01000000 'declare La broche C.7 en entrée


'########################  Initialisation  ########################

setfreq m8	

hi2csetup i2cslave, %10100000		' Met le 28X2 en Esclave

servo B.1,150				'Servo direction en broche B.1, position neutre a 150, MAJ 20ms

pwmout B.0, 125, 0 			' rapport cyclique a 0

put 1,125					' Ecrit dans le scratchpad la valeur du point milieu pour le moteur
put 3,125					' Ecrit dans le scratchpad la valeur du point milieu de la direction
Low sens					' met le relais a l'etat bas
b8=0

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

main:
do
	get 0,b0,b1,b2,b3,b4,b5			' Lecture du scratchpad

if hi2cflag = 0 then 			'Si flag=0, donc perte de com

	b8 = b8+1 max 25			'Compteur d'erreurs de flag
		if b8>20 then 
		gosub Escape		' Si plus de 20 erreur on appelle les pompiers
		end if
						
else
hi2cflag = 0		're-armement du flag
b8 = 0			'RAZ du compteur			
end if


'#####  Commande TOR  #####

Gyro = bit4	

'#####  Commande moteur  #####

Select Case b1			

Case < 101 		'Marche arriere
	high sens
	b1 = 100-b1					' Mise a l'echelle
	w13 = b1*37/10+130  max 500
	
	
Case > 128		'Marche avant
	low sens
	b1= b1-129					'Mise a l'echelle
	w13 = b1*3+130 max 500			'130 commence à faire avancer la voiture.
	
else
	w13 = 0					'Sinon point milieu , donc a l'arret

end select

pwmduty B.0, w13					'envoi du pwm sur le moteur

'#####  Sécurité moteur  #####

readadc C.7, b9					' Lecture de la broche securité
if b9 > 90 then 					' Pour eviter les coupures intempestives sur un simple choc on compte avant de couper le moteur
	b10=b10+1 max 30
		if b10>20 then 			' Si le moteur est au dessus de 90 pendant 20 cycles
			pwmduty B.0,0		' On coupe le moteur
			pause 3000			' On fais une pause
			b10=0				' On RAZ le compteur
		end if
else
b10=0

end if

'#####  Commande direction  #####

Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 192 - b3
case > 134
	b3 = b3*4/10
	b3 = 200 - b3
else
	b3=150
	
end select

servopos 1,b3

Loop

'####################################################################################################
'					Programme Subsidiaire
'####################################################################################################


'########     Perte de communication     ##########
Escape:

do while hi2cflag = 0		' Tant que le scratchpad n'as rien recu on eteins le moteur
	pwmduty B.0,0
loop

b8 = 0				' En sortant de la boucle, c'est que la communication est revenue
hi2cflag = 0			' On remet le compteur a 0 et on ré-arme le flag
return
 

PieM

Senior Member
Inutile de créer un s/prog. ça n'apporte rien à part de perdre du temps avec un gosub.

Le mieux dans la gestion de la charge moteur est de faire une sorte de moyenne glissante. (voir ICI)
Car là il suffit d'avoir une seule valeur < seuil pour perdre la sécurité.

Il est comment ton circuit d'entrée sur C.7 ?

Mais si ça te va comme ça ... moi aussi .
 

dje8269

Senior Member
Bonjour PieM,

Inutile de créer un s/prog. ça n'apporte rien à part de perdre du temps avec un gosub.
Il me semblait aussi , mais j'avais un doute, merci.

Mais si ça te va comme ça ... moi aussi .
Je sais pas si me va , il faut le voir a la l'utilisation avec un enfant . C'etait juste pour dire que ca coupait bien en fait . Ton idée de moyenne glissante est excellente . Car effectivement uen seule valeur et la sécurité saute . Je vais regarder ton lien de ce pas .

Voici le schéma du circuit pour le moment comme tu me l'as demandé: Je dois rajouter un 08M2 pour la musique :

Schéma.JPG
 
Last edited:

dje8269

Senior Member
Je viens de regarder ton lien . C'est vraiement bien, mais ne serait pas trop gourman en ressources ? ou alors on pourrais l'incruster seulement quand un defaut est detecté ? .

Crois qu'il serait possible de paufiner un petit truc dans le meme style . Je n'en avais pas parlé pour le moment car, je pensais pas que c'etait possible de le resoudre .

De temps en temps , mais vraiement rarement, il y as des erreurs de communication ou d'ionterpretation bref , la voiture fais des petits coup brusque en marche arriére . ca dur 1ms mais on entend le relais claqué la voiture fais un accoup et repart normalement . C'est tellement rare et rapide que ce n'est pas tres tres genant, mais disons que si on pouvait comparer 2 valeurs de suite ou faire une mini moyenne afin de regler cela , sans gener la reactivité , ce serais fort interressant . Je sais que j'en demande beaucoup .
 

PieM

Senior Member
Pour les infos sur la caméra j'ai pris celle-ci : camera
Heu... tu as trouvé la doc sur ça ? Rien sur la résolution, sur la commande des servos .... qui sont spéciaux.
Prévois un AirBag car le premier mur à 30km/h te donne le droit de rejouer.

C'est vraiement bien, mais ne serait pas trop gourman en ressources
?? beaucoup moins que ton programme...
Vu ton schéma, tu as déjà un filtre passe bas à l'entrée C.7 mais qui a une constante de temps faible (0.1s)

la voiture fais des petits coup brusque en marche arriére
En marche arrière ?
 

jojojo

Senior Member
Si on ne descend pas en dessous de 1000 hz, pour le PWM, on peut encore largement diminuer le 10µ du PB (testé à 1µ, ça fonctionne très bien).
Donc, pas besoin de se casser la tête.
De plus, on restera, quoique l'on fasse, dépendant de la vitesse des instructions readadc et pwmoff (plus les autres, sauf a passer en interruptif).
CQFD "Ce Qui Foire Differemment"
 

dje8269

Senior Member
Prévois un AirBag car le premier mur à 30km/h te donne le droit de rejouer.
Oui tu as raison , c'est une bonne idée !!!!! J'avais quand même prevus une cage de protection pour la camera, vu le prix ! sinon pour les infos de la camera, rien de spéciale resolution à 600TVL , alimenté en 5V.

En marche arrière ?
Oui en fait par exemple,quand je pose la voiture allumée au sol,au bout d'un moment , elle fait un petit coup en marche arriére toute seule . Mais vraiment petit , elle recule a peine ( genre 2 ou 3cm), et on attend le relais claqué. Comme un parasite qui perturberais la reception , et qui donnerai un ordre non voulus .
 

PieM

Senior Member
Si on ne descend pas en dessous de 1000 hz, pour le PWM, on peut encore largement diminuer le 10µ du PB (testé à 1µ, ça fonctionne très bien).
Donc, pas besoin de se casser la tête.
Le problème n'est pas tellement au niveau du PWM, mais concerne les aléas de la route. il ne faut pas passer en sécurité dès le moindre faux plat ou cailloux sur le chemin.

J'avais quand même prevus une cage de protection pour la camera, vu le prix !
Vu le prix aussi, j'espère que tu as toute la doc avant de te lancer!!

Le tilt sert à quoi avec un montage sur une voiture ?
 
Last edited:

dje8269

Senior Member
Vu le prix aussi, j'espère que tu as toute la doc avant de te lancer!!
Même pas recu de doc avec :-( . Mais ca devrait pas etre sorcier , c'est fais pour du FPV donc rien de trés spéciale ;

Le tilt sert à quoi avec un montage sur une voiture ?
Pour regarder en l'air ou en devers ! ca peut toujours servir !
 

dje8269

Senior Member
tu as donc aussi l'émetteur et le récepteur
Oui en 1.2Ghz , mais pas l'écran , ce sera sur la télé pour le moment et pour les test .

Pour l'émetteur vidéo , je dispose de celui ci : Emetteur 1.2Ghz

Et son Récepteur par ici

Je vais leurs dédié une alimentation commandé par un des Picaxe déjà présent pour allumé ou non l'émetteur si c'est possible .
 
Last edited:

PieM

Senior Member
Ben, si... :rolleyes:
A 15 kHz, il n'y a pas besoin de grosse valeur de RC en filtre de PWM!
Par contre si on ne veux pas passer en sécurité à la moindre escarbille sur la route, il vaut mieux réagir avec un peu de lissage de l'info.
 

PapyJP

Senior Member
Faites un break, jouez de la musique !
Avec PE5.5 ( 08M2 ), onglet Picaxe > wizards > RTT ( Ring Tone Tune ). Légèrement différent avec PE6.0
Exemples de tons
( à rentrer au moins deux fois si vous voulez vous rendre compte sur un ordi équipé d' une carte son ( onglet ' jouer ' ) ou à copier dans un programme pour les faire tourner en boucle ).
Les valeurs proposées concernent, dans l' ordre ' Duration, Note, Octave ' et sont à choisir dans les menus déroulants. Le code hexa est automatiquement calculé et sert de contrôle.
Pompiers ( BPM = 4)
1/1, A, 5 ($A9)
1/1, B, 5 ($AB)
Police ( BPM = 2 )
1/1, A, 5 ($A9)
1/1, D, 6 ($82)
Gendarmerie ( BPM = 2 )
1/1, A, 5 ($A9)
1/1, F#, 6 ($86)
Samu ( BPM = 3 )
1/1, G#, 5 ($A8)
1/1, C, 6 ($80)
Ambulance ( BPM = 3 )
1/4, G#, 5 ($28)
1/4, C, 6 ($00)
1/4, G#, 5 ($28)
1/1, P
Enfin vous pouvez choisir des commandes LED qui clignoteront en rythme.
Bon break !
 

dje8269

Senior Member
Merci PapyJP

tu as lu ? je vais dédié un 08M2 pour la musique comme tu me l'avais conseillé !!!! . y'as que les cons qui changent pas d'avis, et j'ai enormement changé d'avis moi, au fil de mes aventures ;lol

Je voulais revenir sur un point avec PieM et la courbe de lissage. en fait Pour ce cas présent nous en avons pas besoin . Car tu m'avais dis :

Le mieux dans la gestion de la charge moteur est de faire une sorte de moyenne glissante. (voir ICI)
Car là il suffit d'avoir une seule valeur < seuil pour perdre la sécurité.
Je viens de verifier et regarder mon programme . et je me suis rendu compte qu'en fait, quand le moteur est coupé par sécurité, j'oblige la voiture a s'arreter avec la pause ; Histoire de me laisser le temps d'intervenir physiquement , ou qu'Alexis puisse avoir le temps de reagir. Donc techniquement on as pas besoin d'attendre qu'une valeur redescende en dessous du seuil ;
 

dje8269

Senior Member
Je suis en train de plancher sur l'intégration du 08M2 pour effectuer les différents sons : Les sirènes et/ou le klaxon . en utilisant le même HP grâce à la commande PWM .

Il devra y avoir une entrée pour lancer la sirène, une autre pour faire un bip style "klaxon" , et une autre pour changer de style de sirène . Plus une sortie PWM commandant le HP .

Une question hard me taraude . Quelle est la meilleure façon de connecter le 08M2 ?

Donc puis je faire arrivé, la sortie du RXsur le 14M2 et le 08M2 en même temps pour que les infos arrive sur les deux ? et ainsi traiter les infos qui concerne les sons par le 08M2
Ou dois je dédié des sorties du 14M2, pour activé les entrées du 08M2, suivant les ordres recus par le RX ? Afin de lui dicter quoi faire ?

Je ne peux pas faire de liaison i2c car j'ai besoin de la sortie pwm ; et puis sa compliquerai le transfert de donnée sur le 28X2.

Voila je sais pas trop qu'elle solution choisir , je me confie a votre analyse et expertise ! j'aurais une petite tendance pour la deuxième .

Tant qu'a parlé hard . La caméra et l'émetteur seront sans doute vraisemblance, alimentés par une deuxième batterie dédiée . Je pense utilisé un relais pour l'activer a partir du 14M2 ou 28X2 . Mais en même temps je dois piloter les servos de la caméra avec le 28X2 . les servos de la camera seront donc alimentés par la première batterie , cela pose -t-il un problème ? je pense que non car l'alim des servo et de la caméra sont distinctes ! mais je préfère être sur .

Voila, ca fait beaucoup de questions, mais autant essayé de tout régler d'un coup pour sortir un typon s'approchant au plus prêt du typon final ;
 

dje8269

Senior Member
Bonjour à tous ,

Bon la nuit porte conseil, la commande Rfin sur le 08M2 est déconseillée car, bloquante et peu compatible avec les pauses de la musique . je me dirige encore doucement sur la deuxième solution. A savoir connecté une entre pour le klaxon , une pour la sirène , et une pour le changement de sirène .
 

PieM

Senior Member
Il faut rester dans une certaine logique :

L'émetteur t'envoie les ordres via RFIN. Il doit être le plus rapide possible.
Les ordres sont reçus par le 14M2 qui doit lui aussi être le plus réactif possible; Sont job mis à part quelques bricoles est de tout transférer sur le 28X2 en tâche de fond via la liaison I2C.

Donc tous tes ordres doivent repartir du contenu du scrachpad.
tes infos destinées aux sons doivent être lues dans le scratchpad et transférées au 08M2 à partir du 28X2.

a/ Le plus élégant est que le 08M2 aille lire dans le scratchpad du 28X2
b/ Sinon, il te faut une liaison non bloquante: pas de pulsout, de serout ou de truc comme ça.
Par exemple, tu mets à disposition du 08M2 une tension analogique (31 niveaux) sur une sortie du 28, via la commande DACLEVEL. ça te fait 32 possibilités avec une seule sortie/entrée , et que le 08M2 va lire quand il le veut.

Le 28X2 a largement le temps de faire ça, car toutes ses actions importantes sont en tâche de fond et l'actualisation des commandes ne se fait qu'au rythme du RFIN qui est lui plus lent que le temps de cycle du 28X2.
 

dje8269

Senior Member
Ok je pense avoir compris le principe :

a/ Le plus élégant est que le 08M2 aille lire dans le scratchpad du 28X2
Ceci implique une autre liaison i2c ? ca complique typon et programme non ?

Par exemple, tu mets à disposition du 08M2 une tension analogique (31 niveaux) sur une sortie du 28
Ca me plait bien ca, car c'est le plus simple . Mais je croyais qu'un PIC ne savait pas sortir une tension analogique ?

Pour savoir si j'ai bien compris . Suivant la lecture des ordres recu dans le scratchpad, le 28X2 "emet" une tension analogique en correspondance ave les ordres, sur une de ses sorties configurées comme telle (DACLEVEL). reliée elle même a une entrée "readdac" du 08M2 qui pourra interpreter la lecture de la tension ; et donc de l'ordre recu , pour ainsi agir en conséquence " klaxonner" , allumer la sirène , ou changer de siréne
 
Last edited:

PieM

Senior Member
Ceci implique une autre liaison i2c ? ca complique typon et programme non ?
Non il n'y a qu'un seul réseau I2C qui comporte des maîtres et des esclaves. Et il faut comprendre que le 28X2 en esclave se comporte comme une mémoire EEPROM externe. Tu peux lire / écrire dans un scratchpad sans que cela perturbe le programme en cours.

Pour savoir si j'ai bien compris .
Oui tu as tout compris. La sortie PWM du 08M2 peut alors éventuellement te servir à une autre bricole que tu vas bien trouver à rajouter !
Mais je croyais qu'un PIC ne savait pas sortir une tension analogique ?
Si il y a la commande DACSTUP/DACLEVEL qui permet d'avoir 32 niveaux (0-31) de tension compris entre 0 et la tension d'alim.
Sinon, tu peux faire une sortie ana avec un PWM .

Tu prévois éventuellement en plus une entrée / sortie directe câblée entre le 28 et le 08.
 

dje8269

Senior Member
Tu peux lire / écrire dans un scratchpad sans que cela perturbe le programme en cours.
Je ne sais pas comment se comporte une mémoire EEPROM, d'ailleurs je sais pas trop ce que c'est , ou plutot reellement ( car c'est de la mémoire ca c'est sur lol) . Mais pouir allé lire le scratchapd sur le 28X2 comment cablé mon 08M2 dans ce cas ?

La sortie PWM du 08M2 peut alors éventuellement te servir à une autre bricole que tu vas bien trouver à rajouter !
La je pense que je suis a court d'idée !!!! quoi que l'idée de l'airbag ................................... je plaisante .

Tu prévois éventuellement en plus une entrée / sortie directe câblée entre le 28 et le 08.
D'accord ! je le ferais .
 

PieM

Senior Member
Je ne sais pas comment se comporte une mémoire EEPROM, d'ailleurs je sais pas trop ce que c'est , ou plutot reellement ( car c'est de la mémoire ca c'est sur lol) . Mais pouir allé lire le scratchapd sur le 28X2 comment cablé mon 08M2 dans ce cas ?
Ben il suffit de relier les sda et scl ensemble.

Mais utilise l'autre solution (ana) , ça te sera plus simple.
 

dje8269

Senior Member
Mais utilise l'autre solution (ana) , ça te sera plus simple.
Ok ! j'aime bien quand tu me parle comme ca ! :D

Entre midi et deux j'essaie de faire un schéma pour vous montrer tout ca . De plus je vais travailler sur ma plaquette d'essai afin de commencer a programmer le 08M2 pour faire de la musique .
 
Top