Hallo, habe hier ein myavr board mit einem lichtsensor drauf. Bisher hat alles geklappt sprich led leuchten und blinken lassen und taster abfragen. Nun will ich den lichtsensor mit ins spiel bringen nur es funktioniert nicht. Hier mal der Quellcode in Bascom geschrieben. $regfile = "m8def.dat" $crystal = 3686400 Config Portc.0 -1 = Output Const Adc_multi = 0.0048828125 CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC START ADC DIM messergebnis AS WORD DIM volt AS SINGLE Messergebnis = Getadc(5) Volt = Messergebnis * Adc_multi Do If Volt >= 2 Then Portc.0 = 1 Else Portc.1 = 1 End If Waitms 100 Loop Danke Für Die Hilfe.!
Und wann werden die beiden Ports in der Schleife mal auf 0 gesetzt?
Stimmt^^ Ist erledigt. Aber was mach ich da falsch? Kann man den lichtsensor auch falsch herum einbauen?
Tobias schrieb: > Stimmt^^ > Ist erledigt. > Aber was mach ich da falsch? Zum Beispiel fragst du den ADC innerhalb der Schleife gar nicht mehr ab. > Kann man den lichtsensor auch falsch herum einbauen? Kann man sicherlich. Was für ein Sensor ist es denn, und wie hast du ihn eingebaut?
Ach man sorry für die fehler bin noch anfänger in sachen mikrocontroller. Hab den Lichtsensor von dem myavr board lpt hab ihn jetzt mit einem multimeter gemessen und es zeigte -2,.. volt an jetzt hab ich ihn andresrum draufgelötet jetzt zeigts mir 2,.. volt an kanns es an dem liegen? Und ich hab das adc jetzt in die schleife geschrieben jetzt funktionierts auch. Aber es sind bestimmt noch einige fehler im quellcode drin oder? $regfile = "m8def.dat" $crystal = 3686400 Config Portc.0 -1 = Output Const Adc_multi = 0.0048828125 CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC START ADC DIM messergebnis AS WORD DIM volt AS SINGLE Do If Volt >= 2 Then Portc.1 = 0 Portc.0 = 1 Else Portc.0 = 0 Portc.1 = 1 End If Messergebnis = Getadc(5) Volt = Messergebnis * Adc_multi Waitms 100 Loop
Tobias schrieb: > Ach man sorry für die fehler bin noch anfänger in sachen > mikrocontroller. Gerade dann solltest du dir eine gewisse äussere Form des Quellcodes aneignen. Dazu géhören zb Einrückungen, die dir zeigen von wo bis wo eine Schleife geht. Auch hilft eine Strukturierung mit einzelnen Leerzeilen optische Funktionsblöcke im Code zu erhalten und so das Auge zu führen. > funktionierts auch. Aber es sind bestimmt noch einige fehler im > quellcode drin oder? Ja. Zb. Wie kannst du im ersten Schleifendurchlauf ein Messergebnis auswerten, das du noch gar nicht hast, weil es erst nach dem Auswerten eingelesen wird?
1 | $regfile = "m8def.dat" |
2 | $crystal = 3686400 |
3 | |
4 | Config Portc.0 -1 = Output |
5 | Const Adc_multi = 0.0048828125 |
6 | CONFIG ADC = SINGLE, PRESCALER = AUTO, REFERENCE = AVCC |
7 | |
8 | DIM messergebnis AS WORD |
9 | DIM volt AS SINGLE |
10 | |
11 | START ADC |
12 | |
13 | Do |
14 | Messergebnis = Getadc(5) |
15 | Volt = Messergebnis * Adc_multi |
16 | |
17 | If Volt >= 2 Then |
18 | Portc.1 = 0 |
19 | Portc.0 = 1 |
20 | Else |
21 | Portc.0 = 0 |
22 | Portc.1 = 1 |
23 | End If |
24 | |
25 | Waitms 100 |
26 | Loop |
Dann könnte man noch darüber diskutieren, ob es wirklich notwendig ist, den µC eine für ihn komplexe Floating Point Operation durchzuführen. Ob du jetzt Volt mit 2.0 oder Messergebnis (der Wert vom ADC) mit 409 als Grenzwert vergleichst, kommt aufs selbe raus. Nur macht der µC letzteres mindestens 50 mal schneller, weil nichts rumgerechnet werden muss :-) > Hab den Lichtsensor von dem myavr board lpt hab ihn jetzt mit einem > multimeter gemessen und es zeigte -2,.. volt Sicher, dass du das Voltmeter nicht einfach nur verkehrt herum angeklemmt hast? Ich bin mir fast ziemlich sicher, dass auf dem MyAvr Board mit Ausnahme des RS232 Teiles nirgends negative Spannungen vorkommen.
Oke danke. Mir wurde jetzt einiges klarer dargestellt. Jetzt funktionierts auch einwandfrei was ich machen wollte. :) Danke für die Tipps und für die hilfe. Und ja ich hab das Voltmeter richtigrum angeklemt :) Mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.