2011-03-27 3 views
0

마이크로 칩 v8.63 및 c 컴파일러와 함께 picdem 18F4550을 사용하고 있습니다. 내가 사용하는 구성 요소는 다음과 같습니다. - 3 led (red, green, blue); - LDR (327700 NORPS-12 파넬).LDR에서 가치 얻기

출력으로 RB4, RB5 및 RB6에 3 개의 LED (빨강, 녹색 및 파랑)를 연결했습니다. 또한 RB1에 LDR을 연결합니다.

제 질문은 다른 LED의 초록불이 켜지면 LDR이 측정 한 코드에서 어떻게 값을 검색 할 수 있습니까? 당신은 GPIO로 구성된 핀에 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) { 
     ; 
    } 
} 
+0

당신은 [http://electronics.stackexchange.com] (http://electronics.stackexchange.com)에서 이것을 묻는 것이 더 나을 것입니다. stackexchange.com/questions/12122/get-value-from-ldr)). –

답변

0

:

나는 내 코드를 포함. GPIO 핀의 전압 임계 값이 적용됩니다. 핀에서 읽혀지는 값은 로직 로우와 로직 하이를 생성 할만큼 충분히 넓은 스윙 폭의 LDR에 의존한다. 대부분 GPIO 대신 PIC A/D 핀에 LDR을 연결하려고합니다. ADCON을 사용하여 A/D를 구성하십시오. 변환을 위해 A/D를 설정하고 A/D 완료 인터럽트를 기다립니다. 그런 다음 LDR의 아날로그 전압을 생성하는 ADRESH 및 ADRESL을 읽습니다.