Télécommande voiture RC + caméra

PieM

Senior Member
Sur un 28X2 qui n'est pas un 20M2, il faut utiliser B.0 et B.5. d'ailleurs c'est bien B.0 qui est déjà utilisé pour le moteur de traction....
 

dje8269

Senior Member
Bonjour à tous,

Bon voila , voiture finie pour la partie Hard , nouvelle plaquette avec de l'I2C . Nouveaux servo de direction et cette fois avec une jolie fixation . ( photo ce soir)

Il ne me reste plus qu'a vous embeter avec le soft maintenant ......

D'ailleurs auriez vous des conseils pour L'i2c, avant que je me jettre comme d'hab la tête dedans ? ( initailisation; commande a eviter ....... )

Merci
 

dje8269

Senior Member
Bon ben dur dur .......

Je n'arrive pas à avancer , car malgrés plusieurs lectures de hi2c sur le manuel, je ne comprends pas ces mémoires .

Pour resumé j'ai un 14M2 en maitre , qui recoit les données RFin .
Et un 28X2 en esclave pour effectuer les commandes , moteur, servo et TOR .

Quand j'ecris cela avec le maitre :

Code:
hi2cout 0,(b0,b1,b2,b3,b4,b5)	    ' Envoi des données au 28X2 esclave
Ou vont réellement ces valeurs ? dans le scratchpad de l'esclave ? ou dans les variables b1...b5 de l'esclave ?

Apres moultes lecture et relecture, voila ce que je crois avoir compris .

Les valeurs lus par le RFin sont stockées dans b0 à b7 du PICAXE maitre.
Ensuite j'envoie ces valeurs dans le scratchpad de l'esclave. Qui vont en fait dans des registres du scratchpad ,à partir de 0 . Donc la valeur se trouve dans le registre nommé 0 ou 1 ?
Pour utilisé ces valeurs stockées dans le scratchpad, il faut les lire et les enregistrer dans la mémoire de l'esclave par exemple : get 0,b0 ou get 1,b0 .
Et enfin la je pourrais utiliser mes variables pour mes commandes !

Suis je sur la bonne voie ?
 
Last edited:

PieM

Senior Member
Oui tu es dans la bonne voie, mais:

sur une liaison I2C avec un picaxe esclave, il faut que l'adresse de l'esclave soit définie. (Il peut y avoir plusieurs esclaves)

Donc 1ere chose , sur le 28X2, définir une adresse par la commande hi2csetup i2cslave, %10100000
le 28X2 aura donc %10100000 pour adresse, soit $A0 écrit en hexadecimal

Ensuite sur le maître, il faut lui dire avec qui il va communiquer et sous quel mode, avec un hi2csetup i2cmaster, $A0, i2cfast_8, i2cbyte
le i2cfast_8 est à modifier en fonction de la fréquence d'horloge du maître. le fast signifiant que la transmission se fera à 400 kHz.

Comme tu n'as qu'un esclave, ces deux instructions sont à mettre en début de progarmme en initialisation;

Donc là tout est en place:

pour envoyer du maitre vers l'esclave :
hi2cout 0, (b1,b2,b3,b4,...b8) va placer le contenu des variables b1 à b8 dans le scrachpad de l'esclave à partir de la mémoire 0.
pour rapatrier des infos de l'esclave vers le maitre:
sur le maitre: hi2cin adr1, (bx) va lire le scratchpad esclave à l'adresse adr1 et mettre la valeur dans la variable bx du maître.

coté esclave 28X2:
pour lire toutes les valeurs transmises dans son scrachpad : get 0, (bx, ...bz) les valeurs lues peuvent être mises dans n'importe quelles variables.
pour lire uniquement le b3 transmis : get 2 (bx)

pour écrire une valeur : put 896 (b5) va écrire la valeur de b5 en position 896 du scratchpad. (1023 positions sur le 28X2)

Le scratchpad agit comme une mémoire externe pouvant être lue et écrite à tout moment par le maître, sans perturber le programme de l'esclave.
les données sont lues et écrite par l'esclave via les commandes get et put.
 

dje8269

Senior Member
Merci PieM,

Ca me rassure un peu . Je suis donc pas tout a fais perdu . Avant de vous presenter un code "valable", j'avais encore quelques questions de débutant .

Est il plus mieux bien, de definir toutes les broches non utilisés comme des sorties ,afin d'eviter des bugs ?

Pour en revenir au scratchpad :

Pour l'esclave , peut il utiliser les valeurs du scratchpad à la volée ? C'est à dire sans les stocker dans une variable afin de gagner du temps . Car sinon il va falloir stocker toutes mes données envoyées dans des variables afin de les rendres exploitables .

sur une liaison I2C avec un picaxe esclave, il faut que l'adresse de l'esclave soit définie
Ca je l'avais fait, par contre puis je mettre "i2cfast_32" car les deux picaxes travaillent à fond les gamelles à 32Mhz

Dans la definition du scratchpad sur la doc en francais , ils disent que c'est une mémoire temporaire ! quand est il en realité , les données s'effacent elles au bout d'un moment ?

hi2cout 0, (b1,b2,b3,b4,...b8) va placer le contenu des variables b1 à b8 dans le scrachpad de l'esclave à partir de la mémoire 0.
Dans ton exemple tu n'utilise pas b0 y'as til une raison (car moi je l'utilise)? si oui serait ce par ce que l'i2c utilise le bit0 comme flag d'interruption ? dans ce cas puis je tout de même utilise les bit1 à 7 ?

Et enfin pour etre vraiment certains et ne pas laissé de place aux doutes, quand on envoie du maitre à l'esclave "hi2cout 0, (b1,b2,b3,b4,...b8)" . la valeur de la variable b1 se trouve bien en 0( registre scratchpad) ?
donc si je veux lire avec l'esclave cette valeur de b1 stocké dans scrachpad et l'enregistré dans b9 de l'esclave : j'ecris bien get 0,(b9) ?

Par avance merci

PS: une derniére pour la route, dans un soucis d'optimisation du programme, y'a t il une fonction de test sur un changement d'etat ? J'ai beau cherché j'ai pas trouvé . vous allez me dire ca prend riebn en temps un else mais bon .
Je m'explique , si le bouton est à 1 alors tu allume, sinon tu éteins . La base if - then - else . Dans cette configuration la fonction execute toujours quelques choses . soit elle allume soit elle éteint ; ce qui fais "travaillé" le programme.
Car quand rien ne se passe, le programme eteint tout le temps mais si c'est deja eteint en fait . On pourrais palier a ca avec des flags, mais le but est de gagner du temps, et donc pas de rajouté des lecture de flags et des ecritures . Je me premds peut etre la tête pour rien, je sens que c'es la réponse qui va m'arrivé lol .
 

PieM

Senior Member
Est il plus mieux bien, de definir toutes les broches non utilisés comme des sorties ,afin d'eviter des bugs ?
non! les mettre alors en entrée, cad en haute impédance.

Pour l'esclave , peut il utiliser les valeurs du scratchpad à la volée ? C'est à dire sans les stocker dans une variable afin de gagner du temps
Non. lire le scratchpad se fait par un get qui affecte directement la valeur à une variable. Il n'y a rien à gagner en temps.

puis je mettre "i2cfast_32" car les deux picaxes travaillent à fond les gamelles à 32Mhz
La fréquence du récepteur n'a rien à voir puisque c'est le maître qui donne l'horloge de la transmission (slc)
par contre je ne sais pas si ça fonctionne avec le 32 MHz. perso, je n'ai pas l'expérience. Mais de toute façon, le 32 MHz sur le 14M2 ne va rien apporter puisque le RFIN qui est le truc essentiel est à 4 MHz.

les données s'effacent elles au bout d'un moment ?
Quand tu coupes l'alimentation.

Dans ton exemple tu n'utilise pas b0 y'as til une raison
Non aucune. Et le flag d'interruption n'a rien à voir et n'est pas contenu dans le scracpad.

quand on envoie du maitre à l'esclave "hi2cout 0, (b1,b2,b3,b4,...b8)" . la valeur de la variable b1 se trouve bien en 0( registre scratchpad) ?
Oui.

j'ecris bien get 0,(b9) ?
Oui t'as tout compris.

une derniére pour la route, dans un soucis d'optimisation du programme, y'a t il une fonction de test sur un changement d'etat
Non le test sur chaque variable de prendrait plus de temps que de réécrire l'état de chaque variable. Si c'est éteint et que tu rééteint et bien ça ne prends pas plus de temps que si c'était allumé.

Je me premds peut etre la tête pour rien
Oui !
 

dje8269

Senior Member
Dis donc toi, tu n'en as pas aussi du taf !!! ......

Ralalala ces débutants alors, toujours à trainer partout pour glané des infos . lol .

Merci a toi
 

dje8269

Senior Member
Bon voila 1heure et demi que je m'arrache les cheveux , et vous savez avec quoi !!!

AVEC CETTE SAL...RIE DE MISE A L'ECHELLE

Voila ce que j'en ressort , je comprends pas car du coup en admettant une toute petite variation on pourrais simplifier a 1 seul calcul pour toutes les positions .

Code:
'#####  Commande direction  #####
Select case b2
case  < 120
	b2 = b2/10*6	
	b2 = 225-b2
case > 130
	b2 = b2/10*6
	b2 =228-b2
	
else
	b2=150
	
end select

servopos 1,b2
Du coup on pourrais rassembler les deux(228 ou 225 et faire un seul calcul) ! mais je pense que j'ai fais une bourde mais sur le papier ça a l'air de coller ........ quand je le fais avec les min/max.
Je commence a saturer et quand ca me gave je prefere faire une pause . Si j'avais vous pouviez jeter un oeil la dessus, car je sais que vous maitriser !!! contrairement a moi .
 

PieM

Senior Member
Qu'est que tu veux comme variation de valeur pour servo pour une entrée entre 0 et 255? parce que là tu as 225 -78 de variation mais tes valeurs 225 et 228 sont mauvaises !
tu veux une zone neutre ou une courbe en S ?

Sauf avec la courbe en S tu es obligé d'avoir trois calculs pour b2 du servo. (150 , supérieur ou inférieur)
 
Last edited:

dje8269

Senior Member
Ben si j'ai compris la commande servo ; La variation doit etre de 75 à 225 ( comme sur la notice).
Mais mon servo est inversé et mes commande aussi .

Je propose de commencer par le neutre ( j'ai adoré la courbe en S , mais j'y reviendrais plus tard, car j'ai déjà du mal avec la courbe linéaire) .

parce que là tu as 225 -78 de variation !
Oui la petite erreur dont je parle c'est ce fameux 78 au lieu de 75 . mais si ça me simplifie autant le calcul je ferais avec , car ca doit pas trop etre perceptible ;
Donc :

voila ce que j'ai couché sur papier :

pour une variation du joystick a gauche la valeur adc va de 125 au milieu a 0 , cela doit correspondre a 150 a 225 pour le servo donc 125=150 et 0=225
pour une variation du joystick à droite la valeur adc va de 130 au milieu à 255 cela correspond à 150 à 75 pour le servo donc 130=150 et 255=75

En admettant que le point milieu du servo soit a 150 , et celui de l'adc a 127/128 .

Au lieu de 120 j'ai pris 125 car cela me fait un pas de 0.6 exactement plus simple pour la mise a l'échelle.

Je sais pas si j'ai été trés clair . dis moi si tu veut d'autre precisions . j'ai fais au plus simple pour moi, en me servant du manuel car je connais pas encore cette fonction
 

PieM

Senior Member
alors essaie:

Code:
'#####  Commande direction  #####

Select case b2
case  < 120
	b2 = b2*5/8 +75	
case > 134
	b2 = b2-134*5/8
	b2 = 150 + b2
else
	b2=150
	
end select

servopos 1,b2
 

dje8269

Senior Member
Je me suis mal exprimé je pense, car il me semble que ca ne marcheras pas comme il le faudrait.

Du coup je suis même plus sur de ce qu'il faut comme valeur . mais sur mon papier j'avais noté ceci

Sans titre-1.jpg

Désolé si c'est de ma faute

Quelques chose comme ca pourrais marché ?

Code:
'#####  Commande direction  #####

if 120<b2<130 then

	b2 = 150
else
	b2 = b2/10*6	
	b2 = 225-b2    min 75

end if
	
servopos 1,b2
 
Last edited:

PieM

Senior Member
Attends je te ferai une autre formule ... car ça ne va pas aller ça.

Code:
'#####  Commande direction  #####
'cde inversée  '
'b2 = 255 servo 75
'b2 = 0  servo 225

Select case b2
case  < 120
	b2 = b2*5/8
	b2 = 225 - b2
case > 134
	b2 = b2-134*5/8
	b2 = 150 - b2
else
	b2=150
	
end select

servopos 1,b2
 
Last edited:

dje8269

Senior Member
Bon j'ai essayer de télécharger le programme du 14M2 pour commencer , ca marche pas . faut dire que j'ai tester les alims , les pistes , verifier les branchements , le schéma ;Mais la realité reste la réalité .

Je vais faire un petit programme vite fais pour tester déjà la réception des données avec le RX . puis j'avancerais petit a petit .

J'avais noté des petites questions :
- les broches de l'i2c doivent elles être configurées en entrée et en sortie ?
- la frequence du 28X2 est 16 max , bizarre je pensais qu'il était plus rapide qu'un 14M2

Tout n'est pas un long fleuve tranquille en programmation .
Pouvez vous me confirmer que cette ligne est juste ?
Code:
inputtype %0000000100000000 			'met la broche C.0 en  mode TDS sur un 14m2
Car je n'arrive même pas a allumer une led grgrgr! ca commence mal . :D
 

PieM

Senior Member
Voir #218 pour le servo inversé.
inutile de configurer les broches I2C puisque sda peut être entrée ou sortie.
un 28X2 peut fonctionner à 64MHz mais avec un resonnateur externe.

oui la cde inputtype est bonne.
 

dje8269

Senior Member
Merci beaucoup PieM ,

De me suivre dans mes aventures, et de répondre sans cesse à mes questions de débutant .

Bon j'ai réussi , j'ai la connexion voiture 14M2 , les commandes arrivent bien , j'arrive a allumer la led avec la radio-commande.

Je pousse un grand OUF de soulagement sinon le weekend était mort .

Donc via la télécommande j'allume un TOR branché sur le 14M2 en maitre . liaison OK

je part pour un test liaison i2c maintenant . une led à allumer sur le 28X2 via le scratchpad . Allez Jérémy au boulot ;
 

dje8269

Senior Member
Oui . Merci bien . J'avoue que la c'est chaud quand même . mais ca le fais ! Même en galérant , l'important c'est toujours d'avancer même un petit peu .
 

dje8269

Senior Member
Bonjour à tous,

La nuit apporte plein de questions, et un bébé apporte des courtes nuits lol . Conclusion j'ai pas trop de questions ce matin.

Comme vous avez pus le lire, le liaison i2c fonctionne enfin ; je vais donc pouvoir envoyer du lourd niveau programmation .

Coté servo Direction Ton code PieM fonctionne très bien et le mien aussi , j'ai quelques test a faire car je crois que le mien saccade un peu par rapport à celui de PieM et je vois pas trop pourquoi ! a tester .

J'ai tester mes TOR OK ! ( sauf un que j'ai mis sur la broche C.3 du 14M2 qui est une entrée , oui je sais quel c.n je suis ,mais c'est pas trop grave)

Par contre niveau sirène , je viens de regarder les fréquences et les tempos . ET Y A DES PAUSES ........ saloperie de pause . Ma question du matin avec le café , si je met la sirène dans une autre tache ,est-ce que les pauses affectent celles de la tache principale ? ou les pauses sont séparées . Sinon je devrait ruser sans faire de pause, émettre un son qu'on entend pas ! tant pis pour les chiens de Mike :p il viendront pas embêter ma voiture ainsi !!!
 

PieM

Senior Member
Coté servo Direction Ton code PieM fonctionne très bien et le mien aussi , j'ai quelques test a faire car je crois que le mien saccade un peu par rapport à celui de PieM et je vois pas trop pourquoi
C'est certain, ton principe de calcul n'est pas bon! les formules sont à déterminer par calcul, pas par estimation pifométrique. :rolleyes:

à 120 tu es à 150 en sortie et a 121 tu sautes à 159 !
de l'autre coté à 139 tu est toujours à 150 en sortie et tu sautes brutalement à 144

Pour ta sirène utilise des pwm. quelle instruction utilises tu ? et sur quel picaxe ? car pas de multitache sur 28X2 et sur 14M2 il provoque la mise à 4MHz de la fréquence de chaque tâche.
 

dje8269

Senior Member
merci PieM encore une fois , effectivement je testais ma formule qu'avec les maximas et minimas donc sur le papier ca fonctionnait bon en vrai aussi , mais pas trés bien.

Ce matin test du HP , avec cette formule :

Code:
If bit2 = 1 then
	do
	setfreq m4
 	pwmout pwmdiv16, B.5, 143, 287
 	pause 545
 	pwmout pwmdiv16, B.5, 127, 256
 	pause 545
	loop
	
	else
	
	pwmout B.5, off
	setfreq m8
	
end if
Le bit2 correspond à bouton de ma télécommande.
Bizarrement mon servo-direction danse avec la musique et deviens incontrôlable !, le son est également très lent !
La sortie du HP est sur B.5 comme tu me l'as preconisé .

Ah oui j'avais oublié de preciser que j'ai passer le 28x2 a 8Mhz car la commande servo n'accepte que celle la (ou 32Mhz mais pas possible avec le résonateur interne).
 

PieM

Senior Member
Si tu changes tes fréquence au milieu de ton programme il faut bien comprendre que cela affecte toutes les commandes en arrière plan liées au temps.
Donc tes PWM (cde moteur par ex.)
Quant à la commande servo elle ne fonctionne qu'à 8 MHz sur X2, alors je comprends mal ton setfreq m4.
Ensuite si tu introduis des pauses, et bien cela a obligatoirement une incidence. Ta sirène provoque une pause permanente !
un setfreq doit être en dehors d'une boucle.

Il faudra peut être utiliser un timer interne (le 3) avec tmr3setup pour régler ton problème.
 
Last edited:

dje8269

Senior Member
Bon ben encore merci ,

En fait j'ai tout fais dans la précipitation, et fais que de la bouse (pour etre poli ).
J'ai mis 4Mhz pour ne pas changer le code, mais effectivement c'est du n'importe quoi !

en fait je voulais juste tester la sirène pendant que le petit était reveillé , j'ai donc fais vite . je comprends mieux, pourquoi tout buggait.

Il faut que je fasse les choses dans l'ordre plutôt que de vouloir tout faire en même temps .
Alors je vais finir la commande servo ......

J'ai des réglages a faire sur ta formule, car 75 - 225 le servo va trop loin , il faut que je détermine les bon débattements !
 

PapyJP

Senior Member
Ta sirène provoque une pause permanente !
Pourquoi pas un 08M2 dédié ?
Ca soulage le 28X2
Un test de B5 en TOR. Si B5 est en 1 ---> Sirène jouée par le 08M2 ( et lycée de Versailles )
Le choix de la "Sirène" est très facile à programmer avec l'assistant ( Picaxe > Wisards > Ring Tone Tunes sur PE5 ) et l' instruction " tune ".
Si le Gyro et la sirène fonctionnent simultanément, le Gyro pourrait également être commandé par le 08M2
... une patte de gagnée !
 

dje8269

Senior Member
Bonjour PapyJP,

effectivement, la solution de dédié serais très efficace , Mais , cela est déjà mon troisième typon, alors tout rechangé pour dédié une sirène non merci . D'autant plus que si je dois mettre un picaxe pour chaque fonction , c'est pas top .
Plusieurs solutions s'offre à moi, notamment le timer3 de PieM , la solution de ne pas faire de pause en remplaçant la pause par un son inaudible , ou encore ne pas faire de sirène ; J'ai pas le courage de tout refaire . Si j'avance un peu je mettrais photos et vidéo ce soir . Mais vraiment je veux pas tout refaire .
 

PieM

Senior Member
J'ai des réglages a faire sur ta formule, car 75 - 225 le servo va trop loin , il faut que je détermine les bon débattements !
Merci de ne pas faire de "réglage" sur la formule, mais de donner les bonnes infos de mini maxi ! Je te recalculerai les bonnes formules.

Mais , cela est déjà mon troisième typon, alors tout rechangé pour dédié une sirène non merci
J'ai cru comprendre que tu avais des trucs qui clignotaient aussi ?
On en est toujours au même stade : faire un typon, puis réfléchir et faire un proto après !!! j'espère que tu ne travailles pas dans l'industrie en recherche et développement.
 

dje8269

Senior Member
Merci de ne pas faire de "réglage" sur la formule, mais de donner les bonnes infos de mini maxi ! Je te recalculerai les bonnes formules.
Par soucis d'honnêteté, je vais d'abord faire ma formule , Déjà que ça m'énerve de ne pas saisir le truc de la mise a l'échelle . je comprends tout mais j'arrive pas à le mettre en &#339;uvre c'est frustrant . Je ne peux pas aller contre ma philosophie, je galére et aprés je demande de l'aide, je trouve ca plus formateur, que de te donner les valeurs tout de suite , et que toi en deux coup de cuillére a pot tu fasse la formule .


j'espère que tu ne travailles pas dans l'industrie en recherche et développement.
Sinon ma boîte auras déjà coulée lol

Allez je retourne a mon papier, pour faire cette maudite formule

J'ai cru comprendre que tu avais des trucs qui clignotaient aussi ?
J'avais pensé a quelques chose pour le Gyro , qui allume une led en alternance avec une autre , a base de flag , pour ne pas faire de pause ...... une espèce de rampe de pompier un truc du genre.
 

PieM

Senior Member
Par soucis d'honnêteté, je vais d'abord faire ma formule , Déjà que ça m'énerve de ne pas saisir le truc de la mise a l'échelle .
Si tu veux mais ne me demande plus pourquoi ça ne marche pas.
Je t'ai dit que la formule était obtenue par calcul. Alors si tu veux le faire correctement, fais un graphique avec tes valeurs et regarde ce qu'est l'équation d'une droite et comment on la détermine.

Si tu dois faire d'autre trucs comme un gyrophare etc, alors cesse d'improviser et résous tous les problèmes sur un proto.
Ou achète une grande poubelle pour tes typons !
 

dje8269

Senior Member
Bon , je me resigne encore une fois a demandé de l'aide , avant de jeter la voiture par la fenetre .......

voila ;
IMG_1475.JPG

après plusieurs page de formule . j'ai , je pense déterminé les bonnes formules , sur le conseil avisé de PieM .
Donc avec y = mx + p . on y arrive très bien .

Pourtant , et pourtant , ça ne fonctionne pas en réalité . je comprends pas, mais vraiment pas .

Voici mes nouvelles valeurs :

valeur.jpg
 

dje8269

Senior Member
Voici mes resultats

Code:
'#####  Commande direction  #####
Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 195 - b3
case > 130
	b3 = b3*4/10
	b3 = 202 - b3
else
	b3=150
	
end select

servopos 1,b3
J'ai essayé ça, mais ça fonctionne toujours pas :

Code:
'#####  Commande direction  #####
Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 195 - b3
case > 130
	b3 = b3-130*4/10
	b3 = 150- b3
else
	b3=150
	
end select

servopos 1,b3

Par contre si je mets le code de PieM ca fonctionne bien , sauf pour les min,max .
Code:
elect case b3

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

servopos 1,b3
Je précise que ca fonctionne un peu , a savoir que sur un ou deux aller retour ça fonctionne , puis la direction danse ( elle ne fais pas tout a fais n'importe quoi, car elle fait des aller retour assez précis, mais sans cesse) , comme si en passant par une valeur , cela détraquait tout , je ne vois pas .

Voici le code en entier pour le 28X2 :

PS : contrairement à tout à l'heure la valeur est b3 et non b2 . Ne pas tenir des définitions au début .

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 = A.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


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

get 0,b0
get 1,b1
get 2,b2
get 3,b3
get 4,b4
get 5,b5

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

If bit4 = 1  then
	high GYRO
	else
	low gyro
end if

'#####  Commande direction  #####
Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 195 - b3
case > 130
	b3 = b3*4/10
	b3 = 202 - b3
else
	b3=150
	
end select

servopos 1,b3

loop
 
Last edited:

PieM

Senior Member
attends un peu ...
Si tu dois jeter tes voiture par la fenêtre, mets toi à l'aéromodélisme ...
 

dje8269

Senior Member
Crash assuré !
J'ai quelques helicos à mon actif !!!! :cool:

Sinon quelques photos comme promis , pas de vidéo , comme rien ne fonctionne ! lol . Du coup je préfére en rire ,mais par ce que la pression est retombé .

IMG_1467.JPG

IMG_1471.JPG
 

PieM

Senior Member
tu te trompes dans ton analyse.
Ce n'est pas une droite de 195 à 100 mais deux droites séparées par un palier de zone neutre. et comme ce n'est pas symétrique autour de la sortie (150 + 45 et 150 - 50), ni de ton point milieu(0 - 120 et 130 - 255, il y a deux coefficients différents:
Il faut que tes valeurs de palier soient au milieu de la zone 0 - 254. Donc 127 +/- quelquechose.

Code:
'#####  Commande direction  #####

Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 195 - b3
case > 134
	b3 = b3-134*5/12
	b3 = 150- b3
else
	b3=150
	
end select

servopos 1,b3
 
Top