Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC sendet Ergebnis nicht
zappel76
08.09.2010, 16:14
Hallo !
Jetzt habe ich ein Problem mit dem ADC. Der sendet das Signal nicht an das Display, dass dies weiterzählt.
LCD funktioniert und ADC-Messungen am IC passten auch.
Wo ist mein Denkfehler?
$regfile = "m16def.dat"
$crystal = 1000000
Dim Slot1 As Byte
Dim Slot2 As Byte
Dim Slot3 As Byte
Dim Slot4 As Byte
Dim Durchgang As Byte
Dim Schranke2 As Word 'Lichtschranken
Dim Schranke4 As Word
Dim Schranke1 As Word
Dim Schranke3 As Word
Dim Frei1 As Bit
Dim Frei2 As Bit
Dim Frei3 As Bit
Dim Frei4 As Bit
'Alle Lichtschranken freigeben
Frei1 = 1
Frei2 = 1
Frei3 = 1
Frei4 = 1
Config Adc = Single , Prescaler = Auto , Reference = Aref
Start Adc
Do
If Frei2 = 1 Then
Schranke2 = Getadc(7)
If Schranke2 < 500 Then
Frei2 = 0
Incr Slot2
End If
End If
If Frei2 = 0 Then
Schranke2 = Getadc(7)
If Schranke2 > 800 Then Frei2 = 1
End If
Do
Cls
Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1
Waitms 50
Loop
End
Loop
Danke im Voraus!
funkheld
08.09.2010, 18:31
Wie willst du da rauskommen aus der do-loop???
Man....
Do
Cls
Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1
Waitms 50
Loop
wieder copy-paste gemacht, waaaass.....
Hmmm, wo ist denn der "print Befehl" zum LCD? Also z.B. Schranke2 = Getadc(7) >> Schranke2 >>LCD?
Gruß Richard
Der "Print"-Befehl heisst in Bascom "LCD" (zugegeben etwas unglückliche Wortwahl).
Aber stimmt, dieses Do-Loop-Konstrukt ist schon abenteuerlich; v.a. die Abfolge:
Do
...
End
...
Loop
Also die innere Do-Loop raus und das END hinter das letzte Loop.
Der "Print"-Befehl heisst in Bascom "LCD" (zugegeben etwas unglückliche Wortwahl).
.
Das war mir bekannt, aber trotzdem sehe ich nicht wo slot 1...4 mit den gemessenen ADC Werten beschrieben werden.
Gruß Richard
zappel76
10.09.2010, 19:30
Ist die denn nicht der Befehl, um in das Display(Slot2) etwas zu schreiben?
In diesem Fall soll einfach hochgezählt werden 0,1 ....4
Frei2 = 0
Incr Slot2
oder müsste es "If frei2=0 then incr LCD Slot2" heißen?
Zappel ](*,)
Kommt drauf an, was du machen willst.
Frei2 = 0
Incr Slot2
=> Frei2 wird immer 0 gesetzt, Slot2 wird immer erhöht.
If frei2=0 then incr LCD Slot2
=> Slot2 wird nur dann erhöht, wenn Frei2 = 0 ist.
Ja, aber es soll doch der "get ADC Wert ausgegeben werden"? Und der wird doch anschenend nicht Slot(x) zugeordnet und/oder durch Slot (x) 0/1 überschrieben?
Slot (x) muss ein arry sein, dann könnte man mit slot (1...4) dessen Inhalte am LCD darstellen. Wenn sie denn mittels Get adc slot (1...4) beschrieben wurden.
Zugegeben durch den Code steige ich nicht ganz durch, es fehlen halt Kommentare zu dem Befehlen. Anfänger Fehler halt und nach ~ 14 Tagen weiß der Programmierer selber nicht mehr was (ER) sich dabei gedacht hat.........
Mit ....
get adc Slot (x)
x=x+1......
LCD slot x
u.s.w. Sollte es dann klappen
Gruß Richard
zappel76
11.09.2010, 09:17
Vielen Dank für die Antworten.
Nein, der ADC-Wert soll nicht ausgegeben werden.
Die Lichtschranke funktioniert quasi wie ein Besucherzähler. Kommt einer durch die Lichtschranke, wird ein Besuch gezählt. Dieses soll das LCD-Display dann als Zahl anzeigen.
Do
If Frei2 = 1 Then ´wenn die Lichtschranke frei ist
Schranke2 = Getadc(7) miss ADC (7)
If Schranke2 < 500 Then
´wenn die Spannung kleiner 500 ist dann Sperre die Lichtschranke
Frei2 = 0
Incr Slot2 ´erhöhe die Zahl auf dem Display in Slot2
(Die hat nicht funktioniert, als Alternative würde ich es jetzt so machen:
If Schranke2 < 500 then incr LCD SLot2)
End If
End If
If Frei2 = 0 Then ´ist die Lichtschranke gesperrt
Schranke2 = Getadc(7) ´miss ADC(7)
If Schranke2 > 800 Then Frei2 = 1
´gib sie bei der Spannung größer 800 wieder frei
End If
Cls
Lcd " 2 | 3 | 4 | 1 "
Lowerline
Lcd " | | | "
Locate 2 , 2
Lcd Slot2
Locate 2 , 6
Lcd Slot3
Locate 2 , 10
Lcd Slot4
Locate 2 , 14
Lcd Slot1
Waitms 50
Loop
End
Gruß Zappel!
Vielen Dank für die Antworten.
Nein, der ADC-Wert soll nicht ausgegeben werden.
Die Lichtschranke funktioniert quasi wie ein Besucherzähler. Kommt einer durch die Lichtschranke, wird ein Besuch gezählt. Dieses soll das LCD-Display dann als Zahl anzeigen.
Ahhh jetzt verstehe ich. :-)
Gruß Richard
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.