Pages: [1]   Go Down
Author Topic: Shift-Register 74HC165 auslesen und Werte weiterverarbeiten  (Read 777 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich habe gerade eine kleine "Blockade":

Wenn ich die Eingänge eines 74HC595 schalten möchte, dann sende ich ja 1 oder 0 an die jeweilige stelle.

Klappt ja gut wenn man 8 Taster ausliest an Leds ausgibt und dazu folgendes verwendet:

Code:
if(Button1 == HIGH)
{
ledValue = ledValue +1;
}

if(Button2 == HIGH)
{
ledValue = ledValue +2;
}

if(Button3 == HIGH)
{
ledValue = ledValue +4;
}

if(Button4 == HIGH)
{
ledValue = ledValue +8;
}

if(Button5 == HIGH)
{
ledValue = ledValue +16;
}

if(Button6 == HIGH)
{
ledValue = ledValue +32;
}

if(Button7 == HIGH)
{
ledValue = ledValue +64;
}

if(Button8 == HIGH)
{
ledValue = ledValue +128;
}

Aber wie kann man die 1-sen und Nullen der jeweiligen Stelle als Variable speichern die der 74HC165 ausgibt? Also quasi die 8-Bit reihe aufspalten in seine einzelnen Bit? Ich stehe da leider etwas auf der Leitung.

Ich hoffe Ihr könnt mir dabei helfen.

Danke
Lg MrNiceGuy
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
hat denn keiner eine Idee wie man das realisieren könnte um schnell viele Taster mittels 74HC165 auszulesen?

Lg MrNiceGuy
Logged

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1884
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

mit einem AND geht das zb.
11011001  vom HC
00001000  vergleich mit AND
00001000  ergebnis

11011001  vom HC
00000100  vergleich mit AND
00000000  ergebnis

also :
if ((217 AND 8 ) == 8 ) {vierte_stelle = true;}
if ((217 AND 4) == 4) {dritte_stelle = true;}

[EDIT] die smiley-cool ausgebessert damit sie 8 ) werden Uwe [/EDIT]
« Last Edit: March 31, 2013, 04:33:09 pm by uwefed » Logged

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1884
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

die  smiley-cool sollen 8 ) sein.
ein else mit false gehört natürlich dazu.

oder abgekürzt

dritte_stelle = ((217 AND 3) == 3) ? TRUE : FALSE;

gruß stefan
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der And-Vergleich ist aber bei vielen Schieberegistern eher aufwendig.

Wäre es auch möglich das mit einer If-Abfrage zu machen?

Nach diesem Vorbild z.B.:

 for(int i=1;i < (numoftacts + 1) ;i++){
           Tact = String("tact") + i;
}
??

Denn so müsste man es ja nur als 8-er Kette mal die anzahl der Register machen, aber ich bin mir nicht so sicher wie man das als Code ausdrücken kann, ohne jetzt jedes einzelne Register einzeln einprogrammieren zu müssen. So könnte man es auch später durch das einfache ändern des Multiplikators für die Anzahl der Register erweitern?


Lg
Logged

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1884
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

mit Deinem codebeispiel komm ' ich jetzt garnicht klar.
in einer for-schleife kann man mit

Code:
boolean stelle[7];

for (byte n = 0; n < 8; n++) {
  stelle[n] = ((217 AND pow(2, n)) == pow(2, n)) ? TRUE : FALSE;
}

hinkommen.

gruß stefan
« Last Edit: March 31, 2013, 04:33:51 pm by uwefed » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 258
Posts: 21494
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Um ein Bit in einem Byte zu lesen gibt es die Funktionen BitRead)  http://arduino.cc/en/Reference/BitRead

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke,
das sieht sehr brauchbar aus.

Muss jetzt leider eh erst mal warten bis meine ganzen Shift register eingetroffen sind, um mit meinen experimenten weiter zu kommen.

Danke

Lg MrNiceGuy
Logged

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1884
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi, uwe

Quote
Um ein Bit in einem Byte zu lesen gibt es die Funktionen BitRead

wieder was gelernt, brauchte ich noch nie bis jetzt.

gruß stefan
Logged

Pages: [1]   Go Up
Jump to: