Estaba mirando mi Arduino Uno y noté ese símbolo por pines digitales 11
, 10
, 9
, 6
, 5
y 3
. ¿Qué significan estos? ¿Esto afecta la forma en que funciona? ¿No puedo usar estos pines para ciertas situaciones?
Relajarse. No te preocupes. Estos pines se llaman PWM
y son iguales a los otros pines, excepto que tienen un "bono adicional".
Algunos usos del sitio web de Arduino :
- Atenuar un LED
- Simula una salida analógica. La salida aún cambia digitalmente de 0V a 5V. Sin embargo, filtro de paso bajo (condensador y resistencia) para simular voltajes analógicos.
- Generación de señales de audio.
- Proporcionar control de velocidad variable para motores.
- Generar una señal modulada, por ejemplo, para controlar un LED infrarrojo para un control remoto.
Cómo funciona:
Los pines PWM están controlados por temporizadores en el chip que alternan los pines automáticamente a una velocidad de aproximadamente 490 Hz. La "modulación de ancho de pulso" (PWM) es el tiempo que el pin permanece encendido o apagado durante un solo ciclo de esa frecuencia. Esto puede atenuar un LED dando la ilusión de que tiene la mitad del brillo que antes, cuando en realidad parpadea muy rápido.
Cuando hay un ciclo de trabajo del 25 %, se trata de una cuarta parte del tiempo. Si usó para un LED, aparecería aproximadamente 1/4 de brillante [más o menos]. (Nota: como algunas personas señalaron, esto no es realmente proporcional, pero dejémoslo así por simplicidad. EX: 25% no siempre es 1/4 del brillo).
(Si realmente tiene conocimientos de electricidad, probablemente podría agregar un capacitor para que también sea una salida analógica).
Cómo usar estos pines para dar salida:
Primero, debe definir el pin como salida. Luego, lo usas analogWrite(ledPin, 128);
para iniciarlo. El ledPin
es el pin PWM que desea iniciar PWM y 128
debe reemplazarse con un número entre 0
y 255
; 0
: 0% duty cycle
(apaga completamente el pin) y 255
: 100% duty cycle
. (enciende el pin completamente)
Fuente: http://www.arduino-tutorials.com/arduino-pwm/
¿Por qué no puedo simplemente encender y apagar la luz muy rápido en mi código?:
Técnicamente, puede, sin embargo, hay algunos problemas:
Realmente no va a hacer una gran diferencia si el único propósito de Arduino es generar señales PWM. Sin embargo, si coloca retrasos de más de 50 MS en el bucle principal, estropeará el tiempo. Con el enfoque del software, querrá eliminar cualquier función de "retraso", ya que Arduino solo se ejecuta en un hilo (solo puede hacer una cosa a la vez). Si sabe lo que está haciendo, no hará mucha diferencia atenuar la luz, pero si tiene un pin adicional con PWM, simplemente está perdiendo el tiempo con un enfoque de software.
Como otros han señalado:
Todavía necesita una resistencia para que sus circuitos limiten la corriente y el voltaje. No puedes saltarte esto.
Un concepto erróneo común sobre los pines PWM es que cuando se usa PWM, no es necesario usar resistencias limitadoras de corriente (con LED, por ejemplo).
Esto no es verdad. Los pines PWM deben considerarse como pines digitales, que se encienden y apagan automáticamente. Esto significa que van al mismo voltaje ALTO que cualquiera de los otros pines.
Cuando use LED con PWM, aún debe usar resistencias limitadoras de corriente. Cuando use motores con PWM, debería (casi siempre) usar un transistor.
usuario3624
shamtam
Chris Laplante