CCCPaste

Display Control rev_01

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: Display Control
	- Source Code NOT compiled for: ESP32 DevKit V1
	- Source Code created on: 2024-08-18 19:07:27

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Utilize Wokwi to interface a MAX7219 Dot Matrix */
	/* display with ESP32. Create a scrolling 9-character */
	/* message, incorporate an LED and push button, and */
	/* display button press status on the MAX7219. */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include   // https://github.com/evert-arias/EasyButton
#include   // Include the library for MAX7219 Dot Matrix display
#include          // Include SPI library for communication with MAX7219

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t nn_PushButton_PIN_D4 = 4;   // Pin for button D4
const uint8_t nn_PushButton_PIN_D13 = 13; // Pin for button D13

/***** DEFINITION OF MAX7219 DISPLAY PINS *****/
#define MAX_DEVICES 1        // Number of MAX7219 devices
#define DATA_IN   23         // Data pin connected to MAX7219
#define CLK_PIN   18         // Clock pin connected to MAX7219
#define LOAD_PIN  5          // Load pin connected to MAX7219

/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
// Create instances of EasyButton for each button
EasyButton buttonD4(nn_PushButton_PIN_D4);  // Instance for button on pin D4
EasyButton buttonD13(nn_PushButton_PIN_D13); // Instance for button on pin D13

// Create an instance of the MAX7219 display
MD_MAX72XX display = MD_MAX72XX(DATA_IN, CLK_PIN, LOAD_PIN, MAX_DEVICES);

// Callback function for button D4 pressed
void onButtonD4Pressed() {
    Serial.println("Button D4 pressed");
    display.clear(); // Clear the display
    display.print("D4 Pressed"); // Show button press status
}

// Callback function for button D13 pressed
void onButtonD13Pressed() {
    Serial.println("Button D13 pressed");
    display.clear(); // Clear the display
    display.print("D13 Pressed"); // Show button press status
}

// Function to scroll a message on the display
void scrollMessage(const char* message) {
    display.clear();
    display.setCursor(0, 0);
    display.print(message);
    display.update();
    delay(1000); // Delay to allow the message to be visible
}

void setup(void) {
    // Initialize Serial for debugging purposes
    Serial.begin(115200);
    Serial.println();
    Serial.println(">>> EasyButton example with multiple buttons <<<");

    // Initialize the buttons
    buttonD4.begin(); // Initialize button on pin D4
    buttonD13.begin(); // Initialize button on pin D13

    // Add callback functions for button presses
    buttonD4.onPressed(onButtonD4Pressed); // Set callback for button D4
    buttonD13.onPressed(onButtonD13Pressed); // Set callback for button D13

    // Initialize the MAX7219 display
    display.begin();
    display.setIntensity(5); // Set brightness level (0-15)
    display.clear(); // Clear the display at startup

    // Scroll a welcome message
    scrollMessage("Welcome!");
}

void loop(void) {
    // Continuously read the status of the buttons
    buttonD4.read(); // Read the state of button D4
    buttonD13.read(); // Read the state of button D13
}