Petite page pour illustrer l'utilisation du multitâche sur un picaxe.
Ce programme était une réponse à une demande de simulation d'orage pour un aquarium.
Modifié le 28/11/2017 pour régler la fréquence des éclairs
Modifié le 03/08/2024 Simulateur d'orage son et lumières avec DFplayer:
Le schéma (simplisime), avec l'alim standard, volts régulés
Rappel: Si les deux résistances de programmation ne sont pas câblées, il faut relier la patte 2 du picaxe au 0 Volt.
Les leds sont des leds blanches "haute luminosité".
Une vidéo vaut mieux qu'un long discours:
Son et lumières avec DFPlayer
Ce n'est pas le code de cette vidéo, mais l'original simplifié, la vidéo originale a disparu.
Voici le code, composés de trois programmes légèrement différents, aléatoires et indépendants, exécutés en temps partagé. Chaque programme, étiqueté start0, start1, start2 pilote une led sur les ports C.0, C.1, C.2 . Fréquence des éclairs variable par un potentiomètre.
Le code de cette simulation, mais il y a plus simple, avec un 08M2
;simulation orage 5 sorties aléatoires
;
MM 19/04/23
#picaxe 14M2
#no_data
start0:
symbol led1 =B.0
symbol led2 =B.1
symbol led3= B.2
symbol led4 =B.3
symbol led5 =B.4
symbol potar=C.4
symbol baseT= w5 ;base de temps vitesse
symbol tempo= w6 ;temporisation vitesse
symbol alea =w4 ;variable aléatoire pour init random
alea=12000
do
tempo=baseT*5+1000
pause tempo
w13=alea
random w13 ;composé de 2 octets (b27;b26)
b27=b27//5+1 ;temps éclair de 1 à 5
pause tempo
do
toggle led1
b26=b26*6
pause b26
dec b27
loop while b27>0
low led1
loop
start1:
do
tempo=baseT*10+2000
pause tempo
w12=alea
random w12 ;(b25;b24)
b25=b25//4+1 ;+1 parce que si on tire 0 après dec 25 on passe à 255
pause tempo
do
toggle led2
b24=b24*6
pause b24
dec b25 ;0-1 => 255
loop while b25>0
low led2
loop
start2:
do
tempo=baseT*20+3000
pause tempo
w11=alea
random w11 ;(b23;b22)
b23=b23//3+1
pause tempo
do
toggle led3
b22=b22*6
pause b22
dec b23
loop while b23>0
low led3
loop
start3:
do
tempo=baseT*15+2000
pause tempo
w10=alea
random w10 ;(b21;b20)
b21=b21//6+1
pause tempo
do
toggle led4
b20=b20*6
pause b20
dec b21
loop while b21>0
low led4
loop
start4:
do
tempo=baseT*25+5000
pause tempo
w9=alea
random w9
b19=b19//3+1
pause tempo
do
toggle led5
b18=b18*6
pause b18
dec b19
loop while b19>0
low led5
loop
start6: ;variable aléatoire init random
do
readadc potar, baseT ;de 0 à 255
inc alea
loop