Binär Hex usw umrechnen

  • Hallo

    Ich habe ein großes Problem und weiß auch gar nicht ob ich das so richtig erklären kann

    Ich habe über MCP 23017 eine Platine erstellt für 16 eingänge (Taster) 8 pro Seite

    Wenn ich diese auslese bekomme ich ja einen Hex Wert von 00 - FF
    wobei 00 für kein eingang steht und 01 bedeutet das Taster 7 betätigt ist
    02 bedeutet das Taster 6 betätigt ist und 04 Taster 5
    Bekomme ich aber den Wert 03 bedeutet es das Taster 7 und 6 betätigt ist

    Ich könnte nun 128 if anweisungen schreiben um alle Taster zuzuordnen

    aber ich denke es geht auch einfacher

    Die Frage ist nun nach welchen Stichwörtern muß ich suchen (google) um diese Problematik in den Griff zu bekommen ?

    Danke schonmal für eure hilfe


  • Die Frage ist nun nach welchen Stichwörtern muß ich suchen (google) um diese Problematik in den Griff zu bekommen ?


    Convert Hex Binary

    Schick das mal im Terminal ab (das ganze Paket auf einmal), dann erkennst Du die Regel:

    Code
    for hex in 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
    do
        echo "obase=2; ibase=16; $hex" | bc 
    done

    Einmal editiert, zuletzt von WinterUnit16246 (9. Mai 2017 um 22:31)

  • Relbmessa: Ich verstehe nicht ganz wie Dein Link dem TE helfen soll :s

    Anyhow: Man kann auch alles in einer Loop abhandeln:

  • In einer for-Schleife die einzelnen Bits durch gehen und wenn eins gesetzt ist das dann tun was du tun willst, macht eine schleife ind eine if-Abfrage und fertig ist das. Sozusagen Tell´s Idee nur noch etwas verkürzt. Wie das geht gibt es haufen weise Beispiele im Netz. Wobei du bei der Variante dann doch bisschen mehr überlegen musst damit das zum schluss alles passt, sollte aber die schnellste sein

    zu spät framp war da schneller mit nen passenden beispiel noch dazu :(

    Einmal editiert, zuletzt von CTecS (9. Mai 2017 um 23:15)

  • Und wenn man sich etwas weniger verwirren will, nummeriert man die Pins andersrum, dann ist das auch leichter zu verstehen:
    Pin 0 = 2^0 = 1 = 0x01
    Pin 1 = 2^1 = 2 = 0x02
    Pin 2 = 2^2 = 4 = 0x04
    Pin 3 = 2^3 = 8 = 0x08
    Pin 4 = 2^4 = 16 = 0x10
    Pin 5 = 2^5 = 32 = 0x20
    Pin 6 = 2^6 = 64 = 0x40
    Pin 7 = 2^7 = 128 = 0x80

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • @ nach welchen Stichwörtern muß ich suchen (google)

    Nach binären Operatoren, oder left/right shift ?


    Servus !
    Automatisch zusammengefügt:
    In framps post steht das "Geheimnis":
    m <<= 1 # shift bit mask to the left

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (12. Mai 2017 um 01:37)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!