#include <LEDMatrixDriver.hpp>
// LED Matrix pins
const uint8_t LEDMATRIX_CS_PIN = 9; // LED Matrix CS pin
const int LEDMATRIX_SEGMENTS = 16;
const int LEDMATRIX_WIDTH = LEDMATRIX_SEGMENTS * 8;
// 74HC595 Skiftregister pins
const int DATA_PIN = 2; // DS / Serial Data (SER)
const int CLOCK_PIN = 3; // SHCP / Serial Clock (SRCLK)
const int LATCH_PIN = 4; // STCP / Storage Register Clock (RCLK)
const int SEGMENT_VCC = 5; // Konstant 5V för segmenten
// Mappning för LED-matrisen
const static int mapping[16][64][2] PROGMEM = {
{{0,0},{0,1},{0,2},{0,3},{0,4},{0,5},{0,6},{0,7},{0,8},{0,9},{0,10},{0,11},{0,12},{0,13},{0,14},{0,15},{0,16},{0,17},{0,18},{0,19},{0,20},{0,21},{0,22},{0,23},{0,24},{0,25},{0,26},{0,27},{0,28},{0,29},{0,30},{0,31},{0,32},{0,33},{0,34},{0,35},{0,36},{0,37},{0,38},{0,39},{0,40},{0,41},{0,42},{0,43},{0,44},{0,45},{0,46},{0,47},{0,48},{0,49},{0,50},{0,51},{0,52},{0,53},{0,54},{0,55},{0,56},{0,57},{0,58},{0,59},{0,60},{0,61},{0,62},{0,63}},
{{1,0},{1,1},{1,2},{1,3},{1,4},{1,5},{1,6},{1,7},{1,8},{1,9},{1,10},{1,11},{1,12},{1,13},{1,14},{1,15},{1,16},{1,17},{1,18},{1,19},{1,20},{1,21},{1,22},{1,23},{1,24},{1,25},{1,26},{1,27},{1,28},{1,29},{1,30},{1,31},{1,32},{1,33},{1,34},{1,35},{1,36},{1,37},{1,38},{1,39},{1,40},{1,41},{1,42},{1,43},{1,44},{1,45},{1,46},{1,47},{1,48},{1,49},{1,50},{1,51},{1,52},{1,53},{1,54},{1,55},{1,56},{1,57},{1,58},{1,59},{1,60},{1,61},{1,62},{1,63}},
{{2,0},{2,1},{2,2},{2,3},{2,4},{2,5},{2,6},{2,7},{2,8},{2,9},{2,10},{2,11},{2,12},{2,13},{2,14},{2,15},{2,16},{2,17},{2,18},{2,19},{2,20},{2,21},{2,22},{2,23},{2,24},{2,25},{2,26},{2,27},{2,28},{2,29},{2,30},{2,31},{2,32},{2,33},{2,34},{2,35},{2,36},{2,37},{2,38},{2,39},{2,40},{2,41},{2,42},{2,43},{2,44},{2,45},{2,46},{2,47},{2,48},{2,49},{2,50},{2,51},{2,52},{2,53},{2,54},{2,55},{2,56},{2,57},{2,58},{2,59},{2,60},{2,61},{2,62},{2,63}},
{{3,0},{3,1},{3,2},{3,3},{3,4},{3,5},{3,6},{3,7},{3,8},{3,9},{3,10},{3,11},{3,12},{3,13},{3,14},{3,15},{3,16},{3,17},{3,18},{3,19},{3,20},{3,21},{3,22},{3,23},{3,24},{3,25},{3,26},{3,27},{3,28},{3,29},{3,30},{3,31},{3,32},{3,33},{3,34},{3,35},{3,36},{3,37},{3,38},{3,39},{3,40},{3,41},{3,42},{3,43},{3,44},{3,45},{3,46},{3,47},{3,48},{3,49},{3,50},{3,51},{3,52},{3,53},{3,54},{3,55},{3,56},{3,57},{3,58},{3,59},{3,60},{3,61},{3,62},{3,63}},
{{4,0},{4,1},{4,2},{4,3},{4,4},{4,5},{4,6},{4,7},{4,8},{4,9},{4,10},{4,11},{4,12},{4,13},{4,14},{4,15},{4,16},{4,17},{4,18},{4,19},{4,20},{4,21},{4,22},{4,23},{4,24},{4,25},{4,26},{4,27},{4,28},{4,29},{4,30},{4,31},{4,32},{4,33},{4,34},{4,35},{4,36},{4,37},{4,38},{4,39},{4,40},{4,41},{4,42},{4,43},{4,44},{4,45},{4,46},{4,47},{4,48},{4,49},{4,50},{4,51},{4,52},{4,53},{4,54},{4,55},{4,56},{4,57},{4,58},{4,59},{4,60},{4,61},{4,62},{4,63}},
{{5,0},{5,1},{5,2},{5,3},{5,4},{5,5},{5,6},{5,7},{5,8},{5,9},{5,10},{5,11},{5,12},{5,13},{5,14},{5,15},{5,16},{5,17},{5,18},{5,19},{5,20},{5,21},{5,22},{5,23},{5,24},{5,25},{5,26},{5,27},{5,28},{5,29},{5,30},{5,31},{5,32},{5,33},{5,34},{5,35},{5,36},{5,37},{5,38},{5,39},{5,40},{5,41},{5,42},{5,43},{5,44},{5,45},{5,46},{5,47},{5,48},{5,49},{5,50},{5,51},{5,52},{5,53},{5,54},{5,55},{5,56},{5,57},{5,58},{5,59},{5,60},{5,61},{5,62},{5,63}},
{{6,0},{6,1},{6,2},{6,3},{6,4},{6,5},{6,6},{6,7},{6,8},{6,9},{6,10},{6,11},{6,12},{6,13},{6,14},{6,15},{6,16},{6,17},{6,18},{6,19},{6,20},{6,21},{6,22},{6,23},{6,24},{6,25},{6,26},{6,27},{6,28},{6,29},{6,30},{6,31},{6,32},{6,33},{6,34},{6,35},{6,36},{6,37},{6,38},{6,39},{6,40},{6,41},{6,42},{6,43},{6,44},{6,45},{6,46},{6,47},{6,48},{6,49},{6,50},{6,51},{6,52},{6,53},{6,54},{6,55},{6,56},{6,57},{6,58},{6,59},{6,60},{6,61},{6,62},{6,63}},
{{7,0},{7,1},{7,2},{7,3},{7,4},{7,5},{7,6},{7,7},{7,8},{7,9},{7,10},{7,11},{7,12},{7,13},{7,14},{7,15},{7,16},{7,17},{7,18},{7,19},{7,20},{7,21},{7,22},{7,23},{7,24},{7,25},{7,26},{7,27},{7,28},{7,29},{7,30},{7,31},{7,32},{7,33},{7,34},{7,35},{7,36},{7,37},{7,38},{7,39},{7,40},{7,41},{7,42},{7,43},{7,44},{7,45},{7,46},{7,47},{7,48},{7,49},{7,50},{7,51},{7,52},{7,53},{7,54},{7,55},{7,56},{7,57},{7,58},{7,59},{7,60},{7,61},{7,62},{7,63}},
{{7,127},{7,126},{7,125},{7,124},{7,123},{7,122},{7,121},{7,120},{7,119},{7,118},{7,117},{7,116},{7,115},{7,114},{7,113},{7,112},{7,111},{7,110},{7,109},{7,108},{7,107},{7,106},{7,105},{7,104},{7,103},{7,102},{7,101},{7,100},{7,99},{7,98},{7,97},{7,96},{7,95},{7,94},{7,93},{7,92},{7,91},{7,90},{7,89},{7,88},{7,87},{7,86},{7,85},{7,84},{7,83},{7,82},{7,81},{7,80},{7,79},{7,78},{7,77},{7,76},{7,75},{7,74},{7,73},{7,72},{7,71},{7,70},{7,69},{7,68},{7,67},{7,66},{7,65},{7,64}},
{{6,127},{6,126},{6,125},{6,124},{6,123},{6,122},{6,121},{6,120},{6,119},{6,118},{6,117},{6,116},{6,115},{6,114},{6,113},{6,112},{6,111},{6,110},{6,109},{6,108},{6,107},{6,106},{6,105},{6,104},{6,103},{6,102},{6,101},{6,100},{6,99},{6,98},{6,97},{6,96},{6,95},{6,94},{6,93},{6,92},{6,91},{6,90},{6,89},{6,88},{6,87},{6,86},{6,85},{6,84},{6,83},{6,82},{6,81},{6,80},{6,79},{6,78},{6,77},{6,76},{6,75},{6,74},{6,73},{6,72},{6,71},{6,70},{6,69},{6,68},{6,67},{6,66},{6,65},{6,64}},
{{5,127},{5,126},{5,125},{5,124},{5,123},{5,122},{5,121},{5,120},{5,119},{5,118},{5,117},{5,116},{5,115},{5,114},{5,113},{5,112},{5,111},{5,110},{5,109},{5,108},{5,107},{5,106},{5,105},{5,104},{5,103},{5,102},{5,101},{5,100},{5,99},{5,98},{5,97},{5,96},{5,95},{5,94},{5,93},{5,92},{5,91},{5,90},{5,89},{5,88},{5,87},{5,86},{5,85},{5,84},{5,83},{5,82},{5,81},{5,80},{5,79},{5,78},{5,77},{5,76},{5,75},{5,74},{5,73},{5,72},{5,71},{5,70},{5,69},{5,68},{5,67},{5,66},{5,65},{5,64}},
{{4,127},{4,126},{4,125},{4,124},{4,123},{4,122},{4,121},{4,120},{4,119},{4,118},{4,117},{4,116},{4,115},{4,114},{4,113},{4,112},{4,111},{4,110},{4,109},{4,108},{4,107},{4,106},{4,105},{4,104},{4,103},{4,102},{4,101},{4,100},{4,99},{4,98},{4,97},{4,96},{4,95},{4,94},{4,93},{4,92},{4,91},{4,90},{4,89},{4,88},{4,87},{4,86},{4,85},{4,84},{4,83},{4,82},{4,81},{4,80},{4,79},{4,78},{4,77},{4,76},{4,75},{4,74},{4,73},{4,72},{4,71},{4,70},{4,69},{4,68},{4,67},{4,66},{4,65},{4,64}},
{{3,127},{3,126},{3,125},{3,124},{3,123},{3,122},{3,121},{3,120},{3,119},{3,118},{3,117},{3,116},{3,115},{3,114},{3,113},{3,112},{3,111},{3,110},{3,109},{3,108},{3,107},{3,106},{3,105},{3,104},{3,103},{3,102},{3,101},{3,100},{3,99},{3,98},{3,97},{3,96},{3,95},{3,94},{3,93},{3,92},{3,91},{3,90},{3,89},{3,88},{3,87},{3,86},{3,85},{3,84},{3,83},{3,82},{3,81},{3,80},{3,79},{3,78},{3,77},{3,76},{3,75},{3,74},{3,73},{3,72},{3,71},{3,70},{3,69},{3,68},{3,67},{3,66},{3,65},{3,64}},
{{2,127},{2,126},{2,125},{2,124},{2,123},{2,122},{2,121},{2,120},{2,119},{2,118},{2,117},{2,116},{2,115},{2,114},{2,113},{2,112},{2,111},{2,110},{2,109},{2,108},{2,107},{2,106},{2,105},{2,104},{2,103},{2,102},{2,101},{2,100},{2,99},{2,98},{2,97},{2,96},{2,95},{2,94},{2,93},{2,92},{2,91},{2,90},{2,89},{2,88},{2,87},{2,86},{2,85},{2,84},{2,83},{2,82},{2,81},{2,80},{2,79},{2,78},{2,77},{2,76},{2,75},{2,74},{2,73},{2,72},{2,71},{2,70},{2,69},{2,68},{2,67},{2,66},{2,65},{2,64}},
{{1,127},{1,126},{1,125},{1,124},{1,123},{1,122},{1,121},{1,120},{1,119},{1,118},{1,117},{1,116},{1,115},{1,114},{1,113},{1,112},{1,111},{1,110},{1,109},{1,108},{1,107},{1,106},{1,105},{1,104},{1,103},{1,102},{1,101},{1,100},{1,99},{1,98},{1,97},{1,96},{1,95},{1,94},{1,93},{1,92},{1,91},{1,90},{1,89},{1,88},{1,87},{1,86},{1,85},{1,84},{1,83},{1,82},{1,81},{1,80},{1,79},{1,78},{1,77},{1,76},{1,75},{1,74},{1,73},{1,72},{1,71},{1,70},{1,69},{1,68},{1,67},{1,66},{1,65},{1,64}},
{{0,127},{0,126},{0,125},{0,124},{0,123},{0,122},{0,121},{0,120},{0,119},{0,118},{0,117},{0,116},{0,115},{0,114},{0,113},{0,112},{0,111},{0,110},{0,109},{0,108},{0,107},{0,106},{0,105},{0,104},{0,103},{0,102},{0,101},{0,100},{0,99},{0,98},{0,97},{0,96},{0,95},{0,94},{0,93},{0,92},{0,91},{0,90},{0,89},{0,88},{0,87},{0,86},{0,85},{0,84},{0,83},{0,82},{0,81},{0,80},{0,79},{0,78},{0,77},{0,76},{0,75},{0,74},{0,73},{0,72},{0,71},{0,70},{0,69},{0,68},{0,67},{0,66},{0,65},{0,64}}
// ... [Resten av mapping arrayen som du delade]
};
// Skapa LED Matrix objekt
LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN);
// 7-segment konfiguration för siffrorna 0-9
// Segment layout: A
// F B
// G
// E C
// D
const byte digitSegments[10] = {
B00111111, // 0 (ABC DEF )
B00000110, // 1 ( BC )
B01011011, // 2 (AB DE G )
B01001111, // 3 (ABCD G )
B01100110, // 4 ( BC FG )
B01101101, // 5 (A CD FG )
B01111101, // 6 (A CDEFG )
B00000111, // 7 (ABC )
B01111111, // 8 (ABCDEFG )
B01101111 // 9 (ABCF FG )
};
// Räknare och timing variabler
int currentDigit = 0;
unsigned long previousMillis = 0;
const long interval = 1000; // Uppdatera varje sekund
void setup() {
// Konfigurera LED Matrix
lmd.setEnabled(true);
lmd.setIntensity(1); // Ljusstyrka (0-15)
// Konfigurera skiftregister pins
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(SEGMENT_VCC, OUTPUT);
// Sätt segment VCC till hög
digitalWrite(SEGMENT_VCC, HIGH);
}
void displayMatrixDigit(int digit) {
int vals[64] = {0}; // Array för pixelvärden
// Skapa siffermönster baserat på digit
// Exempel för siffran "1" (justera efter behov)
if (digit == 1) {
// Centrerad vertikal linje
for (int i = 24; i < 28; i++) {
vals[i] = 16; // Full höjd
}
}
// Lägg till fler siffermönster här...
// Visa på matrisen enligt mapping
for(int i = 0; i < 64; i++) {
for(int j = 0; j < 16; j++) {
if((vals[i]-j) > 0) {
lmd.setPixel(pgm_read_word(&mapping[j][63-i][1]),
pgm_read_word(&mapping[j][63-i][0]), 1);
} else {
lmd.setPixel(pgm_read_word(&mapping[j][63-i][1]),
pgm_read_word(&mapping[j][63-i][0]), 0);
}
}
}
lmd.display();
}
void displaySegmentDigit(int digit) {
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, digitSegments[digit]);
digitalWrite(LATCH_PIN, HIGH);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Visa aktuell siffra på både matrisen och 7-segment
displayMatrixDigit(currentDigit);
displaySegmentDigit(currentDigit);
// Öka siffran (0-9)
currentDigit = (currentDigit + 1) % 10;
}
}