Jako začátečník mám uplně jednoduchý prográmek, Jakého si hada s posuvným registrem. Vypsané pole a funkci loop dokola počítající nahoru a dolu, ale nechápu proč mi při každém druhém přejetí vynechá jeden bit. Jednou had dojede až nakonec, podruhé ne. Pomocí jakési diagnostiky se Serial printem sem nezjistil proč ho to vynechá.
Kód: Vybrat vše
// pin RCLK 12
int zapis = 3;
// pin SRCLK 11
int hodiny = 4;
// data pin 14
int data = 2;
int vystup[] = {B01111111,
B10111111,
B11011111,
B11101111,
B11110111,
B11111011,
B11111101,
B11111110,
B11111101,
B11111011,
B11110111,
B11101111,
B11011111,
B10111111};
void setup() {
pinMode(zapis, OUTPUT);
pinMode(hodiny, OUTPUT);
pinMode(data, OUTPUT);
Serial.begin(9600);
}
// 13 hodnot
int poradi = 0;
bool znamenko = true;
void loop() {
digitalWrite(zapis, LOW);
shiftOut(data, hodiny, LSBFIRST, vystup[poradi]);
digitalWrite(zapis, HIGH);
Serial.print(" Z pole: ");
Serial.print(vystup[poradi],BIN);
Serial.print(" -- ");
Serial.print(poradi);
Serial.print(" <- Poradi | Znamenko -> ");
Serial.println(znamenko);
if (znamenko)
{poradi += 1;}
if (!znamenko)
{poradi -= 1;}
if (poradi == 13 || poradi == 0){znamenko = !znamenko;}
//if (poradi == 0 ){znamenko = !znamenko;}
delay(150);
}
Kód: Vybrat vše
Z pole: 1111111 -- 0 <- Poradi | Znamenko -> 1
Z pole: 10111111 -- 1 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 2 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 3 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 4 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 5 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 6 <- Poradi | Znamenko -> 1
Z pole: 11111110 -- 7 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 8 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 9 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 10 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 11 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 12 <- Poradi | Znamenko -> 1
Z pole: 10111111 -- 13 <- Poradi | Znamenko -> 0
Z pole: 11011111 -- 12 <- Poradi | Znamenko -> 0
Z pole: 11101111 -- 11 <- Poradi | Znamenko -> 0
Z pole: 11110111 -- 10 <- Poradi | Znamenko -> 0
Z pole: 11111011 -- 9 <- Poradi | Znamenko -> 0
Z pole: 11111101 -- 8 <- Poradi | Znamenko -> 0
Z pole: 11111110 -- 7 <- Poradi | Znamenko -> 0
Z pole: 11111101 -- 6 <- Poradi | Znamenko -> 0
Z pole: 11111011 -- 5 <- Poradi | Znamenko -> 0
Z pole: 11110111 -- 4 <- Poradi | Znamenko -> 0
Z pole: 11101111 -- 3 <- Poradi | Znamenko -> 0
Z pole: 11011111 -- 2 <- Poradi | Znamenko -> 0
Z pole: 10111111 -- 1 <- Poradi | Znamenko -> 0
Z pole: 1111111 -- 0 <- Poradi | Znamenko -> 1
Z pole: 10111111 -- 1 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 2 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 3 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 4 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 5 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 6 <- Poradi | Znamenko -> 1
Z pole: 11111110 -- 7 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 8 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 9 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 10 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 11 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 12 <- Poradi | Znamenko -> 1
Z pole: 10111111 -- 13 <- Poradi | Znamenko -> 0
Z pole: 11011111 -- 12 <- Poradi | Znamenko -> 0
Z pole: 11101111 -- 11 <- Poradi | Znamenko -> 0
Z pole: 11110111 -- 10 <- Poradi | Znamenko -> 0
Z pole: 11111011 -- 9 <- Poradi | Znamenko -> 0
Z pole: 11111101 -- 8 <- Poradi | Znamenko -> 0
Z pole: 11111110 -- 7 <- Poradi | Znamenko -> 0
Z pole: 11111101 -- 6 <- Poradi | Znamenko -> 0
Z pole: 11111011 -- 5 <- Poradi | Znamenko -> 0
Z pole: 11110111 -- 4 <- Poradi | Znamenko -> 0
Z pole: 11101111 -- 3 <- Poradi | Znamenko -> 0
Z pole: 11011111 -- 2 <- Poradi | Znamenko -> 0
Z pole: 10111111 -- 1 <- Poradi | Znamenko -> 0
Z pole: 1111111 -- 0 <- Poradi | Znamenko -> 1
Z pole: 10111111 -- 1 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 2 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 3 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 4 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 5 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 6 <- Poradi | Znamenko -> 1
Z pole: 11111110 -- 7 <- Poradi | Znamenko -> 1
Z pole: 11111101 -- 8 <- Poradi | Znamenko -> 1
Z pole: 11111011 -- 9 <- Poradi | Znamenko -> 1
Z pole: 11110111 -- 10 <- Poradi | Znamenko -> 1
Z pole: 11101111 -- 11 <- Poradi | Znamenko -> 1
Z pole: 11011111 -- 12 <- Poradi | Znamenko -> 1
Proč je každé 26. dvojkové číslo o jeden bit kratší?
Díky za odpověďi.