¿Es posible volver a asignar la salida PWM a otros pines?

4

El Arduino Uno tiene salidas PWM en los pines 11 , 10 , 9 , 6 , 5 y 3 . ¿Es posible volver a asignar las salidas PWM de estos pines a otros pines?

    
pregunta asheeshr

2 respuestas

2

Esto es posible de una manera. Los pines de PWM están definidos por el hardware del microcontrolador, que es algo que no se puede ensuciar fácilmente (al menos a través del software).

Por supuesto, puedes rascar algunas de las pistas del tablero y agregar las tuyas propias, pero esta es una solución bastante molesta, y puedes terminar dañando irreversiblemente tu tablero 1 .

Una mejor solución es hacer un escudo que remea 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 masculinos, alineados con el Arduino. Luego, suelde los bergs femeninos en el lado opuesto de la placa de perfilado - escalándalos, pero asegúrate de que estén separados de la misma forma que en un Arduino. Por último, haga las conexiones cruzadas que desee. Tenga en cuenta que deberá compensar las tiras de encabezado

Si la razón por la que desea volver a asignar los pines es porque algún código que utiliza 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 a cambiar la declaración del 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 SoftPWM Library para el software PWM en todos los pines. Es posible que esto no sea exactamente igual al hardware PWM (diferentes características del pulso, puede hacer que su aplicación sea lenta), pero es una opción viable.

1. Bueno, usted está dañándolo irreversiblemente de cualquier manera, pero existe la posibilidad de que pueda tachar demasiadas cosas y no podrá volver a poner el tablero en condiciones incluso de trabajo. No es aconsejable jugar directamente con la junta a menos que sepa lo que está haciendo.

    
respondido por el Manishearth
1

No, esto se hace en el hardware del chip, he visto bibliotecas de software PWM pero no funcionan tan bien como la versión de hardware y atan el micro mientras lo hago.

enlace

    
respondido por el jkozlowski

Lea otras preguntas en las etiquetas