- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 10

Thema: ADC sendet Ergebnis nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2010
    Beiträge
    15

    ADC sendet Ergebnis nicht

    Anzeige

    Powerstation Test
    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!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2010
    Beiträge
    167
    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.....

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Hmmm, wo ist denn der "print Befehl" zum LCD? Also z.B. Schranke2 = Getadc(7) >> Schranke2 >>LCD?

    Gruß Richard

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    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.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Jaecko
    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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2010
    Beiträge
    15
    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

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    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.
    #ifndef MfG
    #define MfG

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    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

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2010
    Beiträge
    15
    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!

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von zappel76
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen