2011-03-28 5 views
1

저는 C18 컴파일러가있는 마이크로 칩 v8.63과 함께 picdem 18F4550을 사용하고 있습니다.포트 RA0을 입력으로 사용하고 led에서 값 LDR을 검색하십시오.

PortA를 입력으로 설정하면 포트 RA0에 LDR을 연결합니다. 에서

int colorLed = PortAbits.RA0; 

그리고 지금 : 다음과 같습니다 은 내가 말할 수있는, (A LED가에있는 경우 전압/값)

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

지금 나는 LDR의 값을 원하는 (나는 생각한다) int 타입의 변수에는 Led의 값/전압이 있습니다.

내가 틀렸다고 정정하십시오.

+3

크로스 게시가 권장되지 않습니다. (http://electronics.stackexchange.com/questions/12176/enable-port-ra0-as-input-and-retrieve-value-ldr-from-led) – Andy

답변

6

아날로그 전압을 측정하려는 것 같습니다.이 경우 핀을 RA0이 아닌 AN0으로 사용해야합니다. datasheet의 섹션 21을 읽어야하지만, 요약하면 레지스터 ADCON0, ADCON1ADCON2을 사용하여 A-D 변환기를 구성하고 ADRESH:ADRESL에있는 결과를 읽어야합니다.

은 잠재적으로 디지털 입력을 사용하여 LDR을 읽을 수 있지만 교정 할 수는 없습니다. 아날로그 입력을 사용하는 것은 약간 더 복잡하지만 훨씬 더 유연합니다.

+1

RA0가 AN0와 다중화된다는 점에 유의해야합니다. 핀은 AN0 기능을 위해 구성되어야합니다. – Clifford

+0

답장을 보내 주셔서 감사합니다. 하지만 RA0을 입력으로 사용하도록 요청하고 잘못된 데이터 시트를 제공합니다. 18F4550이 포함 된 C 컴파일러 용 데이터 시트가 있습니다. 하지만이 포트를 활성화하지 못했습니다. – user001

+1

@yannick : 올바른 데이터 시트입니다. RA0을 입력으로 사용하면이 상황에서는 작동하지 않습니다. 이 핀을 아날로그 입력으로 사용해야합니다.이 경우 AN0이라고합니다. –

0

PORTA는 기본적으로 디지털 입력 또는 아날로그 입력으로 작동 할 수 있습니다.

LDR을 사용하려면 PIN을 아날로그 입력으로 구성해야합니다.

그래도 당신이하고 싶은 것에 달려 있습니다. 어쩌면 당신은 당신의 프로젝트에 대해 약간의 세부 사항을 주어야합니다. PIC18F4550 datasheet

이 링크 당신은 다시 PIC184550 here

에 대한 자세한 리소스를 찾을 수 있습니다

검사, 당신은 그래서 우리는 더 나은 당신을 도울 수있는 응용 프로그램에 대한 자세한 정보를 제공 할 수 있습니다.

+0

LED가 켜지는 것이 목적입니다 (예 : 포트 RB4의 빨간색). 그러면 LDR이이를 감지하고 나는 변수의 값을 저장하기를 원합니다. 그런 다음 (나는 이미 프로그램을 만들었습니다.) 박스가있는 마이크로 프로세서는이 색을 소리내어 재생합니다 ('적색'이라고 말함). 내 프로젝트를 "컬러 센서"라고 부를 수 있습니다. 목적은 시각 장애인들이 재생음으로 색상을 "볼"수있게하는 것입니다. 바라기를 나의 설명은 나의 노력에서 더 명확하다. – user001

+0

LDR만으로는 색상을 구분할 수 없으며 빛의 강도에만 반응하며 색상을 결정하는 데 충분하지 않습니다. try [link] (http://www.electronic-circuits-diagrams.com/sensorsimages/sensorsckt3.shtml), 회로는 당신이하려는 것과 비슷한 것을합니다. RED, GREEN 및 BLUE의 강도를 별도로 감지하려면 3LDR이 필요하며 강도 판독 값을 사용하여 빛의 색상을 결정하십시오. 따라서 기본적으로 LDR은 아날로그 핀에 연결되어야합니다. 또한이 [link] (http://www.sparkfun.com/products/8663)에서 색상 감지 칩을 확인하십시오. – TiOLUWA