Получить значение от LDR

Я использую picdem 18F4550 с микрочипом v8.63 и компилятором c. Я использую следующие компоненты: - 3 светодиода (красный, зеленый, синий); - ЛДР (327700 НОРПС-12 фарнелл).

Я подключил 3 светодиода (красный, зеленый и синий), на RB4, RB5 и RB6 в качестве выхода. Я также подключаю LDR на RB1.

Мой вопрос: когда загорается зеленый индикатор другого светодиода, как я могу получить значение в моем коде, которое измеряет LDR?

Я включил мой код:

#include "p18cxxx.h"
#pragma config WDT = OFF 

void main(void) 
{ 
    // turn off all LED latches 
    LATDbits.LATD0 = 0; 
    LATDbits.LATD1 = 0; 
    LATDbits.LATD2 = 0; 
    // make port d bits which drive LEDs outputs 
    TRISDbits.TRISD0 = 0; 
    TRISDbits.TRISD1 = 0; 
    TRISDbits.TRISD2 = 0;

    TRISB = 0;
    // RB port output.
    PORTB = 0;
    PORTB = 0b10001111; // 0b01011010

    if(PORTBbits.RB4 == 0) {
        LATDbits.LATD0 = 1;     
    }
    if(PORTBbits.RB5 == 0) {
        LATDbits.LATD1 = 1;
    }
    if(PORTBbits.RB6 == 0) {
        LATDbits.LATD2 = 1;
    }   
    if(PORTBbits.RB1 == 1) {

    }
    while(1) {
        ;
    }   
}

1 ответ

Предполагая, что вы подключаете LDR к выводу, настроенному как GPIO. Применяется порог напряжения для вывода GPIO. Значение, считываемое на выводе, зависит от сопротивления LDR, достаточно широкого, чтобы генерировать как низкий логический уровень, так и высокий логический уровень. Скорее всего, вы хотите подключить LDR к выводу PIC A/D вместо GPIO. Используйте ADCON для настройки A/D. Настройте A / D для преобразования и дождитесь прерывания завершения A/D. Затем прочитайте ADRESH и ADRESL, которые выдают аналоговое напряжение LDR.

Другие вопросы по тегам