El Arduino Uno tiene salidas PWM en los pines 11
, 10
, 9
, 6
, 5
y 3
. ¿Es posible reasignar las salidas PWM de estos pines a otros pines?
Esto es posible de una manera. Los pines PWM están definidos por el hardware del microcontrolador, que es algo con lo que no se puede alterar fácilmente (no a través del software, de todos modos).
Por supuesto, puede borrar algunas de las pistas de la placa y agregar las suyas propias, pero esta es una solución bastante repulsiva y puede terminar dañando irreversiblemente su placa 1 .
Una mejor solución es hacer un escudo que reasigne los pines. Esto no es demasiado difícil: primero obtienes un perfboard y algunas tiras de encabezado macho/hembra del tamaño apropiado. Ahora, suelda los encabezados macho, alineados con el Arduino. Luego, suelde los bergs hembra en el lado opuesto de la placa perforada; escálelos, pero asegúrese de que estén espaciados de la misma manera que en un Arduino. Finalmente, haga las conexiones cruzadas que desee. Tenga en cuenta que deberá compensar las tiras de encabezado
Si la razón por la que desea reasignar los pines es porque algún código que usa asume PWM en los pines incorrectos, simplemente cree un método transform()
que tome un número de pin y lo asigne a otro (use una declaración de cambio de caso ). Luego, reemplace (la mayoría de los IDE tienen una función de búsqueda/reemplazo) todos los métodos de lectura/escritura digitales/analógicos con un nuevo conjunto de funciones, por ejemplo:
void digitalWrite2(int pin, int val){
digitalWrite(transform(pin),val);
}
Y, finalmente, puede usar la biblioteca SoftPWM para el software PWM en todos los pines. Es posible que esto no sea exactamente lo mismo que el hardware PWM (diferentes características de pulso, pueden hacer que su aplicación sea lenta), pero es una opción viable.
1. Bueno, lo está dañando irreversiblemente de cualquier manera, pero existe la posibilidad de que rasque demasiadas cosas y no pueda volver a poner el tablero en condiciones de semifuncionamiento. No es aconsejable jugar directamente con el tablero a menos que sepa lo que está haciendo.
No, esto se hace en el hardware del chip, he visto bibliotecas PWM de software pero no funcionan tan bien como la versión de hardware y bloquean el micro mientras lo hacen.
Anindo Ghosh
ingeniero balden
Anindo Ghosh
ingeniero balden