Hallo liebe Forum-Gemeinde,
Ich bin neu hier im Forum und auch neu bei Arduino. Habe nur wenig Vorkenntnisse mit µC. Habe mir vor einer Woche das Arduino Starter Kit zugelegt und experimentiere nun damit herum.
Ein kleines Problem hab ich nun mit meinem Programm das 16LEDs an 2 74HC595 Shiftregister angeschlossen und möchte 1 Bit von einem zum anderen ende laufen lassen und wieder zurück. Ich hab mir also 2 “for-schleifen” gemacht. Die eine schiebt das Bit 0x0001 nach links bis 0xA000 und die zweite sollte es dann wieder in die entgegengesetzte Richtung tun. Leider schalten sich nach der ersten schleife die LEDs nicht mehr ab sondern beim durchlaufen schalten sich die Bis von links nach rechts nur mehr dazu.
Am “Serial Monitor” habe ich mir das ganze dann mal angesehen und festgestellt, dass bei beginn der zweiten “for-schleife” der Zahlenwert negativ wird.
Ich würde gerne wissen wie es dazu kommt, warum werden die werte plötzlich negativ?
Hier der Code:
int clkPin = 8; // SH_CP
int writePin = 9; // ST_CP
int dataPin = 10; // DS
int abc = 0x0001;
int dly1 = 250; //delaytime
void setup(){
pinMode(clkPin, OUTPUT);
pinMode(writePin, OUTPUT);
pinMode(dataPin, OUTPUT);
Serial.begin(9600);
sendBytes(abc); // Schaltet erste LED ein
delay(dly1);
}
void loop(){
for(int i = 0; i < 15; i++){ // Schleife nach links
sendBytes(abc = abc << 1);
Serial.println(abc);
delay(dly1);
}
for(int i = 0; i < 15; i++){ // Schleife nach rechts
sendBytes(abc = abc >> 1);
Serial.println(abc);
delay(dly1);
}
}
// Funktion zum Übertragen der Informationen
void sendBytes(int wert){
digitalWrite(writePin, LOW);
shiftOut(dataPin, clkPin, MSBFIRST, wert >> 8);
shiftOut(dataPin, clkPin, MSBFIRST, wert & 255);
digitalWrite(writePin, HIGH);
}
Hoffe ihr könnt mir da weiterhelfen
Cheers
Philipp
P.S.: im übrigen ist mir bewusst, dass der Code so nicht ganz sinnvoll ist. Ich möchte euch nur nicht verleiten euch darüber den Kopf zu zerbrechen. mir geht es nur darum den Sprung zu den negativen Werten zu verstehen