You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<h3id="guía-de-conexiones"><aclass="anchor" href="#guía-de-conexiones"></a>Guía de Conexiones</h3>
225
-
231
+
<divclass="paragraph">
232
+
<p>Para controlar un motor DC con una ESP32 y un driver L298N, se requiere de una fuente de alimentación externa para el motor, ya que la ESP32 no puede suministrar la corriente necesaria. El L298N actúa como un "puente H" que permite a la ESP32 controlar tanto la dirección como la velocidad del motor.</p>
233
+
</div>
234
+
<divclass="ulist">
235
+
<ul>
236
+
<li>
237
+
<p><strong>Conexión a la ESP32</strong>:</p>
238
+
</li>
239
+
<li>
240
+
<p><code>ESP32 GND</code> → <code>L298N GND</code> (es importante que compartan tierra)</p>
<p><strong>Notas sobre el pin <code>ENA</code> y el control de velocidad (PWM):</strong></p>
273
+
</div>
274
+
<divclass="ulist">
275
+
<ul>
276
+
<li>
277
+
<p>El módulo L298N suele venir con un jumper de plástico preinstalado en el pin <code>ENA</code> (y <code>ENB</code>).</p>
278
+
</li>
279
+
<li>
280
+
<p>Si este jumper está puesto, el motor estará siempre habilitado a máxima potencia y no podrás controlar su velocidad mediante software.</p>
281
+
</li>
282
+
<li>
283
+
<p>Para poder controlar la velocidad del motor con la ESP32, se debe retirar el jumper del pin <code>ENA</code> y conectar un pin GPIO de la ESP32 (como <code>GPIO25</code>) a <code>ENA</code>.</p>
284
+
</li>
285
+
<li>
286
+
<p>La ESP32 enviará una señal PWM (Pulse Width Modulation) a este pin <code>ENA</code>. El PWM permite simular un voltaje variable controlando el "tiempo de encendido" de la señal, lo que a su vez controla la velocidad efectiva del motor. En AtomVM, esto se gestiona mediante el módulo <code>LEDC</code>.</p>
287
+
</li>
288
+
</ul>
289
+
</div>
226
290
</div>
227
291
<divclass="sect2">
228
292
<h3id="código-de-ejemplo"><aclass="anchor" href="#código-de-ejemplo"></a>Código de Ejemplo</h3>
293
+
<divclass="listingblock">
294
+
<divclass="content">
295
+
<preclass="highlightjs highlight"><codeclass="language-elixir hljs" data-lang="elixir">defmodule MotorTest do
296
+
@left_motor_pin_1 26
297
+
@left_motor_pin_2 27
229
298
299
+
def start() do
300
+
:gpio.set_pin_mode(@left_motor_pin_1, :output)
301
+
:gpio.set_pin_mode(@left_motor_pin_2, :output)
302
+
303
+
:io.format('Setup de motor finalizado~n')
304
+
305
+
loop()
306
+
end
307
+
308
+
defp loop() do
309
+
:io.format('Moviendo hacia adelante~n')
310
+
set_motor_direction(:forward)
311
+
Process.sleep(3000)
312
+
313
+
:io.format('Deteniendo motor~n')
314
+
set_motor_direction(:stop)
315
+
Process.sleep(2000)
316
+
317
+
:io.format('Moviendo hacia atrás~n')
318
+
set_motor_direction(:reverse)
319
+
Process.sleep(3000)
320
+
321
+
loop()
322
+
end
323
+
324
+
defp set_motor_direction(direction) do
325
+
case direction do
326
+
:forward ->
327
+
:gpio.digital_write(@left_motor_pin_1, :high)
328
+
:gpio.digital_write(@left_motor_pin_2, :low)
329
+
:reverse ->
330
+
:gpio.digital_write(@left_motor_pin_1, :low)
331
+
:gpio.digital_write(@left_motor_pin_2, :high)
332
+
:stop ->
333
+
:gpio.digital_write(@left_motor_pin_1, :low)
334
+
:gpio.digital_write(@left_motor_pin_2, :low)
335
+
_ ->
336
+
:io.format('Dirección de motor inválida: ~p~n', [direction])
337
+
end
338
+
end
339
+
end</code></pre>
340
+
</div>
341
+
</div>
230
342
</div>
231
343
<divclass="sect2">
232
344
<h3id="ejemplo-de-funcionamiento"><aclass="anchor" href="#ejemplo-de-funcionamiento"></a>Ejemplo de Funcionamiento</h3>
0 commit comments