Quiero simular un sensor óptico en Proteus para contar la cantidad de cosas. ¿Algún organismo tiene información al respecto?

En el mundo real, habría utilizado un dispositivo que consistía en un LED IR y un fotodiodo IR lado a lado dentro de un gabinete que los protege entre sí pero les permite recibir y enviar señales en línea recta. Sin embargo, no estoy seguro si Proteus tiene un modelo para un dispositivo como ese. Pero esencialmente puede ser modelado por un interruptor que conecta la entrada de una puerta NOT a GND que emite una señal ALTA cada vez que se presiona el interruptor. Esta señal ALTA entra en el pin de interrupción del microcontrolador particular que está utilizando.

Supongo que está utilizando el tipo de optoacoplador reflexivo en lugar del tipo de interrupción, si está utilizando el tipo de interrupción, entonces no necesita la puerta NOT.

Esto se debe a que cada vez que aparece un objeto delante del tipo Reflectante, la salida del fotodiodo será alta (conduce y, por lo tanto, da una señal ALTA). Es la otra manera para el tipo de interrupción.

En el lado del software, debe escribir un programa que cuente el número de pulsos altos en cualquiera de los pines de interrupción del microcontrolador. Entonces, el código de ejemplo podría ser algo tan simple como.

/ * Conecte el LED IR a uno de los pines digitales del microcontrolador (digamos 12) usando una resistencia de 220 ohmios. Establezca ese pin alto para mantener el LED encendido permanentemente. Conecte el receptor IR en polarización inversa en una configuración de divisor de voltaje con otra resistencia a través de +5 y GND. Al pin de interrupción, conecte el centro de este divisor de voltaje. * /

int IRled = 12;
int Opto = 3; // si 3 es un pin de interrupción en tu uC
int cuenta = 0;
pinMode (Opto, INPUT);
pinMode (IRled, OUTPUT);
digitalWrite (IRled, HIGH);

bucle vacío ()
{
if (Opto == 1) {count ++;}
retraso (50);
LCD.print (cuenta); // o cualquier declaración de impresión genérica a cualquier dispositivo
}

Gracias por la A2A