Aktivieren Sie Port RA0 als Eingang und rufen Sie den Wert LDR von der LED ab

Ich verwende den Picdem 18F4550 mit Mikrochip v8.63 mit dem C18-Compiler.

Ich werde PortA aktivieren, um als Eingang eingestellt zu werden, ich werde einen LDR an Port RA0 anschließen. Das ist wie folgt (glaube ich):

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

Jetzt möchte ich den Wert des LDR (Spannung / Wert, wenn eine LED leuchtet), kann ich sagen:

int colorLed = PortAbits.RA0;

Und jetzt gibt es in der Variablen vom Typ int den Wert/die Spannung meiner Led.

Korrigieren Sie mich, wenn ich falsch liege.

Antworten (2)

Lassen Sie uns zuerst überprüfen, ob Sie Ihren LDR richtig angeschlossen haben, es sollte ungefähr so ​​​​aussehen ...

LDR-Verkabelung

Um den Wert von PIN RA0/AN0 zu lesen, müssen Sie eine Initialisierung durchführen, um sicherzustellen, dass der Port richtig eingerichtet ist. Das Datenblatt erklärt, wie das alles funktioniert, aber diese Werte sollten funktionieren:

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

Nun sollte der Port eingerichtet sein, Sie können nun den LDR-Wert ablesen:

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

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

Das Ergebnis des LDR können Sie nun als 10-Bit-Wert in ablesen ADRESH:ADRESL. Wenn Sie nur eine 8-Bit-Auflösung benötigen, stellen Sie ADCON2.ADFM = 0das Ergebnis auf Linksbündigkeit ein, dann müssen Sie nur lesen, ADRESHum Ihr Ergebnis zu erhalten.

der Plan, den Sie unterschrieben haben, richtig. Der Code, den Sie schreiben, ist das, was ich wollte! Vielen Dank für deine Hilfe!!!

Um eine analoge Spannung zu lesen, müssen Sie den ADC (Analog to Digital Converter) des PIC verwenden.

Hier ist ein Tutorial: http://www.roboticsguy.com/tutorials/pic-microcontrollers/configuring-the-pic18f4550-10-bit-adc-module