#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
// Define the pin numbers for the 7-segment display segments
const int segmentA = 2;
const int segmentB = 3;
const int segmentC = 4;
const int segmentD = 5;
const int segmentE = 6;
const int segmentF = 7;
const int segmentG = 8;
const int BUTTON_PIN = 9;
int buttonState = LOW;
const int MAX_DEVICES = 1;
const int CLK_PIN = 13;
const int DATA_PIN = 11;
const int CS_PIN = 10;
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int scrollSpeed = 200;
int scrollPause = 0;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT);
P.begin();
P.setIntensity(15);
// Set the display segments as OUTPUT
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
}
int i = 0;
void loop() {
buttonState = digitalRead(BUTTON_PIN);
if (buttonState == HIGH) {
delay(50);
i = i+1;
if (i > 9) {
i = 0;
}
delay(1000);
if (P.displayAnimate())
{
P.displayReset();
char str;
snprintf(str, sizeof(str), "%d", i);
P.displayText(str, PA_LEFT, scrollSpeed, scrollPause, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
}
displayNumber(i);
buttonState = LOW;
}
// Function to display a digit on the 7-segment display
void displayNumber(int num) {
// Define a common anode 7-segment display truth table
// You may need to modify this based on your display's pin configuration
const byte digitMap[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
if (num >= 0 && num <= 9) {
byte displayValue = digitMap[num];
digitalWrite(segmentA, bitRead(displayValue, 0));
digitalWrite(segmentB, bitRead(displayValue, 1));
digitalWrite(segmentC, bitRead(displayValue, 2));
digitalWrite(segmentD, bitRead(displayValue, 3));
digitalWrite(segmentE, bitRead(displayValue, 4));
digitalWrite(segmentF, bitRead(displayValue, 5));
digitalWrite(segmentG, bitRead(displayValue, 6));
}
}