Télécommande RC

dje8269

Senior Member
Bonjour ,

ALors autant vous dire que ca m'a travaillé toute la nuit cette histoire de 20X2 et RFout . Je n'arrive pas a trouvé d'infos la dessus ; Je suppose donc que ce n'est pas faisable d'utilisé la fonction RFout avec un 20X2 .

J'ai donc pensé a une solution de secours . le remplacement du 20X2 par un 20M2 . en effet déjà niveau hard les broches sont compatibles . sauf une peut être sur le 20M2 la broche serial OUT ( pour la programmation) n'est pas marquée comme OUT mais seulement en DAC et moi je l'utilise pour allumé une led test . mais je pense que ca fait l'affaire quand même .
Sinon niveau Soft . cela changera les choses qui j'avais imaginés ;

Le 20M2 sera donc maitre et le 28X2 esclave ( inversion des rôles) . le 20M2 ira cherché les infos sur le 28X2 . cela rajoute une étape avant le Rfout ce que je voulais évité , mais bon , ça doit pas être trop long quand même pour lire 2 octets .

Qu'en pensez vous ?
 

dje8269

Senior Member
Role du 28X2 :

- scruptage des états des TOR
- Prise en compte d'une activation après une tempo . Par exemple on bascule l'inter pour allumé le projecteur ou phare IR (par encore décidé), apres 500ms seulement pour evité les erreurs . apreil pour les passages de vitesses ,et blocage des différentiels .
- lecture tension batterie
- affichage tension batterie
- gestion du buzzer .
-écriture dans son scratchpad des valeurs des TOR.

Role du 20M2 . ( la TOP priorité de la télécommande envoyé le plus souvent possible des infos de contrôle vhl, donc des valeurs des potars)

- Envoyé le plus souvent possible, les données par RF
- lecture dans le scratchpad du 28X2 des TOR pour envoyer
- lecture des valeurs analogiques des potars
- calcul de la position des joysticks ( ce que je voulais évité car ça prends du temps)
- activation du TX ou non suivant la position des joysticks

Comme je suis sur d'avoir oublié quelques choses, posez moi les questions que vous voulez , je me ferais un plaisir d'y répondre .
 

PieM

Senior Member
Je suppose donc que ce n'est pas faisable d'utilisé la fonction RFout avec un 20X2 .
Voir #80, et déjà dit dans un post précédent. Ce n'est pas une supposition. c'est clairement sur la doc .

sinon, comme déjà dit:
tu envoies tes TOR brutes sans traitement et tu fais tes traitements de tempo à l'arrivée en fonction des priorités. Ce qui veut dire qu'un 28X2 en émission est suffisant, sans I2C. Et en local , si tu as la mesure batterie de l'affichage et du buzzer tu le fais par un 08M2. Ce qui ne perturbe pas les scrutations pour le TX.

après comme déjà dit, tu le fais comme tu le sens....

d'autre part en fonction de ta fréquence et de ta puissance d'émission, il y a des contraintes de temps d'émission. Il serait bon que tu sois conforme si c'est un appareil "officiel" !
 

dje8269

Senior Member
c'est clairement sur la doc .
Je te crois sur parole. Mais sur ma DOC ce n'est pas marqué clairement, car je l'ia pas lu, et j'ai cherché pourtant... Bon c'est pas grave sinon .

Ce qui veut dire qu'un 28X2 en émission est suffisant, sans I2C
je serais trop juste en broches !!! pour gerer tout ca .

après comme déjà dit, tu le fais comme tu le sens....
C'est délicat d'expliquer le différents paramètres qui gravite autour ..... place du hard , positionnement des différents composants qui ont une place primordiale, pour un bon fonctionnement difficulté de réalisé un typon en mélangeant analogiques et puissance RF etc .....
Comme déjà dis , je t'écoute avec le plus grand intérêt, mais des fois je peux pas faire comme tu dis ......Ce n'est pas de la mauvaise volonté de ma part, c'est juste que c'est pas possible physiquement la plupart du temps, ou que ca ne correspond pas au besoin de temps en temps .

d'autre part en fonction de ta fréquence et de ta puissance d'émission, il y a des contraintes de temps d'émission. Il serait bon que tu sois conforme si c'est un appareil "officiel" !
Je n'ai malheureusement pas accès aux bandes alloués aux militaires ...... Ce ne serait jamais un appareil "officiel" , déjà car c'est moi qui le créer lol .... disons que se seras une plus une aide, qui pourra éventuellement donnée des idées a des entrepreneurs qui sait .

J'essaye juste d'adapter mon premier projet perso , en un projet pour le boulot, d'où le but de faire un peu mieux
 

dje8269

Senior Member
Donc voila un projet jet , sur la reflexion, du calcul des trim .

Pour vous expliquer comment j'ai vu les choses :

A l'allumage de la télécommande :
-enregistrement de la position des joystisks ( l'utilisateur ne doit rien touché a l'allumage , joystick libre, procédure a enseigner)
- Calcul d'une zone morte de +/- 5 a partir de la valeur calculée précédemment .

On rentre dans le programme .

-On lis les joysticks .
- On compare par rapport aux valeurs a l'initialisation
-Si ca sort du créneau c'est qu'on bouge les joysticks .
- Donc on active le Tx sinon on désactive .

A partir de la , si on bouge un trim , la valeur lue ,seras toujours en permanence en dehors de la zone . Donc l'émetteur ne se désactiveras jamais . Mais les changements des trim seront pris en compte .
A ce moment il faut faire une procédure . A savoir l'utilisateur, si jamais il touche au trim , devra éteindre et rallumé la télécommande pour prendre en compte les changements . Ainsi le Tx pourra être désactivé de nouveau .

Comme d'habitude , c'est biscornu , c'est du Jérémy , peut être qu'il y a plus simple et plus fonctionnel . je suis ouvert a toutes idées, remarques et critiques .

Voici le petit programme test

Code:
[color=Navy]#PICAXE [/color][color=Black]20M2[/color]

[color=Green]'##########################    configuration    ################################[/color]
[color=Blue]Symbol [/color][color=Purple]Av_Ar [/color][color=DarkCyan]= [/color][color=Purple]b3 [/color][color=Green]' Joystick gauche, Avant et Arriere[/color]
[color=Blue]Symbol [/color][color=Purple]Dr_Ga [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color][color=Green]' Joystick droit , droite et gauche[/color]
[color=Blue]Symbol [/color][color=Purple]Pa_Ti [/color][color=DarkCyan]= [/color][color=Purple]b7 [/color][color=Green]' Joystick gauche, Pan et tilt[/color]
[color=Blue]Symbol [/color][color=Purple]Flag_EN [/color][color=DarkCyan]= [/color][color=Purple]b8[/color]

[color=Blue]Symbol Enable [/color][color=DarkCyan]= [/color][color=Blue]C.3
Symbol Donnee [/color][color=DarkCyan]= [/color][color=Blue]C.0

Symbol [/color][color=Purple]Val_Joy_ini_moin [/color][color=DarkCyan]= [/color][color=Purple]w11[/color]
[color=Blue]Symbol [/color][color=Purple]Val_Joy_ini_plus [/color][color=DarkCyan]= [/color][color=Purple]w12[/color]
[color=Blue]Symbol [/color][color=Purple]Val_Joy [/color][color=DarkCyan]= [/color][color=Purple]w13[/color]

[color=Green]'##########################    Initialisation    ################################   [/color]
[color=Blue]setfreq m4

readadc B.6[/color][color=Black], [/color][color=Purple]Av_Ar      [/color][color=Green]' Enregistrement des valeurs des potar a l'allumage pour comparer ensuite[/color]
[color=Blue]readadc C.7[/color][color=Black], [/color][color=Purple]Dr_Ga      [/color]
[color=Blue]readadc B.0[/color][color=Black], [/color][color=Purple]Pa_Ti      
Val_Joy_ini_moin [/color][color=DarkCyan]= [/color][color=Purple]Av_Ar [/color][color=DarkCyan]+ [/color][color=Purple]Dr_Ga [/color][color=DarkCyan]+ [/color][color=Purple]Pa_Ti[/color][color=DarkCyan]-[/color][color=Navy]5[/color]
[color=Purple]Val_Joy_ini_plus [/color][color=DarkCyan]= [/color][color=Purple]Val_Joy_ini_moin [/color][color=DarkCyan]+[/color][color=Navy]10[/color]


[color=Green]'#################################################################################
'##########################    Programme Principal    ############################  
'#################################################################################[/color]


[color=Blue]do

readadc B.6[/color][color=Black], [/color][color=Purple]Av_Ar      [/color][color=Green]' potar Av/ar Vhl/cam   PM : de 150/151 en avant: 150 a 59 en arriere 150 a 246[/color]
[color=Blue]readadc C.7[/color][color=Black], [/color][color=Purple]Dr_Ga      [/color][color=Green]' potar Dr/Ga Vhl       PM : de 148/150 ? droite: 150 a 237 a gauche: 150 a 50[/color]
[color=Blue]readadc B.0[/color][color=Black], [/color][color=Purple]Pa_Ti      [/color][color=Green]' potar pan/Tilt Cam    PM : de 106/107 ? droite: 106 a 207 a gauche: 106 a 10[/color]

[color=Purple]Val_Joy [/color][color=DarkCyan]= [/color][color=Purple]Av_Ar [/color][color=DarkCyan]+ [/color][color=Purple]Dr_Ga [/color][color=DarkCyan]+ [/color][color=Purple]Pa_Ti     [/color][color=Green]' Calcul de la position des joysticks

      [/color][color=Blue]If [/color][color=Purple]Val_Joy [/color][color=DarkCyan]< [/color][color=Purple]Val_Joy_ini_moin [/color][color=DarkCyan]or [/color][color=Purple]Val_Joy [/color][color=DarkCyan]> [/color][color=Purple]Val_Joy_ini_plus [/color][color=Blue]then        [/color][color=Green]' Comparaison avec la valeur a l'initialisation 
                                                                              
            [/color][color=Blue]if [/color][color=Purple]Flag_En [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then     [/color][color=Green]' Si c'est la premiere fois qu'il s'allume
                  [/color][color=Blue]High Enable       [/color][color=Green]' On active l'emetteur
                  [/color][color=Blue]pause [/color][color=Navy]30          [/color][color=Green]' Une marque une pause pour la stabilisation
                  [/color][color=Purple]Flag_En [/color][color=DarkCyan]= [/color][color=Navy]1       [/color][color=Green]' Obn met un flag a 1 pour ditre que le Tx est allumé
            [/color][color=Blue]end if
      
            [/color][color=Purple]time [/color][color=DarkCyan]= [/color][color=Navy]0                [/color][color=Green]' On efface le timer
            
      [/color][color=Blue]else
      
            if [/color][color=Purple]time [/color][color=DarkCyan]> [/color][color=Navy]1 [/color][color=Blue]then        [/color][color=Green]' Si le timer est strictement superieur a 1 ( donc 2 secondes)
                  [/color][color=Blue]Low Enable        [/color][color=Green]' On desactive le Tx
                  [/color][color=Purple]flag_En [/color][color=DarkCyan]= [/color][color=Navy]0       [/color][color=Green]' On lmet le flag a 0
            [/color][color=Blue]end if
      
      end if

loop[/color]
 

dje8269

Senior Member
Decidemment tu me cherche des poux ........ tu ne lâche rien .... je dois vraiment t'agacer pour que tu t'acharne comme ça !!

Voir les dessins sur la page RFOUT du manuel2 !
Je suis allez voir les dessins ..... rien ne stipule le type de picaxe qui utilise cette fonction sur les dessins . Ma doc doit être trop vieille c'est la V11 .

Effectivement, la je dis oui , c'est marqué. Mais sur la doc en anglais. Et vu mon niveau d'anglais, j'evite de lire , mais c'est vrai j'aurais du , c'est vrai ca m'apprendra a lire l'anglais . et c'est vrai j'aurais gagné du temps tu peux même pas imaginé ;

C'est moi qui baisse les bras sur ce coup .
 

PieM

Senior Member
Decidemment tu me cherche des poux ........ tu ne lâche rien .... je dois vraiment t'agacer pour que tu t'acharne comme ça !!
Je suis allez voir les dessins ..... rien ne stipule le type de picaxe qui utilise cette fonction sur les dessins . Ma doc doit être trop vieille c'est la V11 .
Effectivement, la je dis oui , c'est marqué. Mais sur la doc en anglais. Et vu mon niveau d'anglais, j'evite de lire , mais c'est vrai j'aurais du , c'est vrai ca m'apprendra a lire l'anglais . et c'est vrai j'aurais gagné du temps tu peux même pas imaginé ;
C'est moi qui baisse les bras sur ce coup .
Ecoute tu déniches toi même un vieux post où je dis noir sur blanc que le 20X2 n'accepte pas le RFOUT. Et tu écris "je suppose que"
Quant aux dessins ils sont sur la doc : 2014-12-04 001.jpg
Je ne cherche pas de poux, mais j'aimerais passer moins de temps à lire les docs pour toi !
Plus de 1000 post sur le même sujet il y a peu; ça finit par fatiguer.
 

dje8269

Senior Member
Ah oui !!! tu as raison . mais comme je le précisais , la doc anglaise . Je me sers de la doc traduite en français, vu mon niveau d'anglais, et il n'y a pas ces petits dessins . Car effectivement la c'est clair que j'aurais vu qu'un 20X2 ne pouvant pas utiliser la commande RFout ;

mais j'aimerais passer moins de temps à lire les docs pour toi !
Tu me croiras peut être pas , mais je fais mon possible pour éviter cela . Quand je fournis un lien vers une ds , je lis avant ( souvent j'y comprends pas grand chose). et la doc picaxe je l'ai lu un paquet de fois .

Plus de 1000 post sur le même sujet il y a peu; ça finit par fatiguer.
Ça je peux le comprendre
 

dje8269

Senior Member
Bonjour,

Voila ce qui m'amène . La télécommande fonctionne très bien . Mais mérite quelques ajustements que je viens de me rendre compte ;

en fait il s'agit "encore" d'un timer . On avait déjà vu , que ça dérangeait pas de remettre a "0" le timer si rien d'autre l'utilisait . Donc je me permet de le remettre a 0 dans ce cas de figure , mais c'est peut être une erreur ....

Le problème ,est le suivant . Quand je touche une commande , et que je la relâche , je souhaite "désactivé" l'émetteur au bout d'une seconde environ . Le problème que j'ai constaté c'est que des fois, il s'éteint juste après avoir relâché les joysticks et des fois après 1 secondes ; la différences est flagrante .

Savez vous pourquoi ?

Code:
[color=Navy]#PICAXE [/color][color=Black]20M2[/color]

[color=Green]'##########################    configuration    ################################[/color]
[color=Blue]Symbol [/color][color=Black]Av_Ar [/color][color=DarkCyan]= [/color][color=Purple]b3 [/color][color=Green]' Joystick gauche, Avant et Arriere[/color]
[color=Blue]Symbol [/color][color=Black]Dr_Ga [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color][color=Green]' Joystick droit , droite et gauche[/color]
[color=Blue]Symbol [/color][color=Black]Pa_Ti [/color][color=DarkCyan]= [/color][color=Purple]b7 [/color][color=Green]' Joystick gauche, Pan et tilt[/color]
[color=Blue]Symbol [/color][color=Black]Flag_EN [/color][color=DarkCyan]= [/color][color=Purple]b8[/color]

[color=Blue]Symbol [/color][color=Black]Enable [/color][color=DarkCyan]= [/color][color=Blue]C.3
Symbol [/color][color=Black]Donnee [/color][color=DarkCyan]= [/color][color=Blue]C.0

Symbol [/color][color=Black]V_TOR [/color][color=DarkCyan]= [/color][color=Purple]w10[/color]
[color=Blue]Symbol [/color][color=Black]Val_Joy_ini_moin [/color][color=DarkCyan]= [/color][color=Purple]w11[/color]
[color=Blue]Symbol [/color][color=Black]Val_Joy_ini_plus [/color][color=DarkCyan]= [/color][color=Purple]w12[/color]
[color=Blue]Symbol [/color][color=Black]Val_Joy [/color][color=DarkCyan]= [/color][color=Purple]w13[/color]

[color=Green]'##########################    Initialisation    ################################   [/color]
[color=Blue]setfreq m32

hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%10100000[/color][color=Black], [/color][color=Blue]i2cslow_4[/color][color=Black], [/color][color=Blue]i2cbyte    [/color][color=Green]' met le 20M2 en mode maitre[/color]

[color=Blue]readadc B.6[/color][color=Black], Av_Ar      [/color][color=Green]' Enregistrement des valeurs des potar a l'allumage pour comparer ensuite[/color]
[color=Blue]readadc C.7[/color][color=Black], Dr_Ga      [/color]
[color=Blue]readadc B.0[/color][color=Black], Pa_Ti      
Val_Joy_ini_moin [/color][color=DarkCyan]= [/color][color=Black]Av_Ar [/color][color=DarkCyan]+ [/color][color=Black]Dr_Ga [/color][color=DarkCyan]+ [/color][color=Black]Pa_Ti[/color][color=DarkCyan]-[/color][color=Navy]5[/color]
[color=Black]Val_Joy_ini_plus [/color][color=DarkCyan]= [/color][color=Black]Val_Joy_ini_moin [/color][color=DarkCyan]+[/color][color=Navy]10[/color]

[color=Black]V_TOR [/color][color=DarkCyan]= [/color][color=Purple]w0  [/color][color=Green]' Enregistrement de la valeur des TOR[/color]
[color=Blue]low [/color][color=Black]Enable  [/color][color=Green]' Raz de la broche Enable

'#################################################################################
'##########################    Programme Principal    ############################  
'#################################################################################[/color]


[color=Blue]do

readadc B.6[/color][color=Black], Av_Ar      [/color][color=Green]' potar Av/ar Vhl/cam   [/color]
[color=Blue]readadc C.7[/color][color=Black], Dr_Ga      [/color][color=Green]' potar Dr/Ga Vhl       [/color]
[color=Blue]readadc B.0[/color][color=Black], Pa_Ti      [/color][color=Green]' potar pan/Tilt Cam    [/color]

[color=Black]V_TOR [/color][color=DarkCyan]= [/color][color=Purple]w0              [/color][color=Green]' Sauvegarde des TOR dans une autre variable pour comparaison[/color]
[color=Blue]hi2cin [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Blue])        [/color][color=Green]' Recuperation des TOR[/color]

[color=Black]Val_Joy [/color][color=DarkCyan]= [/color][color=Black]Av_Ar [/color][color=DarkCyan]+ [/color][color=Black]Dr_Ga [/color][color=DarkCyan]+ [/color][color=Black]Pa_Ti     [/color][color=Green]' Calcul de la position des joysticks

      [/color][color=Blue]If [/color][color=Black]Val_Joy [/color][color=DarkCyan]< [/color][color=Black]Val_Joy_ini_moin [/color][color=DarkCyan]or [/color][color=Black]Val_Joy [/color][color=DarkCyan]> [/color][color=Black]Val_Joy_ini_plus [/color][color=DarkCyan]or [/color][color=Purple]w0 [/color][color=DarkCyan]<> [/color][color=Black]V_TOR [/color][color=Blue]then     [/color][color=Green]' Test changement Joystick ou TOR
                                                                              
            [/color][color=Blue]if [/color][color=Black]Flag_En [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then     [/color][color=Green]' Si c'est la premiere fois qu'il s'allume
                  [/color][color=Blue]High [/color][color=Black]Enable       [/color][color=Green]' On active l'emetteur
                  [/color][color=Blue]pause [/color][color=Navy]30          [/color][color=Green]' Une marque une pause pour la stabilisation du Tx
                  [/color][color=Black]Flag_En [/color][color=DarkCyan]= [/color][color=Navy]1       [/color][color=Green]' Obn met un flag a 1 pour ditre que le Tx est allume
            [/color][color=Blue]end if
      
            [/color][color=Purple]time [/color][color=DarkCyan]= [/color][color=Navy]0                [/color][color=Green]' On efface le timer
            
      [/color][color=Blue]else
      
            if [/color][color=Purple]time [/color][color=DarkCyan]>= [/color][color=Navy]1 [/color][color=Blue]then       [/color][color=Green]' Si le timer est  superieur ou egal a 1 
                  [/color][color=Blue]Low [/color][color=Black]Enable        [/color][color=Green]' On desactive le Tx
                  [/color][color=Black]flag_En [/color][color=DarkCyan]= [/color][color=Navy]0       [/color][color=Green]' On met le flag a 0
            [/color][color=Blue]end if
      
      end if

Rfout [/color][color=Black]donnee,[/color][color=Blue]([/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue])

loop[/color]
 

dje8269

Senior Member
Bonjour à tous,

Je cherche des conseils pour savoir s'il est possible de "fiabiliser" la lecture de la tension d'une batterie niMh de 9.6V 2100mAh . Peut etre qu'il existe une solution hard, que je ne connaitrais pas ?

Voila ce qui me chagrine, la premiere barre du barre-graphe dur trés longtemps, et qu'ensuite elles s'eteignent plus rapidement; Par exemple ( j'ai rien chronometé hein..) la premiere barre met 20minute pour s'eteindre et la derniere ne met qu'une minute. Surtout quand la télécommande emet ce qui parait normal que la tension s'ecroule un peu en fin de batterie.

Niveau soft Je pensais donc faire des especes de palier exponentiel pour resoudre ce probléme et avoir une lecture plus juste du temps qu'il reste avant que celle ci ne puisse plus fonctionnée correctement.
Ou alors peut etre une moyenne sur les mesures ; genre, je prend une mesure a chaque tour de boucle, et au bout de dix je fais une moyenne et je compare pour affiché le résultat.

est ce une bonne idée ?
Merci
 

PieM

Senior Member
Faire une moyenne est très mauvaise idée, car cela va te masquer la fin de charge, avec un gros risque !
Il est normal de constater une variation lente au début et qui s'accélère très rapidement vers la fin. C'est la courbe normale de décharge.
Il faut surtout veiller à ne jamais descendre sous une tension inférieure à 1.05 V par élément si tu en as 8, soit une tension totale de 8.4V.
Ce qu'il faut c'est faire une table de correspondance entre tension mesurée et capacité restante. C'est cette capacité qu'il faut afficher sur le barregraphe.
Cela restera approximatif car dépendant du courant instantané de décharge...
 

dje8269

Senior Member
Bonjour PieM,
Faire une moyenne est très mauvaise idée, car cela va te masquer la fin de charge, avec un gros risque !
Le barre-graphe n'est pas actif pendant la charge . C'est le chargeur qui s'arrête . J'ai un interrupteur On/Off sur la télécommande. Sur off , l'inter est en position de charge , et donc peut éventuellement recharger les batteries si le chargeur est branché ; dans la position "On" aucune charge possible .

En fait quand je parlais de faire une moyenne, c'est en fait pour ne pas avoir une seule lecture de tension a un instant T, car quand on émet la tension chute avant de stabiliser je crois aux bornes de la batterie . Et comme je fais une lecture a chaque boucle dans le programme , je pourrais facilement faire une moyenne pour éviter cette erreur non ? ( n'y voit pas de l'insistance, j'essaye seulement de comprendre hein ..)

Il faut surtout veiller à ne jamais descendre sous une tension inférieure à 1.05 V par élément si tu en as 8, soit une tension totale de 8.4V.
Oui j'ai lus ca sur la toile ; sinon dégradation voir destruction des accus Nimh. Je pensais que cela ne s'appliquai qu'au Li-Po en fait .

Ce qu'il faut c'est faire une table de correspondance entre tension mesurée et capacité restante. C'est cette capacité qu'il faut afficher sur le barre-graphe.
Ben la ! tu m'as perdus ! :D . j'ai pas compris le fait de mesurée la capacité restante, comment cela est possible ? .
 

dje8269

Senior Member
comme je m'ennuyais un peu cet apres midi pendant la sieste du petit . j'ai regarder un peu mon programme télécommande .

J'ai corriger un petit bug au démarrage. et essayé mon système . Comme j'ai pas d'alim stab a la maison, j'ai pas pu tester;

Voila mon idée , lire 100 valeurs de tension en faire la moyenne , et allumé le nombre de led correspondantes ; De plus l'écart entre une led à enlever n'est pas le même au début qu'a la fin ainsi je ruse un peu pour diminuer le mauvais effet .

Code:
#PICAXE 28X2

'##########################    configuration  I/O  ################################
Symbol Buzz = B.7
Symbol Led2 = B.3
Symbol Led3 = B.4
symbol dcki=B.1
symbol di=B.2

symbol pinDi=pinB.2
Symbol BP_Noir = PinC.1
Symbol BP_Rouge = PinA.2
Symbol inter1 = PinA.1
Symbol inter2 = PinA.0
Symbol inter3 = PinC.0
Symbol inter4 = PinC.2
Symbol glissiere1 = PinC.6
Symbol glissiere2 = PinC.7


Symbol NbLeds=b4		' nombre de leds a allumer [0,10]
Symbol tension = b5
Symbol compt_tension = b6

Symbol Mot=w1
Symbol i=b52 'w24
Symbol j=b53 'w24
Symbol mem_tension = w25

Symbol allume = $0015	; intensite [$01,$ff] en mode 8 bits
Symbol eteint = $0000
Symbol CMD = $0000	; mot CMD voir doc MY9221 page 13, mode 8bits entre autres

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

setfreq m16				' Met la frequence a 16Mhz

hi2csetup i2cslave, %10100000	' Met le 28X2 en Esclave
dirsB = %10011110 		' declare Les broches B.7,B.4,B.3,B.2 et B.1  en sortie
low dcki

Gosub Lecture_tor			' Lecture des TOR
put 0,b0				' Ecrire dans scratchpad la valeur des inter a l'allumage
b7 = b0				' recopie de b0 dans b7 pour verifier un changement

Gosub Animation			' Animation du barre graphe a l'allumage laissant le temps pour une emission des TOR

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

do
	
Gosub Lecture_tor			' Lecture des TOR

If b0 <> b7 then			' Si changement detecte
	
	pause 30			' Pause anti rebonds/parasites
	Gosub Lecture_tor		' Relecture des TOR pour confirmation

	if b0 <> b7 then		' Si le changement est confirme
		b7 = b0		' Enregistrement de la nouvelle valeur
		put 0,b0		' Ecrire dans scratchpad pour MAJ par l'emetteur
		high led3		' Si changement on allume la led3
		pause 300		' Cela sert juste pour verifier le changement d'etat.
		low led3
		
		if BP_Noir = 0 or BP_Rouge = 0 then	' Si c'est un BP qui est appuye on laisse la led allumee tant que la BP est appuye
			high led3
		else
			low led3
		end if
				
	end if
end if
	
readadc 17,tension		' Lecture de la tension
mem_tension = mem_tension + tension
inc compt_tension
	if compt_tension > 99 then
		gosub calcul_tension
	endif

loop
		
'#################################################################################
'##########################    Programme Secondaire    ###########################	
'#################################################################################		

Lecture_tor:
	bit0 = BP_Rouge		' On enregistre les TORs
	bit1 = BP_Noir
	bit2 = inter1
	bit3 = inter2
	bit4 = inter3
	bit5 = inter4
	bit6 = glissiere1
	bit7 = glissiere2
return

calcul_tension:

compt_tension = 0		' RAZ du compteur
		mem_tension = mem_tension / 100 ' calcul de la moyenne de la tension sur 100 valeur
		
		select case mem_tension
			case > 201		' -2
				Nbleds = 10
			case > 199		' -2
				Nbleds = 9
			case > 197		' -3		'
				Nbleds = 8
			case > 194		' -3
				Nbleds = 7
			case > 191		' -4
				Nbleds = 6
			case > 187		' -4
				Nbleds = 5
			case > 183		' -5
				Nbleds = 4
			case > 178		' -5
				Nbleds = 3
			case > 173		' -6
				Nbleds = 2
			case > 166		
				Nbleds = 1
			else
				Nbleds = 0
		end select
if Nbleds = 0 then gosub beep 
gosub MAJ_BarGraph			
				
return

MAJ_BarGraph:
		
Mot= CMD
	gosub EnvoiMot
		for j=1 to 12
			if NbLeds>=j then let Mot=allume else let Mot=eteint endif
			gosub EnvoiMot
		next j
	
	gosub Affichage
	
return
	
EnvoiMot:
	for i=1 to 16
		pinDi=bit31	; poids fort en premier
		toggle dcki
		Mot=Mot*2
	next i
	return
	
Affichage:
	low di
	for i=1 to 4
		high di
		low di
	next i
	return
	
Animation:
NbLeds = 0				' Raz pour commencer a partir de 0
do
	inc NbLeds			' incremente le nombre de leds a afficher
	gosub MAJ_BarGraph	' Met a jour les leds
	if NbLeds > 9 then exit	' si strictement superieur a 9 donc 10 on sort
loop
gosub beep				' On emet un son fin d'initialisation de la télécommande

return

Beep:		' Emet 3 petits beep pour signaler la fin de l'initialisation
High Buzz		
pause 50
low Buzz
pause 200
High Buzz
pause 50
low Buzz
pause 200
High Buzz
pause 50
low Buzz
pause 200

return
 
Top