Estoy buscando abstracciones en C ++ para puntos o pines de E / S de hardware. Cosas como in_pin, out_pin, inout_pin, quizás open_collector_pin, etc.
Seguramente puedo encontrarme con un conjunto de abstracciones, así que no estoy buscando el tipo de respuestas 'hey, podrías hacerlo de esta manera', sino más bien 'mira esta biblioteca que se ha utilizado en esto y esto y este proyecto'.
Google no apareció nada, tal vez porque no sé cómo otros llamarían esto.
Mi objetivo es construir bibliotecas de E / S que se basen en dichos puntos, pero también proporcionen dichos puntos, por lo que sería fácil, por ejemplo, conectar un HD44780 LCd a los pines IO del chip o a un I2C (o SPI) Extensor de E / S, o cualquier otro punto que de alguna manera se pueda controlar, 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 una abstracción pin como yo quiero. Por ejemplo, en la implementación del teclado 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 debe escribirse a través de I2C) sin reescribir la función digitalWrite.
@Oli: busqué en Google un ejemplo de Arduino IO, pero parece que usan 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
}