hallo, Ist es möglich ein shiftregister statt mit 0 - 255. Auch mit Binärcode Sprich 11001100 anzusteuern.
Binär oder Dezimal sind nur zwei verschiedene Darstellungen für die selbe Zahl...
ok wie müsste die zeile aussehen wenn ich statt einer zahl 0 - 255. 00110011 einfügen will. shiftOut(dataPin, clockPin, LSBFIRST, j); im moment ist j die Variable mit dem wert 0-255
Mario schrieb: > ok wie müsste die zeile aussehen wenn ich statt einer zahl 0 - 255. > 00110011 einfügen will. > > > shiftOut(dataPin, clockPin, LSBFIRST, j); > > im moment ist j die Variable mit dem wert 0-255 Macht keinen Unterschied. Ob du j = 51; oder j = 0xb00110011; oder j = 0x33; oder j = 'Q'; oder j = 50 + 1; oder ... schreibst, kommt alles aufs selbe raus. In j (ich nehme mal an, das wäre eine 8 Bit Variable) werden die 8 Bits auf das Muster +---+---+---+---+---+---+---+---+ | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | +---+---+---+---+---+---+---+---+ gesetzt. Die verschiedenen Schreibweisen für Zahlen sind genau das: verschiedene Schreibweisen. Aber sie stehen alle für ein und dasselbe Bitmuster. Nämlich das Bitmuster, welches als Dezimalzahl interpretiert 51 ergibt. Die Schreibweisen haben ihre Berechtigung. Je nachdem was man macht, je nachdem was man tut, kann die eine Schreibweise besser ausdrücken, was eigentlich die Absicht an einer bestimmten Codestelle ist.
Ja massive probleme leider. hab das eben mal versucht und das hat geklappt. wenn ich jetzt anstatt einem festen code einen zustand von einem digitalen eingang setzten will. sprich das anfangs byte vom schieberegister ist 00000000 und ich will jetzt die variable y in das vorhandene byte einfliesen lassen von links nach rechts dann müsste eine zeile doch wie folgt aussehen. shiftOut(dataPin, clockPin, LSBFIRST, 00000000 << y);
Ohje ganz schwer zu erklären. ich möchte einen Digitalen eingang auslesen. Ergebniss 0 - 1. diese dann von links nach rechts in einen binärcode einfliesen lassen. das heist immer das aktuelle bit wird links reingeschoben und das letzte rechte bit entfällt. Und der aktuelle binärcode soll dann das shiftregister ansteuern. Sprich wenn der eingang 1 ist sieht der BIN nach 8 durchgängen so aus 11111111 und das ist dann gleichzeitig auch der zustand meines Schieberegisters. Hilfe
Mario schrieb: > Ohje ganz schwer zu erklären. > > ich möchte einen Digitalen eingang auslesen. Ergebniss 0 - 1. > > diese dann von links nach rechts in einen binärcode einfliesen lassen. > das heist immer das aktuelle bit wird links reingeschoben und das letzte > rechte bit entfällt. > Und der aktuelle binärcode soll dann das shiftregister ansteuern. Stell diese Aufgabe noch zurück. Ohne saubere Tastenentprellung wird das nichts und sowas ist erstaunlich schwer zu realisieren.
Ok waron liegt das problem genau den da ich einen Digitalen eingang habe kann das ergebniss eh nur 0 oder 1 sein. in meiner Schaltung habe Pullup Widerstände die den eingang gegen masse ziehen.
Mario schrieb: > Ok waron liegt das problem genau den da ich einen Digitalen eingang habe > kann das ergebniss eh nur 0 oder 1 sein. Schon. Aber dein Programm fragt den Eingang ungefähr 10-tausend mal in der Sekunde ab. Und ich glaube nicht, dass du den Taster schnell genug drücken und wieder loslassen kannst, dass dein Programm da nur ein einziges mal eine 1 sieht.
Wie funktioniert das eigentlich wenn ich zum Beispiel. x deklariere mit 0b00001000; x = 0b00001000; und ich will in das byte von links nach rechts daten einfliesen lassen. über die Variable y
OK das habe ich nicht bedacht. und wenn ich über die pause delay(100); dann sollte es doch klappen das alle 100ms ein bit reinkommt. oder sehe ich das schon wieder falsch.
Hallo Troll, Habe das eben probiert allerdings verändert das nur das letzte bit. Ich bräuchte das aber so das es sich bei jeden eingang um eine bit verschiebt. Sprich: kommt entfällt 1 00110011 1 0 10011001 1 0 01001100 0 1 10100110 0
Mario schrieb: > Ich bräuchte das aber so das es sich bei jeden eingang um eine bit > verschiebt. ??? > Sprich: > kommt entfällt > > > 1 00110011 1 > 0 10011001 1 > 0 01001100 0 > 1 10100110 0 OK, du willst offensichtlich von Links Daten in deine Variable reinschieben. x enthält (1<<7) bzw. (0<<7) y|=x; y>>=1; Oder wenn x irgendwas enthält und nur das schwächste Bit beachtet werden soll. y|=(x<<7); y>>=1; Guck dir mal Bitmanipulation an.
Vielen danke werde ich morgen gleich mal machen Wünsche noch einen schönen Abend.
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.