Hallo,

weil Fragen zur Servosteuerung und Digitalisierung immer wieder vorkommen, könnte ich als kleine Anwendung einen "Lichtsucher" mit Servo und LDR anbieten:

Ein Servo dreht einen LDR im Winkelbereich 0..180Grad, digitalisiert den LDR-Widerstandswert und speichert die Postion des jeweils hellsten (=kleinsten) Werts. Danach steuert das Servo den LDR in die hellste gefundene Position.
Die Werte während des Durchlaufs und das hellste Ergebnis werden auf einem 16*2 LCD ausgegeben.

Benutzt wird ein Graupner-Servo, ein Standard-LDR und ein Kondensator mit 100nF.

Gruß, Harald
Code:
 'Lichtsucher mit Servosteuerung und LCD-Ausgabe
 '==============================================
 'Servo: Steuerkabel an PD4
 'LDR  : Reihenschaltung LDR und C=100nF an PD6 und GND;
 '       10K parallel zum LDR, da bei Dunkelheit LDR >10KOhm

 Config Servos = 1 , Servo1 = Portd.4 , Reload = 10       'Faktor für Imp.zeit
 Config Pind.4 = Output
 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
 Config Lcd = 16 * 2

 Enable Interrupts
 Dim Ldr As Word , Wert As Word
 Dim I As Byte , Pos As Byte , S As Byte
 Dim T1 As String * 12 , T2 As String * 12

 Cls                                    'LCD löschen

 Do
   S = 0 : Pos = 0 : Wert = 400
   Servo(1) = 30 : Waitms 100 : Cls

   For I = 30 To 110 Step 5             'Rechts drehen
     Servo(1) = I                       'Pulszeit i*10us
     Waitms 100
     Ldr = Getrc(pind , 6)              'Helligkeit lesen
     If Ldr < Wert Then                 'Wert neu setzen, wenn heller
        Wert = Ldr : Pos = S            'als alter Wert
     End If

     Locate 1 , 1 : Lcd "Min " ; Wert ; " "
     Locate 1 , 10 : Lcd "Akt." ; Ldr ; " "
     Locate 2 , 1 : Lcd "Pos " ; Pos ; " "
     Locate 2 , 10 : Lcd "    " ; S ; " "
     S = S + 1                          'S= gedrehte Schritte
   Next
                                        'Drehe auf gefundene hellste Position
   S = 5 * Pos : S = S + 30             'Eigentlich: S=30+5*pos
   Servo(1) = S

   Cls
   Locate 1 , 5 : Lcd "Min " ; Wert     'Ausgabe der gefundenen Werte
   Locate 2 , 5 : Lcd "Pos " ; Pos ; " "       'für Helligkeit und Position
   Wait 1
   For I = 1 To 3                       'Warteschleife vor neuem Durchlauf
     Lcd "*";
     Wait 1
   Next
 Loop

 End                                    'end program
Ich hab spät, aber doch, aus meinem privaten Depot zwei Code-Tags spendiert mfg PicNick