Получить значение от 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.