- mar. 25 avr. 2017 18:48
#184055
Bonjour, je souhaiterai que l'on m'aide au sujet de la programmation d'un code barre avec exécution d'une tâche( après la lecture du code barre .
J'aimerai ajouter ce dessin (voici le code ci dessous) suivant si cb[2]=32 par exemple ;
var itera = 0
var speed = 256
timer.period[0] = 1000 # 1000ms = 1s
onevent timer0
itera = itera + 1
if itera==1 then
motor.left.target = speed
motor.right.target = speed
end
if itera==4 then
motor.left.target = -speed
motor.right.target = -speed
end
if itera==6 then
motor.left.target = -40
motor.right.target = 40
speed = speed - (speed / 10)
end
if itera==7 then
itera = 0
end
voici mon programme( aseba) :
<!--list of constants-->
<constant value="100" name="BLANC"/>
<!--show keywords state-->
<keywords flag="true"/>
<!--node thymio-II-->
<node nodeId="1" name="thymio-II">
var cb[8]
var noir
var duree
var n
var min
var max
var moy
call sound.system(-1)
timer.period[0]=20
onevent buttons
when button.forward==1 do
motor.left.target=60
motor.right.target=60
end
when button.center==1 do
motor.left.target=0
motor.right.target=0
end
onevent timer0
if prox.ground.reflected[0]<100 then #Capteur de sol
# Il y a une bande noire
call leds.top(0,0,0) # on allume pas
noir=1
# On incrémente (ajout) la duree sur la bande
duree++
end
if prox.ground.reflected[0]>BLANC then
# On n'est pas sur une bande noire
call leds.top(20,32,20) #on allume en blanc
# Fin du code-barres ?
#Arrêt du minuteur et des moteurs
if n==8 then
timer.period[0]=0
motor.right.target=0
motor.left.target=0
callsub affiche
# Sinon on m^émorise la duree sur la bande
elseif noir==1 then
cb[n]=duree
duree=0
n++#signifie incrémenter( ajouter à variable)
end
noir=85
end
sub affiche #sous-routine
# On cherche la plus petite et la plus grande duree
call math.stat(cb, min, max, moy)
# moy sera la moyenne du min et du max
moy=(min+max)/2
# Si la duree est inférieur à la moyenne on éteindra le led
for n in 0:7 do
if cb[n]<=moy then
cb[n]=1
else
cb[n]=32
end
end
call leds.circle(cb[7],cb[6],cb[5],cb[4],cb[3],cb[2],cb[1],cb[0])
J'aimerai ajouter ce dessin (voici le code ci dessous) suivant si cb[2]=32 par exemple ;
var itera = 0
var speed = 256
timer.period[0] = 1000 # 1000ms = 1s
onevent timer0
itera = itera + 1
if itera==1 then
motor.left.target = speed
motor.right.target = speed
end
if itera==4 then
motor.left.target = -speed
motor.right.target = -speed
end
if itera==6 then
motor.left.target = -40
motor.right.target = 40
speed = speed - (speed / 10)
end
if itera==7 then
itera = 0
end
voici mon programme( aseba) :
<!--list of constants-->
<constant value="100" name="BLANC"/>
<!--show keywords state-->
<keywords flag="true"/>
<!--node thymio-II-->
<node nodeId="1" name="thymio-II">
var cb[8]
var noir
var duree
var n
var min
var max
var moy
call sound.system(-1)
timer.period[0]=20
onevent buttons
when button.forward==1 do
motor.left.target=60
motor.right.target=60
end
when button.center==1 do
motor.left.target=0
motor.right.target=0
end
onevent timer0
if prox.ground.reflected[0]<100 then #Capteur de sol
# Il y a une bande noire
call leds.top(0,0,0) # on allume pas
noir=1
# On incrémente (ajout) la duree sur la bande
duree++
end
if prox.ground.reflected[0]>BLANC then
# On n'est pas sur une bande noire
call leds.top(20,32,20) #on allume en blanc
# Fin du code-barres ?
#Arrêt du minuteur et des moteurs
if n==8 then
timer.period[0]=0
motor.right.target=0
motor.left.target=0
callsub affiche
# Sinon on m^émorise la duree sur la bande
elseif noir==1 then
cb[n]=duree
duree=0
n++#signifie incrémenter( ajouter à variable)
end
noir=85
end
sub affiche #sous-routine
# On cherche la plus petite et la plus grande duree
call math.stat(cb, min, max, moy)
# moy sera la moyenne du min et du max
moy=(min+max)/2
# Si la duree est inférieur à la moyenne on éteindra le led
for n in 0:7 do
if cb[n]<=moy then
cb[n]=1
else
cb[n]=32
end
end
call leds.circle(cb[7],cb[6],cb[5],cb[4],cb[3],cb[2],cb[1],cb[0])