[color=Navy]#picaxe [/color][color=Black]40X2[/color]
[color=Navy]#no_data[/color][color=Green]'permet de ne pas ecraser la memoire pendant une reprogrammation
'*********** E/S ********************************[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%11100000 [/color][color=Green]' positionne B.5 et B.6 b7 en sorties
'entrees ------------------------------[/color]
[color=Blue]symbol [/color][color=Purple]FC_opto [/color][color=DarkCyan]= [/color][color=Purple]pinB.4 [/color][color=Green]'Fin de course opto[/color]
[color=Blue]symbol [/color][color=Purple]Stop_rota [/color][color=DarkCyan]= [/color][color=Purple]pinB.3 [/color][color=Green]'arret moteur pas ? pas
'sorties ------------------------------[/color]
[color=Blue]symbol [/color][color=Purple]dir [/color][color=DarkCyan]= [/color][color=Purple]pinB.5 [/color][color=Green]'sortie direction[/color]
[color=Blue]symbol pas [/color][color=DarkCyan]= [/color][color=Blue]B.6 [/color][color=Green]'sortie pas
'*********** variables **************************[/color]
[color=Blue]symbol [/color][color=Purple]touche [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]Symbol [/color][color=Purple]nombre [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]
[color=Blue]Symbol [/color][color=Purple]Compteur [/color][color=DarkCyan]= [/color][color=Purple]b4[/color]
[color=Blue]Symbol [/color][color=Purple]LaVoie [/color][color=DarkCyan]= [/color][color=Purple]b6 [/color][color=Green]' La Voie actuellement s?lectionn?e[/color]
[color=Blue]Symbol [/color][color=Purple]N [/color][color=DarkCyan]= [/color][color=Purple]b7 [/color][color=Green]' L'aiguille actuellement choisie[/color]
[color=Blue]Symbol [/color][color=Purple]boucle [/color][color=DarkCyan]= [/color][color=Purple]b8[/color]
[color=Green]'Symbol Etat_Aig = b9[/color]
[color=Blue]Symbol [/color][color=Purple]adr_pcf [/color][color=DarkCyan]= [/color][color=Purple]b10[/color]
[color=Blue]Symbol [/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]b11[/color]
[color=Blue]Symbol [/color][color=Purple]adr_mem [/color][color=DarkCyan]= [/color][color=Purple]b12[/color]
[color=Green]'reserve de mot w21 b43 b42[/color]
[color=Blue]symbol [/color][color=Purple]dat [/color][color=DarkCyan]= [/color][color=Purple]w22 [/color][color=Green]'variable pour i2c b45 b44[/color]
[color=Blue]symbol [/color][color=Purple]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Purple]w23 [/color][color=Green]'nombre de pas ? b47 b46[/color]
[color=Blue]symbol [/color][color=Purple]Pos_cible [/color][color=DarkCyan]= [/color][color=Purple]w24 [/color][color=Green]'position cible pont b49 b48[/color]
[color=Blue]symbol [/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Purple]w25 [/color][color=Green]'position courante b51 b50[/color]
[color=Blue]symbol [/color][color=Purple]var_temp [/color][color=DarkCyan]= [/color][color=Purple]w26 [/color][color=Green]'variable temporaire b53 b52[/color]
[color=Blue]Symbol [/color][color=Purple]addition [/color][color=DarkCyan]= [/color][color=Purple]w27 [/color][color=Green]'b55 b54
'*********** constantes **************************[/color]
[color=Blue]symbol CW [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Green]'sens horaire[/color]
[color=Blue]symbol CCW [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'sens anti horaire (arbitraire)[/color]
[color=Blue]symbol Vit_lente [/color][color=DarkCyan]= [/color][color=Navy]100 [/color][color=Green]'predefini vitesse lente[/color]
[color=Blue]symbol Vit_moy [/color][color=DarkCyan]= [/color][color=Navy]40[/color]
[color=Blue]symbol Vit_rapide [/color][color=DarkCyan]= [/color][color=Navy]10 [/color][color=Green]'et vitesse rapide[/color]
[color=Blue]symbol pause_aig [/color][color=DarkCyan]= [/color][color=Navy]1700 [/color][color=Green]'temps de commutation des aiguillages[/color]
[color=Blue]symbol [/color][color=Purple]Sens [/color][color=DarkCyan]= [/color][color=Purple]bit0[/color]
[color=Blue]symbol droite [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]symbol gauche [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Green]'*********** Macros ******************************
'definition macro avec parametres; Nb de pas, sens, periode entre pas.[/color]
[color=Gray]{[/color]
[color=Navy]#MACRO [/color][color=Black]PaP[/color][color=Blue]([/color][color=Black]Nb,[/color][color=Purple]Sens[/color][color=Black],Per[/color][color=Blue])
[/color][color=Purple]dir [/color][color=DarkCyan]= [/color][color=Purple]Sens [/color][color=Green]'affecte 1 ou 0 ? dir donc ? B.5
[/color][color=Blue]for [/color][color=Purple]var_temp [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Black]Nb [/color][color=Green]'envoie Nb pulses au circuit
[/color][color=Blue]pulsout pas[/color][color=Black],[/color][color=Navy]1 [/color][color=Green]'driver
[/color][color=Blue]pause [/color][color=Black]Per [/color][color=Green]' pause en X fois 5?s
[/color][color=Blue]next
[/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Purple]sens [/color][color=DarkCyan]* [/color][color=Navy]2 [/color][color=DarkCyan]* [/color][color=Black]Nb [/color][color=DarkCyan]+ [/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]- [/color][color=Black]Nb [/color][color=Green]'actualisation position du pont
'si sens =1 on ajoute Nb pas ? Pos_actuelle sinon on lui retranche Nb pas ;-)[/color]
[color=Navy]#ENDMACRO[/color]
[color=Gray]}[/color]
[color=Green]'commmande de l'aiguille N ? droite ou ? gauche[/color]
[color=Gray]{[/color]
[color=Navy]#MACRO [/color][color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]N[/color][color=Black],[/color][color=Purple]sens[/color][color=Blue])
[/color][color=Purple]dat [/color][color=DarkCyan]= [/color][color=Navy]$FFFF
[/color][color=Purple]adr_pcf [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]/[/color][color=Navy]8 [/color][color=DarkCyan]+ [/color][color=Navy]$20 [/color][color=DarkCyan]<<[/color][color=Navy]1
[/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]//[/color][color=Navy]8 [/color][color=DarkCyan]- [/color][color=Navy]1 [/color][color=DarkCyan]max [/color][color=Navy]7
[/color][color=Purple]adr_mem [/color][color=DarkCyan]= [/color][color=Navy]100 [/color][color=DarkCyan]+ [/color][color=Purple]adr_pcf [/color][color=Green]'calcul de l'adresse memoire en RAM
[/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Purple]sens
[/color][color=Blue]peek [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]'on va chercher le byte d'?tat
[/color][color=Blue]if [/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then
setbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met ? 1 (droite) le bon bit adr_bit
[/color][color=Blue]else
clearbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met ? 0 (gauche) le bon bit adr_bit
[/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]adr_bit [/color][color=DarkCyan]+ [/color][color=Navy]8 [/color][color=Green]'et on change l'adresse du bit de cde pour etre dans b45
[/color][color=Blue]endif
poke [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]' on enregistre le nouvel ?tat dans la variable du byte d'?tat
[/color][color=Blue]clearbit [/color][color=Purple]dat[/color][color=Black],[/color][color=Purple]adr_bit [/color][color=Green]'on met a 0 le bit de dat pour la cde. Il sera dans b44 ou b45 selon le sens.
[/color][color=Blue]hi2cout [/color][color=Purple]adr_pcf[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b44[/color][color=Black],[/color][color=Purple]b45[/color][color=Blue]) [/color][color=Green]' commande la bobine N a droite ou ? gauche
[/color][color=Blue]pause pause_aig
hi2cout [/color][color=Purple]adr_pcf[/color][color=Black], [/color][color=Blue]([/color][color=Navy]$FF[/color][color=Black],[/color][color=Navy]$FF[/color][color=Blue]) [/color][color=Green]'RAZ cde bobine[/color]
[color=Navy]#ENDMACRO[/color]
[color=Gray]}[/color]
[color=Blue]hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%01000000[/color][color=Black], [/color][color=Blue]i2cfast[/color][color=Black], [/color][color=Blue]i2cbyte
do
for [/color][color=Purple]b13[/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]8
[/color][color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]b13[/color][color=Black],[/color][color=Blue]droite)
next
pause [/color][color=Navy]3000
[/color][color=Blue]for [/color][color=Purple]b13[/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]8
[/color][color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]b13[/color][color=Black],[/color][color=Blue]gauche)
next
loop[/color]