¿Cambiar el número de PIN programático en la biblioteca de software de Shield?

3

Me preguntaba si es posible cambiar la biblioteca de software para escribir bocetos de arduino de INO para que pueda esperar un escudo de arduino bajo un conjunto diferente de pines. Por ejemplo, quiero usar estos escudos juntos: RedFly Wifi Shield:

enlace

y Arduino motor Shield rev3:

enlace

Veo que no puedo apilarlos juntos porque comparten el pin D3, pero si conecto el escudo RedFly no apilando, sino con cables separados, puedo conectar el escudo Red Fly a cualquiera de los 4 pines que quiero, por ejemplo, al D20-D23 de Mi arduino mega board. Espero que la biblioteca de software para usar Red Fly no funcione entonces. La pregunta es: ¿esas bibliotecas son configurables, por lo que podrían cambiarse para usar otro conjunto de pines? Quiero decir, ¿es posible sin reescribir el código while? Específicamente, me gustaría saber si es posible alguno de los escudos anteriores. No había comprado ninguno de estos todavía, y no sé cómo se ven las bibliotecas de software.

ACTUALIZACIÓN: Gracias por sus respuestas, pero no pude encontrar el código fuente de la biblioteca RedFly.h para usar el escudo de RedFly WiFi, así que no sé si se puede volver a escribir para usar otros pines. Los ejemplos de uso ( enlace ) sugieren que no toma la configuración de pin de forma clara (como lo hace la biblioteca LCD de Arduino) . ¿Alguien trabaja con el escudo WiFi de RedlFl? ¿El código fuente de la biblioteca está disponible en la web?

    
pregunta PanJanek

4 respuestas

1

La razón más común por la que Arduino escuda "conflicto" es porque el pin Chip Select para un SPI en el escudo está cableado en el escudo. A veces esto se manifiesta en una biblioteca de software que acompaña al protector que asume el cableado del protector. Una razón de perdón por la que las cosas terminan de esta manera es una compensación entre la elegancia del software y la facilidad de uso para el usuario final.

Si está optimizando la flexibilidad, diseñará su software para que las asignaciones de pines (potencialmente conflictivas) se abstraigan en una función de constructor o configurador, y hará que el constructor predeterminado realice suposiciones predeterminadas sobre su hardware. También deberá proporcionar un puente en su escudo que pueda derivar para el comportamiento "predeterminado" o conectar a cualquiera de los pines de E / S con un cable "suave".

Si cada escudo siguiera esa práctica, entonces no habría algo así como escudos en conflicto. El inconveniente de la flexibilidad es que mientras más interfaces estén expuestas a los usuarios, mayor será la barrera de entrada para los principiantes. No creo que nadie pueda argumentar que los principiantes son la mayoría de los usuarios de Arduino, por lo que la facilidad de uso gana el día: menos opciones y simplicidad son mejores en la mayoría de los casos para la comunidad de Arduino.

Un buen ejemplo de una biblioteca y un escudo que lo hacen de manera "elegante" es la biblioteca LiquidCrystal que viene estándar con Arduino. Hay cinco pines en la interfaz LCD que son definibles por software. Hice un escudo de LCD básico y tuve que hacer este tipo de opciones en el diseño. Decidí favorecer la flexibilidad porque (1) la biblioteca ya lo admitía y (2) los LCD en sí mismos no son consistentes en su pinout. Así que proporcioné todo un banco de puentes que efectivamente "abstrae" la pantalla LCD del escudo en el hardware. Quizás esa no fue la opción correcta en retrospectiva, pero el espíritu de mi decisión fue apoyar cualquier LCD que quieras usar y cualquiera de los pines Arduino que quieras usar.

Si hubiera cableado para ciertos pines Arduino y un pinout de LCD en particular, podría haberle ahorrado a los usuarios unos minutos de soldadura, a expensas de la flexibilidad y la interoperabilidad con otros escudos. Sin embargo, en mi caso, vi la pantalla LCD como algo que podría estar en "la parte superior" de una pila de pantallas, por lo que tal vez la flexibilidad se merecía en este caso. Simplemente no hay una respuesta única para todos, me temo.

    
respondido por el vicatcu
1

Algunas bibliotecas están escritas para aceptar números de pin como argumentos para el constructor ( biblioteca de Adafruit para su amplificador de termopar MAX6675 , f / ex), pero como normalmente se espera que un blindaje se conecte mecánicamente (y, por lo tanto, a una configuración de pin conocida), no tendría mucho sentido.

Tienes acceso a la fuente de la biblioteca para que puedas crear una versión con tus asignaciones de pines personalizadas. Para un poco más de flexibilidad, como lo está preguntando, pase las asignaciones de pines al constructor como parámetros.

    
respondido por el JRobert
1

Hay un escudo vendido por sparkfun que está diseñado para colocarse entre 2 escudos y te permite reasignar pines.

enlace

    
respondido por el Seth Archer Brown
0

La biblioteca de software RedFly se puede encontrar en este sitio .

La configuración del pin se puede cambiar en el archivo

/your-arduino-path/libraries/RedFly/RedFly.cpp

El pin Rx y Tx no se pueden cambiar, porque el puerto serial del hardware se usa para la comunicación.

    
respondido por el Andreas W.

Lea otras preguntas en las etiquetas