Estoy buscando abstracciones de C ++ para puntos de E / S de hardware o pines. Cosas como in_pin, out_pin, inout_pin, tal vez open_collector_pin, etc.
Seguramente puedo crear un conjunto de abstracciones de este tipo, así que no estoy buscando el tipo de respuestas 'hey, podrías hacerlo de esta manera', sino el 'vistazo a esta biblioteca que se ha utilizado en este y este y este proyecto '.
Google no encontró nada, tal vez porque no sé cómo dirían los demás a esto.
Mi objetivo es crear bibliotecas de E / S basadas en dichos puntos, pero que también proporcionen dichos puntos, por lo que sería fácil, por ejemplo, conectar un HD44780 LCd a cualquiera de los pines IO del chip o un I2C ( o SPI) Extensor de E / S, o cualquier otro punto que pueda controlarse de alguna manera, sin ningún cambio en la clase de LCD.
Sé que esto está en el borde de la electrónica / software, lo siento si no pertenece aquí.
@leon: cableado Esa es una gran bolsa de software, tendré que mirar más de cerca. Pero parece que no usan un pin abstracción como yo quiero. Por ejemplo, en la implementación del teclado que veo
digitalWrite(columnPins[c], LOW); // Activate the current column.
Esto implica que hay una función (digitalWrite) que sabe cómo escribir en un pin de E / S. Esto hace que sea imposible agregar un nuevo tipo de pin de E / S (por ejemplo, uno que está en un MCP23017, por lo que tiene que escribirse a través de I2C) sin volver a escribir la función digitalWrite.
@Oli: Busqué en Google un ejemplo de Arduino IO, pero parece que se utiliza casi el mismo enfoque que la biblioteca Wiring:
int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}