// Definiera pins för de 5 skiftregistren
int dataPin = 11;
int clockPin = 13;
int latchPin = 10;
int dataPin1 = 7;
int clockPin1 = 9;
int latchPin1 = 8;
int dataPin2 = 5; // Nytt skiftregister 1
int clockPin2 = 4; // Nytt skiftregister 1
int latchPin2 = 3; // Nytt skiftregister 1
int dataPin3 = 2; // Nytt skiftregister 2
int clockPin3 = A0; // Nytt skiftregister 2
int latchPin3 = A1; // Nytt skiftregister 2
int dataPin4 = A2; // Nytt skiftregister 3
int clockPin4 = A3; // Nytt skiftregister 3
int latchPin4 = A4; // Nytt skiftregister 3
// Wave-form och matrixvärden
int Sine[24] = {4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 6, 5};
int Step_down[24] = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8};
int i, j, k;
int row;
int a[6] = {1, 2, 3, 4, 5, 6};
// Setup function
void setup()
{
// Set pinMode för alla skiftregister
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin1, OUTPUT);
pinMode(clockPin1, OUTPUT);
pinMode(latchPin1, OUTPUT);
pinMode(dataPin2, OUTPUT);
pinMode(clockPin2, OUTPUT);
pinMode(latchPin2, OUTPUT);
pinMode(dataPin3, OUTPUT);
pinMode(clockPin3, OUTPUT);
pinMode(latchPin3, OUTPUT);
pinMode(dataPin4, OUTPUT);
pinMode(clockPin4, OUTPUT);
pinMode(latchPin4, OUTPUT);
Serial.begin(9600);
}
// Loop-funktion
void loop()
{
wave(Sine);
// wave(Step_down); // Kommentera ut för test
}
// Funktion för att uppdatera wave
void wave(int wav[])
{
digitalWrite(dataPin, HIGH);
// Loopar genom wave-värdena (24 värden)
for (i = 0; i < 24; i++)
{
row = wav[i];
Serial.print(row);
digitalWrite(latchPin1, LOW);
digitalWrite(latchPin, LOW);
digitalWrite(dataPin1, HIGH);
// Skiftregistren för första delen av kolumner (kolumn 0-7)
for (j = 0; j < row; j++)
{
digitalWrite(clockPin1, HIGH);
digitalWrite(clockPin1, LOW);
digitalWrite(dataPin1, LOW);
}
digitalWrite(latchPin1, HIGH);
// Skiftregistren för andra delen av kolumner (kolumn 8-15)
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
digitalWrite(latchPin, HIGH);
digitalWrite(dataPin, LOW);
digitalWrite(latchPin, LOW);
// Skiftregistren för de tre nya skiftregistren
for (k = row; k < 8; k++)
{
digitalWrite(clockPin2, HIGH);
digitalWrite(clockPin2, LOW);
digitalWrite(dataPin2, LOW);
digitalWrite(clockPin3, HIGH);
digitalWrite(clockPin3, LOW);
digitalWrite(dataPin3, LOW);
digitalWrite(clockPin4, HIGH);
digitalWrite(clockPin4, LOW);
digitalWrite(dataPin4, LOW);
}
delay(10);
}
}