PieM
Senior Member
C'est un orgue ?Mais avec des interrupteurs a bascule, des interrupteurs poussoirs, et des télé-rupteurs .
C'est un orgue ?Mais avec des interrupteurs a bascule, des interrupteurs poussoirs, et des télé-rupteurs .
#picaxe 08M2
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
'######################## Initialisation ########################
setfreq m4 'Fréquence à 4MHz,les pauses sont en mS
pwmout 2,off 'On eteint le son
ordre = 0
setint %00010000,%00010000
'####################################################################################################
' Programme Principal
'####################################################################################################
main:
do
readadc C.4,ordre ' Lecture de l'action a realiser
loop
'####################################################################################################
' Programme Secondaire
'####################################################################################################
'############################
interrupt:
for b2= 0 to 255
pwmout pwmdiv16, 2, 143, 287
next
setint %00010000,%00010000
return
do
pwmout pwmdiv16, 2, 143, 287
pause 1070
pwmout pwmdiv16, 2, 127, 256
pause 1070
gosub verification ' Vérifie si il y a du changement par a un appui
loop
#picaxe 08M2
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
symbol type_sirene = b6
symbol inter = b3
'variable pour pompier b2,b4,b5,b20,b21, w9 ,w10
'######################## Initialisation ########################
setfreq m16 'Fréquence à 16MHz,
read 0,type_sirene 'On lit la derniére sirene enregistrée
pwmout 2,off 'On eteint le son
ordre = 0 'valeur de l'ordre à 0
inter = 0 'interrutpeut sur Off
'####################################################################################################
' Programme Principal
'####################################################################################################
main:
do
readadc C.4,ordre ' Lecture de l'action a realiser
if ordre=24 then ' Si appui sur klaxon
gosub klaxon
end if
if ordre=72 then ' Si appui sur changement
gosub changement
end if
if ordre=120 then ' Si appui sur sirene
gosub Interrupteur
end if
loop
'####################################################################################################
' Programme Secondaire
'####################################################################################################
'############################
' Sub Klaxon
klaxon:
do
readadc C.4,ordre ' On verifie l'etat du bouton en permanence
pwmout pwmdiv64, 2, 143, 287 ' Le klaxon doit durer tant que la valeur est recu
loop while ordre=24 ' on boucle tant que le bouton est appuyé
pwmout 2,off 'On eteint le son
return
'############################
' Sub changement
changement:
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=72
inc type_sirene ' On change la sirene
if type_sirene >= 6 then ' On reboucle entre 1 et 5
type_sirene = 1
end if
write 0 , type_sirene ' On enregsitre la nouvelle valeur en EEPROM
return
'############################
' Sub Interrupteur
Interrupteur:
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=120
inter = inter+1 ' On inverse l'interrupteur
if inter >= 2 then ' Permet de reboucler entre 0 et 1
inter =0
end if
if inter = 1 then ' Si il est mis sur On, on va à lancement
gosub lancement
else
pwmout 2,off ' Si il est mis sur Off, on eteint
end if
return
'############################
' Sub verification
verification:
readadc C.4,ordre
if ordre=24 then ' Si appui sur klaxon
gosub klaxon
setint %00001000,%00001000 ' armement de l'interrutpion car la verification est toujours effectué pendant une sirène
end if ' Il faut donc la ré-armé avant de revenir dans la sirène
if ordre=72 then ' Si appui sur changement
gosub changement ' On va changer
gosub lancement ' puis on revient a lancement
end if
if ordre=120 then ' Si appui sur interrupteur
gosub Interrupteur ' On va changer la position
goto main ' puis on reveint au debut
end if
return
'############################
' Sub interruption ' L'interruption me sert seulement a sauté les pauses
interrupt:
return
'############################
' Sub Lancement
lancement:
setint %00001000,%00001000 ' armement de l'interrutpion
on type_sirene goto pompier,police,gendarme,ambulance,pompierUS ' On va à la sirene correspondante
'------------------------------------
pompier:
do
pwmout pwmdiv64, 2, 143, 287
pause 4280
gosub verification
pwmout pwmdiv64, 2, 127, 256
pause 4280
gosub verification
loop
'------------------------------------
police:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
gosub verification
pwmout pwmdiv64, 2, 107, 216
pause 2180
gosub verification
loop
'------------------------------------
gendarme:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
gosub verification
pwmout pwmdiv64, 2, 84, 171
pause 2180
gosub verification
loop
'------------------------------------
ambulance:
do
pwmout pwmdiv64, 2, 148, 298
pause 664
gosub verification
pwmout pwmdiv64, 2, 120, 242
pause 664
gosub verification
pwmout pwmdiv64, 2, 148, 298
pause 664
gosub verification
pwmout 2, off
pause 6000
gosub verification
loop
'------------------------------------
pompierUS:
b2=205
w9=b2*2
b4=65
Do
random w10 'w10=(b21,b20)
w10=5*b20 +400*4 'w10 aléatoire de 400 à 1675 mS
gosub verification
do
dec b2 'glissement fréquence montée
w9=b2*2 'rapp cyclique 50%
gosub verification
pwmout pwmdiv64, 2, b2, w9
pause 120
gosub verification
loop while b2>b4 'b4=65 -->940 Hz
gosub verification
pause w10
gosub verification
random w10 'w10=(b21,b20)
w10=4*b20*4 'b20 = 0 à 255 --> w10= 0 à 765
b21=b21//4 'b21=0,1,2,3
b5=51*b21+100 'b5 aléatoire: 100(620Hz) , 151(410Hz), 202(308Hz), 253(246Hz)
do
inc b2 'glissement fréquence descente
w9=b2*2
pwmout pwmdiv64, 2, b2, w9
pause 200
gosub verification
loop while b2<b5 'relance sirène suivant fréquences
gosub verification
pause w10
gosub verification
Loop
Oui PieM , mais je sais pas faire ....... . J'ai regarder l'histoire des start0 et strat1 mais le manuel reste assez succint la dessus .Je t'ai dit en #490 d'utiliser le multitâche:
Oui je sais , moi aussi je le trouve très compliqué lol .Je trouve ton système changement / lancement de sirène bien compliqué
Je ne comprends pas ce que tu veux dire par la . car j'ai bien deux fonctions distinctes ! pour les deux taches . le changement ne fais que incrémenter la valeurLe changement de sirène est une chose, le lancement une autre.
L'ordre n'est pas le même , pour le changement c'est 72 pour le lancement c'est 120 .Pourquoi utiliser le même ordre pour les deux ?
C'est déjà le cas, pendant une sirène, quand je fais changement , ça lance la deuxième sirène de suite .tu peux avec un autre ordre changer le type sans pour autant arrêter ta sirène .
exact , j'y avais pensé , je devais le changer mais hier soir, j'ai oublié .il n'y a que deux positions, donc c'est un bit.
#PICAXE 08M2
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
symbol type_sirene = b6
symbol inter = b3
'variable pour pompier b2,b4,b5,b20,b21, w9 ,w10
'######################## Initialisation ########################
setfreq m16 'Fréquence à 16MHz,
read 0,type_sirene 'On lit la derniére sirene enregistrée
pwmout 2,off 'On eteint le son
ordre = 0 'valeur de l'ordre à 0
inter = 0 'interrutpeut sur Off
'####################################################################################################
' Programme Principal
'####################################################################################################
start0:
do
readadc C.4,ordre ' Lecture de l'action a realiser
'##### KLAXON #####
if ordre=24 then ' Si appui sur klaxon
do
readadc C.4,ordre ' On verifie l'etat du bouton en permanence
pwmout pwmdiv64, 2, 143, 287 ' Le klaxon doit durer tant que la valeur est recu
loop while ordre=24 ' on boucle tant que le bouton est appuyé
pwmout 2,off 'On eteint le son
end if
'##### CHANGEMENT #####
if ordre=72 then ' Si appui sur changement
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=72
inc type_sirene ' On change la sirene
if type_sirene >= 6 then ' On reboucle entre 1 et 5
type_sirene = 1
end if
write 0 , type_sirene ' On enregsitre la nouvelle valeur en EEPROM
resume 1 ' Relance la ou on c'est arreté
end if
'##### LANCEMENT #####
if ordre=120 then ' Si appui sur sirene
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=120
inter = inter+1 ' On inverse l'interrupteur
if inter >= 2 then ' Permet de reboucler entre 0 et 1
inter =0
end if
if inter = 1 then ' Si il est mis sur On, on va à lancement
restart 1
else
suspend 1
pwmout 2,off ' Si il est mis sur Off, on eteint
end if
end if
loop
'############################
' deuxiéme programme
start1:
on type_sirene goto pompier,police,gendarme,ambulance,pompierUS ' On va à la sirene correspondante
'------------------------------------
pompier:
do
pwmout pwmdiv64, 2, 143, 287
pause 4280
gosub verification
pwmout pwmdiv64, 2, 127, 256
pause 4280
gosub verification
loop
'------------------------------------
police:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
gosub verification
pwmout pwmdiv64, 2, 107, 216
pause 2180
gosub verification
loop
'------------------------------------
gendarme:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
gosub verification
pwmout pwmdiv64, 2, 84, 171
pause 2180
gosub verification
loop
'------------------------------------
ambulance:
do
pwmout pwmdiv64, 2, 148, 298
pause 664
gosub verification
pwmout pwmdiv64, 2, 120, 242
pause 664
gosub verification
pwmout pwmdiv64, 2, 148, 298
pause 664
gosub verification
pwmout 2, off
pause 6000
gosub verification
loop
'------------------------------------
pompierUS:
b2=205
w9=b2*2
b4=65
Do
random w10 'w10=(b21,b20)
w10=5*b20 +400*4 'w10 aléatoire de 400 à 1675 mS
gosub verification
do
dec b2 'glissement fréquence montée
w9=b2*2 'rapp cyclique 50%
gosub verification
pwmout pwmdiv64, 2, b2, w9
pause 120
gosub verification
loop while b2>b4 'b4=65 -->940 Hz
gosub verification
pause w10
gosub verification
random w10 'w10=(b21,b20)
w10=4*b20*4 'b20 = 0 à 255 --> w10= 0 à 765
b21=b21//4 'b21=0,1,2,3
b5=51*b21+100 'b5 aléatoire: 100(620Hz) , 151(410Hz), 202(308Hz), 253(246Hz)
do
inc b2 'glissement fréquence descente
w9=b2*2
pwmout pwmdiv64, 2, b2, w9
pause 200
gosub verification
loop while b2<b5 'relance sirène suivant fréquences
gosub verification
pause w10
gosub verification
Loop
avec tonL'ordre n'est pas le même , pour le changement c'est 72 pour le lancement c'est 120 .
C'est la que tout est compliqué lol .tu vas sur lancement avec un ordre 72 . Pas très logique.
C'est vrai j'avoue............Tu as fait du n'importe quoi dans ce nouveau programme !
.Passer en multitâche ne consiste pas à ajouter deux étiquettes Start! c'est le principe que tu n'a pas bien assimilé
#PICAXE 08M2
start0:
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
symbol type_sirene = b6
symbol inter = bit0
'variable pour pompier b2,b4,b5,b20,b21, w9 ,w10
'######################## Initialisation ########################
read 0,type_sirene 'On lit la derniére sirene enregistrée
suspend 1
pwmout 2,off 'On eteint le son
ordre = 0 'valeur de l'ordre à 0
inter = 0 'interrutpeut sur Off
'####################################################################################################
' Programme Principal
'####################################################################################################
do
readadc C.4,ordre ' Lecture de l'action a realiser
'##### KLAXON #####
if ordre=24 then ' Si appui sur klaxon
do
readadc C.4,ordre ' On verifie l'etat du bouton en permanence
pwmout pwmdiv64, 2, 143, 287 ' Le klaxon doit durer tant que la valeur est recu
loop while ordre=24 ' on boucle tant que le bouton est appuyé
pwmout 2,off 'On eteint le son
end if
'##### CHANGEMENT #####
if ordre=72 then ' Si appui sur changement
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=72
inc type_sirene ' On change la sirene
if type_sirene >= 6 then ' On reboucle entre 1 et 5
type_sirene = 1
end if
write 0 , type_sirene ' On enregsitre la nouvelle valeur en EEPROM
if bit1=1 then
restart 1
end if ' Relance la ou on c'est arreté
end if
'##### LANCEMENT #####
if ordre=120 then ' Si appui sur sirene
do ' Anti-rebond
readadc C.4,ordre ' On attend que le bouton soit relaché pour avancé
loop while ordre=120
inc inter
if inter = 1 then ' Si il est mis sur On, on va à lancement
restart 1
else
suspend 1
pwmout 2,off ' Si il est mis sur Off, on eteint
bit1=0
end if
end if
loop
'############################
' deuxiéme programme
start1:
bit1=1
on type_sirene goto pompier,police,gendarme,ambulance,pompierUS
'----------------------------
pompier:
do
pwmout pwmdiv16, 2, 143, 287
pause 1070
pwmout pwmdiv16, 2, 127, 256
pause 1070
loop
'----------------------------
police:
do
pwmout pwmdiv16, 2, 143, 287
pause 545
pwmout pwmdiv16, 2, 107, 216
pause 545
loop
'----------------------------
gendarme:
do
pwmout pwmdiv16, 2, 143, 287
pause 545
pwmout pwmdiv16, 2, 84, 171
pause 545
loop
'----------------------------
ambulance:
do
pwmout pwmdiv16, 2, 148, 298
pause 166
pwmout pwmdiv16, 2, 120, 242
pause 166
pwmout pwmdiv16, 2, 148, 298
pause 166
pwmout 2, off
pause 1500
loop
'----------------------------
pompierUS:
b2=205
w9=b2*2
b4=65
Do
random w10 'w10=(b21,b20)
w10=5*b20 +400 'w10 aléatoire de 400 à 1675 mS
do
dec b2 'glissement fréquence montée
w9=b2*2 'rapp cyclique 50%
pwmout pwmdiv16, 2, b2, w9
pause 30
loop while b2>b4 'b4=65 -->940 Hz
pause w10
random w10 'w10=(b21,b20)
w10=4*b20 'b20 = 0 à 255 --> w10= 0 à 765
b21=b21//4 'b21=0,1,2,3
b5=51*b21+100 'b5 aléatoire: 100(620Hz) , 151(410Hz), 202(308Hz), 253(246Hz)
do
inc b2 'glissement fréquence descente
w9=b2*2
pwmout pwmdiv16, 2, b2, w9
pause 50
loop while b2<b5 'relance sirène suivant fréquences
pause w10
Loop
#picaxe 08M2
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
symbol type_sirene = b6
symbol inter = bit0
'variable pour pompier b2,b4,b5,b20,b21, w9 ,w10
'####################################################################################################
' Programme Principal
'####################################################################################################
main:
do
readadc C.4,ordre ' Lecture de l'action a realiser
loop
'############################
' deuxiéme tâche
Start1:
'##### KLAXON #####
if ordre=24 then ' Si appui sur klaxon
pwmout pwmdiv64, 2, 143, 287 ' Le klaxon doit durer tant que la valeur est recu
else
pwmout 2,off 'On eteint le son
end if
'##### CHANGEMENT #####
if ordre=72 then ' Si appui sur changement
do ' Anti-rebond
loop while ordre=72
inc type_sirene ' On change la sirene
if type_sirene >5 then ' On reboucle entre 1 et 5
type_sirene = 1
end if
write 0 , type_sirene ' On enregsitre la nouvelle valeur en EEPROM
end if
'##### LANCEMENT #####
if ordre=120 then ' Si appui sur sirene
do ' Anti-rebond
loop while ordre=120
inc inter ' On inverse l'interrupteur
if inter = 0 then
pwmout 2, OFF
end if
end if
goto start1
'############################
' troisiéme tâche
start2:
If inter = 1 then
read 0,type_sirene 'On lit la derniére sirene enregistrée
on type_sirene goto pompier,police,gendarme,ambulance,pompierUS ' On va à la sirene correspondante
'------------------------------------
pompier:
do
pwmout pwmdiv64, 2, 143, 287
pause 4280
pwmout pwmdiv64, 2, 127, 256
pause 4280
loop
'------------------------------------
police:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
pwmout pwmdiv64, 2, 107, 216
pause 2180
loop
'------------------------------------
gendarme:
do
pwmout pwmdiv64, 2, 143, 287
pause 2180
pwmout pwmdiv64, 2, 84, 171
pause 2180
loop
'------------------------------------
ambulance:
do
pwmout pwmdiv64, 2, 148, 298
pause 664
pwmout pwmdiv64, 2, 120, 242
pause 664
pwmout pwmdiv64, 2, 148, 298
pause 664
pwmout 2, off
pause 6000
loop
'------------------------------------
pompierUS:
b2=205
w9=b2*2
b4=65
Do
random w10 'w10=(b21,b20)
w10=5*b20 +400*4 'w10 aléatoire de 400 à 1675 mS
do
dec b2 'glissement fréquence montée
w9=b2*2 'rapp cyclique 50%
pwmout pwmdiv64, 2, b2, w9
pause 120
loop while b2>b4 'b4=65 -->940 Hz
pause w10
random w10 'w10=(b21,b20)
w10=4*b20*4 'b20 = 0 à 255 --> w10= 0 à 765
b21=b21//4 'b21=0,1,2,3
b5=51*b21+100 'b5 aléatoire: 100(620Hz) , 151(410Hz), 202(308Hz), 253(246Hz)
do
inc b2 'glissement fréquence descente
w9=b2*2
pwmout pwmdiv64, 2, b2, w9
pause 200
loop while b2<b5 'relance sirène suivant fréquences
pause w10
Loop
Else
goto start2
endif
Pas de soucis, et même avec plaisir ;Tu essaieras ce programme (pas en simulation) . Tu diras ce qui va et ce qui ne vas pas car pas facile pour moi sans faire de test.
Ben pas de problème ! c'est ton programme ...Je me suis pas permis de cherché a le corriger . mais dis moi si tu veux que je regarde ce qui cloche ;
voir l'état de inter. il ne doit pas changer normalement.je dois rester appuyé sur le bouton lancement pour que la sirène chante
comprends pas car non lié à l'inter qui seul peut actionner la sirène !Changement fais émettre la sirène aussi quand on laisse appuyé dessus
Ah non . La c'est le tiens. LolBen pas de problème ! c'est ton programme ...
Fais un essai avec une sirène, par ex:Je dois donc faire varier la valeur lue en corelation avec le duty ?
Cela ne fonctionne pas .Fais un essai avec une sirène, par ex:
Concernant ton programme ,je comprends pas pkoi ca ne fonctionne après mes modif ! .pwmout pwmdiv16, 2, 143, 287
pause 1070
pwmout pwmdiv16, 2, 127, 256
pause 1070
Non ça ne marche pas comme ça.Dans tous les cas le programme "sirène" doit être lancé de l'extérieur .
Je suis à 100% d'accord la dessus .Toutes les tâches s'exécutent en même temps. toutes las variables sont disponibles partout, et les pauses n'ont aucune incidence sur les autres tâches.
La ça se corse . Je suis d'accord pour dire qu'une tache n'a pas le rôle d'être considéré comme un sous prog qu'on lance, mais comme un autre programme qui tourne en // .Il ne faut pas considérer les taches comme des sous prog qu'on lance.
Comment faire pour sortir de cette boucle instantanément ? presque impossible !!!! ;Do
high led
pause 5000
low led
pause 5000
loop
Oui, je pense que c'est effectivement le plus efficace. Le problème ici vient du fait que l'on utilise des pwmout et non des pwmduty.L'autre et la plus efficace reste l'arrêt de l'extérieur; et de la redémarré dès qu'on as besoin.
Ben non, ça ne lui fait rien !Est ce que ca abime le µC de faire des suspend
Tu es sérieux là ? Une vraie sirène continuerait pendant le klaxon ... ça ne pose pas de problème ?la sirène repart de la ou elle c'est arrêté . avec ta méthode il redémarrera du début
J'ai donc essayé , mais il y as conflit, le son devient nasillard quand on klaxonne pendant une sirène ; Car en fait les deux programmes veulent passés un son en même temps . J'ai donc été oblige de suspendre la sirène pendant le klaxon .Une vraie sirène continuerait pendant le klaxon ... ça ne pose pas de problème ?
#PICAXE 08M2
'######################## Configuration ########################
dirsC = %00011010 'declare les broches C.1, C.3 et C.4 en entrée
symbol ordre = b1
symbol type_sirene = b6
symbol inter = bit0
'variable pour pompier b2,b4,b5,b20,b21, w9 ,w10
'######################## Initialisation ########################
read 0,type_sirene 'On lit la derniére sirene enregistrée
pwmout 2,off 'On eteint le son
ordre = 0 'valeur de l'ordre à 0
inter = 0 'interrutpeut sur Off
'####################################################################################################
' Programme Principal
'####################################################################################################
do
readadc C.4,ordre ' Lecture de l'action a realiser
loop
'############################
' deuxiéme tâche
Start1:
do
'##### KLAXON #####
if ordre=24 then
' Si appui sur klaxon
if inter = 1 then ' On arrete start2 pour ne pas se marcher dessus
suspend 2
end if
do
pwmout pwmdiv16, 2, 143, 460 ' Le klaxon doit durer tant que la valeur est recu
loop while ordre=24 ' on boucle tant que le bouton est appuyé
pwmout 2,off ' On eteint le son
if inter = 1 then ' On reprend start2
resume 2
end if
end if
'##### CHANGEMENT #####
if ordre=72 then ' Si appui sur changement
do ' Anti-rebond
loop while ordre=72
inc type_sirene ' On change la sirene
if type_sirene >4 then ' On reboucle entre 0 et 4
type_sirene = 0
end if
write 0 , type_sirene ' On enregsitre la nouvelle valeur en EEPROM
restart 2 ' RAZ de start2 "sirene" pour en compte le nouveau changement
end if
'##### LANCEMENT #####
if ordre=120 then ' Si appui sur sirene
do ' Anti-rebond
loop while ordre=120
inc inter
if inter = 0 then
restart 2 'Si l'interrupteur est a 0, on eteint le son en resetant la start2 ;
end if
end if
loop
'############################
' troisiéme programme
start2:
pwmout 2,off ' On eteint le son au lancement du start2
do
if inter = 1 then ' Si l'inter est à ON , alors on jour la sirene correspondante
on type_sirene goto pompier,police,gendarme,ambulance,pompierUS
end if
loop
'----------------------------
pompier:
do
pwmout pwmdiv16, 2, 143, 287 'fréq = 435 Hz
pause 1070
pwmout pwmdiv16, 2, 127, 256 'fréq = 488 Hz
pause 1070
loop
'----------------------------
police:
do
pwmout pwmdiv16, 2, 143, 287 'fréq = 435 Hz
pause 545
pwmout pwmdiv16, 2, 107, 216 'fréq = 580 Hz
pause 545
loop
'----------------------------
gendarme:
do
pwmout pwmdiv16, 2, 143, 287 'fréq = 435 Hz
pause 545
pwmout pwmdiv16, 2, 84, 171 'fréq = 732 Hz
pause 545
loop
'----------------------------
ambulance:
do
pwmout pwmdiv16, 2, 148, 298 'fréq = 420Hz
pause 166
pwmout pwmdiv16, 2, 120, 242 'fréq = 516Hz
pause 166
pwmout pwmdiv16, 2, 148, 298 'fréq = 420Hz
pause 166
pwmout 2, off
pause 1500
loop
'----------------------------
pompierUS:
b2=205
w9=b2*2
b4=65
Do
random w10 'w10=(b21,b20)
w10=5*b20 +400 'w10 aléatoire de 400 à 1675 mS
do
dec b2 'glissement fréquence montée
w9=b2*2 'rapp cyclique 50%
pwmout pwmdiv16, 2, b2, w9
pause 30
loop while b2>b4 'b4=65 -->940 Hz
pause w10
random w10 'w10=(b21,b20)
w10=4*b20 'b20 = 0 à 255 --> w10= 0 à 765
b21=b21//4 'b21=0,1,2,3
b5=51*b21+100 'b5 aléatoire: 100(620Hz) , 151(410Hz), 202(308Hz), 253(246Hz)
do
inc b2 'glissement fréquence descente
w9=b2*2
pwmout pwmdiv16, 2, b2, w9
pause 50
loop while b2<b5 'relance sirène suivant fréquences
pause w10
Loop
'--------------------------------------
'##### Commande Pan de la camera #####
Select case b5 ' Lecture valeur du pan de la camera
case < 127 'tourne a gauche de 150 à 235 . '
b5 = 127 - b5 ' Mise a l'echelle
b5 = b5*10/16 +150
case > 127 ' tourne a droite de 65 à 150
b5 = b5-127
b5 = b5*10/16
b5 = 150 - b5 ' Mise a l'echelle
else
b5=150 'Sinon point milieu
end select
servopos Pan,b5 ' Positionnement du servo
'--------------------------------------
'##### Commande Tilt de la camera #####
Select case b7 ' Lecture valeur du Tilt de la camera
case < 240 ' Vers le haut de 70 à 150
b7 = b7/3+70
else
b7=150 'Sinon point milieu
end select
servopos Tilt,b7 ' Positionnement du servo
'--------------------------------------
'##### Commande Pan de la camera #####
'
b5 = b5 * 7 / 10 ' Mise a l'echelle
b5 = 238- b5
servopos Pan,b5 ' Positionnement du servo
'--------------------------------------
'##### Commande Tilt de la camera #####
b7 = b7/3+70 max 150
servopos Tilt,b7 ' Positionnement du servo
Ça arrive , mais peut être que c'est normal et/ou inévitable,que des fois la voiture fasse des petits a-coups toute seule . Je ne pourrais pas le filmer car , c'est très aléatoire .Je ne comprends pas trop tes histoires de nano-bugs parasites