Bonjour,
Je sais je sais, c'est un forum Arduino et ma question porte sur un node-MCU V1. Mais à ce point ci, tout aide est la bienvenu.
J'essaie de réaliser ce simple projet.
Pour l'instant, je n'ai pas réussi à faire bouger le moteur. Suite à la suggestion d'un collègue, j'ai répliqué le schéma avec des LEDs pour voir s'il y avait une activité quelconque vers le moteur. Cependant, tout ce que j'ai comme activité sont les LEDs qui s'allument. J'aurais eu tendance à penser qu'elles s'auraient allumées par intermittence en répliquant le comportement des deux coils dans le moteur. Je ne comprend pas ce qui ne fonctionne pas.
Voici le code qui est roulé. Le schéma en question est lié en pièce jointe.
Merci!
init.lua
--init.lua
--
dofile('stepper.lua')
--
FWD=1
REV=-1
--
ROTATION_FULL=4096 --One revolution, 28BYJ-48 geared stepper motor
ROTATION_HALF=ROTATION_FULL / 2
FEW_STEPS=10
--
step_move(FEW_STEPS,FWD,1)
tmr.register(0, 5000, tmr.ALARM_SINGLE, function()
step_move(FEW_STEPS,REV,1)
end);
tmr.start(0);
stepper.lua
-- stepper.lua
-- code from: http://www.esp8266.com/viewtopic.php?f=19&t=2326
-- simple stepper driver for controlling a stepper motor with a
-- l293d driver
-- nodemcu pins: 0 5 6 7
stepper_pins = {1,3,2,4} -- (A-)blue, (A+)pink, (B-)yellow, (B+)orange
-- half or full stepping
step_states4 = {
{1,0,0,1},
{1,1,0,0},
{0,1,1,0},
{0,0,1,1}
}
step_states8 = {
{1,0,0,0},
{1,1,0,0},
{0,1,0,0},
{0,1,1,0},
{0,0,1,0},
{0,0,1,1},
{0,0,0,1},
{1,0,0,1},
}
step_states = step_states8 -- choose stepping mode
step_numstates = 8 -- change to match number of rows in step_states
step_delay = 20 -- choose speed
step_state = 0 -- updated by step_take-function
step_direction = 1 -- choose step direction -1, 1
step_stepsleft = 0 -- number of steps to move, will de decremented
step_timerid = 4 -- which timer to use for the steps
-- setup pins
for i = 1, 4, 1 do
gpio.mode(stepper_pins[i],gpio.OUTPUT)
end
-- turn off all pins to let motor rest
function step_stopstate()
for i = 1, 4, 1 do
gpio.write(stepper_pins[i], 0)
end
end
-- make stepper take one step
function step_take()
-- jump to the next state in the direction, wrap
step_state = step_state + step_direction
if step_state > step_numstates then
step_state = 1;
elseif step_state < 1 then
step_state = step_numstates
end
-- write the current state to the pins
for i = 1, 4, 1 do
gpio.write(stepper_pins[i], step_states[step_state][i])
end
-- might take another step after step_delay
step_stepsleft = step_stepsleft-1
if step_stepsleft > 0 then
tmr.alarm(step_timerid, step_delay, 0, step_take )
else
step_stopstate()
end
end
-- public method to start moving number of 'int steps' in 'int direction'
function step_move(steps, direction, delay)
tmr.stop(step_timerid)
step_stepsleft = steps
step_direction = direction
step_delay = delay
step_take()
end
-- public method to cancel moving
function step_stop()
tmr.stop(step_timerid)
step_stepsleft = 0
step_stopstate()
end
