Hallo
Da ich sehr selten in Bascom programmiere (zuletzt beim Nunchuk) fehlen mir natürlich ein paar Grundlagen. Immerhin hat es trotzdem auf Anhieb funktioniert (die Bascom-Profis dürfen natürlich lachen):
So kann ich im Moment ca. 23 Positionen des Striches unterscheiden:Code:'Analoge Kamera an ATMega32 (RP6) 30.3.09 mic $regfile = "M32def.dat" ' RP6 mit Mega32 $crystal = 8000000 ' taktet mit 8MHz $baud = 38400 ' Loader-Baud Dim X As Byte Dim S As String * 30 'max 30 Positionen Config Adc = Free , Prescaler = Auto , Reference = Avcc ' Dummy-Setup!!! ' ADC interne Referenz 2,56V, Ergebniss linksbündig, Kanal ADC4 (E_INT1) ' Admux =(1 << Refs1) |(1 << Refs0) |(1 << Adlar) | 4 Admux = 0 Set Admux.refs1 Set Admux.refs0 Set Admux.adlar Set Admux.2 'Kanal 4 'Set Admux.1 'Set Admux.0 ' setze free running triggern ' Sfior =(0 << Adts2) |(0 << Adts1) |(0 << Adts0) Sfior = 0 ' kein Interupt, Wandler einschalten, prescaller /2 ' Adcsra =(0 << Adie) |(1 << Aden) |(0 << Adps2) |(0 << Adps1) |(1 << Adps0) ' Autotriggern bedeutet jetzt free running aktivieren, altes Flag löschen ' Adcsra | =(1 << Adate) |(1 << Adif) ' Initialisierung starten ' Adcsra | =(1 << Adsc) Adcsr = 0 Set Adcsr.aden Set Adcsr.adps0 Set Adcsr.5 'adate Set Adcsr.adif Set Adcsr.adsc Start Adc Do 'Cli(); Disable Interrupts ' / / Auf Bildanfang Warten 'Do Do ' { ' i=0; X = 0 ' while (ADCH > 30); While Adch > 30 Wend ' while (ADCH < 50) i++; While Adch < 50 Incr X Wend ' } while (i < 40); Loop Until X > 40 ' // die ersten 50 Zeilen überlesen ' i=50; X = 50 ' while (i--) While X > 0 ' { ' while (ADCH > 30); While Adch > 30 Wend ' while (ADCH < 50); While Adch < 50 Wend Decr X Wend ' } ' // warten auf hell-dunkel-Übergang ' i=0; X = 0 ' while (ADCH > 70) i++; While Adch > 65 'Hell/Dunkel-Schwelle Incr X Wend ' sei(); Enable Interrupts Print X ; S = Space(x) Print S; Print "***" Waitms 200 Loop End
Bild hier
http://www.youtube.com/watch?v=H-p-W9r-_Vk
Nett, oder?
Gruß
mic







Zitieren

Lesezeichen