- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: 3 ports binär auslesen?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125

    3 ports binär auslesen?

    Anzeige

    Praxistest und DIY Projekte
    Hi leute, ich hab nen drehschalter hier an meinem AVR , er liefert mir ein 3 bit signal...

    Das auslesen selber erscheint mir nicht so schwierig, nur die schreibform stört mich..kann man das irgendwie verkürzen, hab echt mit der Suche nix gefunden...

    Code:
    If Pinb.2 = 0 And Pinb.1 = 0 And Pinb.0 = 0 Then
        D = 4
        End If
    
        If Pinb.2 = 1 And Pinb.1 = 0 And Pinb.0 = 0 Then
        D = 6
        End If
    
        If Pinb.2 = 0 And Pinb.1 = 1 And Pinb.0 = 0 Then
        D = 8
        End If
    
        If Pinb.2 = 1 And Pinb.1 = 1 And Pinb.0 = 0 Then
        D = 10
        End If
    
        If Pinb.2 = 0 And Pinb.1 = 0 And Pinb.0 = 1 Then
        D = 12
        End If
    
        If Pinb.2 = 1 And Pinb.1 = 0 And Pinb.0 = 1 Then
        D = 14
        End If
    
        If Pinb.2 = 0 And Pinb.1 = 1 And Pinb.0 = 1 Then
        D = 16
        End If
    
        If Pinb.2 = 1 And Pinb.1 = 1 And Pinb.0 = 1 Then
        D = 18
        End If
    Das problem ist aber dass der rest von portb als ausgang deklariert ist, also kann ich auch nicht einfach den ganzen port irgendwie in ein byte schreiben oder so..

    Vll. könnt ihr mir ja helfen..
    Gruss Stefan

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    So:
    .......................................
    Result = 0
    Result.0 = Dip_1
    Result.1 = Dip_2
    Result.2 = Dip_3

    Select Case Result
    Case 0 : S = 5
    Case 1 : S = 10
    Case 2 : S = 15
    Case 3 : S = 20
    Case 4 : S = 25
    Case 5 : S = 30
    Case 6 : S = 40
    Case 7 : S = 50
    End Select
    ..........................................

    Gento

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Gensauso. Wenn die Input-Pins aber so liegen, wie du es beschreibst, kannst du auch

    Result = PINB AND 7 ' gibt dann die Zahl 0-7

    ....usw.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125
    Hi Gento...

    Das sieht ja mal nicht schlecht, aus, aber das überprüft doch dann nur ob das ergebnis 0 ist...?

    PicNick, das hier versteh ich nicht ganz.

    Result = PINB AND 7 ' gibt dann die Zahl 0-7

    heisst dass die letzten 3 ports werden sozusagen in "Results gespeichert" und ich kann abfragen zb. mit case 7 oder so?


    Gruss Stefan

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Na ja, die hast als Input dir Pins 0, 1 u.2 von PINB, die anderen sind Output.
    durch das AND fallen die Output-Pins weg und es bleiben in "result" nur die 3 Input-Bits übrig.
    Und diese Bit ergeben eine Zahl von 0 bis 7, die du eben mit select case abfragen kannst.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125
    Jo, genau so dachte ich das...es reicht ja dann results als byte zu deklarieren, oder?

    Supi....

    Gruss Stefan

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ja, logo. das spart code.
    aufpassen mit der abfrage. Dein Beispiel wäre dann so:
    n.....results........ aktion
    0 = 00000000 D = 4
    2 = 00000010 D = 8
    4 = 00000100 D = 6
    6 = 00000110 D = 10
    1 = 00000001 D = 12
    5 = 00000101 D = 14
    3 = 00000011 D = 16
    7 = 00000111 D = 18
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125
    Na suuuper, klappt prima, vielen dank

    Code:
    Result = Pinb And 7
       Select Case Result
       Case 0 : D = 4
       Case 1 : D = 12
       Case 2 : D = 8
       Case 3 : D = 16
       Case 4 : D = 6
       Case 5 : D = 14
       Case 6 : D = 10
       Case 7 : D = 18
       End Select
    Gruss Stefan

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Dem Inschenöör is nix zu schwöör
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2003
    Ort
    Bad Krozingen
    Alter
    41
    Beiträge
    125
    Falls es euch interessiert wofür ich das brauche...

    Ich hab 2 mini servo module vom rn shop...

    Jetzt kann ich insgesamt 16servos ansteuern und hab 2 Modi für den drehbereich, einmal fest 180° und einmal einstellbar mit dem Dip Drehschalter von 20-160°ca.

    Gruss Stefan

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen