Habilite el puerto RA0 como entrada y recupere el valor LDR del led

Estoy usando el picdem 18F4550 con microchip v8.63 con el compilador C18.

Permitiré que PortA se configure como entrada, conectaré un LDR en el puerto RA0. Que es lo siguiente (creo):

TRISAbits.TRISA0 = 1; //<= set RA0 as input.

Ahora quiero el valor del LDR (voltaje/valor si un led está encendido), puedo decir:

int colorLed = PortAbits.RA0;

Y ahora en la variable de tipo int está el valor/voltaje de mi Led.

Corrígeme si estoy equivocado.

Respuestas (2)

En primer lugar, verifiquemos que haya conectado su LDR correctamente, debería ser algo como esto...

cableado LDR

Para leer el valor del PIN RA0/AN0, debe realizar una inicialización para asegurarse de que el puerto esté configurado correctamente. La hoja de datos explica cómo funciona todo esto, pero estos valores deberían funcionar:

TRISAbits.TRISA0 = 1;           // Set RA0/AN0 to input
ADCON0           = 0b00000000;  // Set channel select to AN0
ADCON1           = 0b00001110;  // Configure RA0/AN0 as analogue
ADCON2           = 0b10101010;  // Right justified result
                                // TAD 12 and FOSC 32 - may need to adjust this
                                // depending on your clock frequency (see datasheet)
ADCON0.ADON      = 1;           // Enable ADC

Ahora el puerto debe estar configurado, ahora puede leer el valor LDR:

ADCON0bits.GO    = 1;           // Set the GO bit of the ADCON0 register to start
                                // the conversion.

while (ADCON0bits.GO);          // Wait until the conversion is complete.

Ahora puede leer el resultado del LDR como un valor de 10 bits en formato ADRESH:ADRESL. Si solo necesita una resolución de 8 bits, configure la ADCON2.ADFM = 0justificación a la izquierda del resultado, luego solo necesita leer ADRESHpara obtener su resultado.

el plan que firmaste, correcto. ¡El código que escribes es lo que quería! ¡¡¡Muchas gracias por su ayuda!!!

Para leer un voltaje analógico, debe usar el ADC (Convertidor analógico a digital) del PIC.

Aquí hay un tutorial: http://www.roboticsguy.com/tutorials/pic-microcontrollers/configuring-the-pic18f4550-10-bit-adc-module