Features Arduino Matrix and The phone
send a text from your phone to Arduino Max7219with spoking or wrightingArduino Skech// // Use the Parola library to scroll text// // Use Parola_Scrolling#include #include #include // set to 1 if we are implementing the user interface pot, switch, etc#define USE_UI_CONTROL 0#if USE_UI_CONTROL#include #endif// Turn on debug statements to the serial output#define DEBUG 0#if DEBUG#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }#define PRINTS(x) Serial.print(F(x))#define PRINTX(x) Serial.println(x, HEX)#else#define PRINT(s, x)#define PRINTS(x)#define PRINTX(x)#endif// Define the number of devices we have in the chain and the hardware interface// NOTE: These pin numbers will probably not work with your hardware and may// need to be adapted#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW#define MAX_DEVICES 8#define CLK_PIN 13#define DATA_PIN 11#define CS_PIN 10// HARDWARE SPIMD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);// SOFTWARE SPI//MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);// Scrolling parameters#if USE_UI_CONTROLconst uint8_t SPEED_IN = A5;const uint8_t DIRECTION_SET = 8; // change the effectconst uint8_t INVERT_SET = 9; // change the invertconst uint8_t SPEED_DEADBAND = 5;#endif // USE_UI_CONTROLuint8_t scrollSpeed = 50; // default frame delay valuetextEffect_t scrollEffect = PA_SCROLL_LEFT;textPosition_t scrollAlign = PA_LEFT;uint16_t scrollPause = 3000; // in milliseconds// Global message buffers shared by Serial and Scrolling functions#define BUF_SIZE 500char curMessage[BUF_SIZE] = { "" };char newMessage[BUF_SIZE] = { "Hello" };bool newMessageAvailable = true;#if USE_UI_CONTROLMD_UISwitch_Digital uiDirection(DIRECTION_SET);MD_UISwitch_Digital uiInvert(INVERT_SET);void doUI(void){ // set the speed if it has changed { int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150); if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) || (speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND))) { P.setSpeed(speed); scrollSpeed = speed; PRINT("nChanged speed to ", P.getSpeed()); } } if (uiDirection.read() == MD_UISwitch::KEY_PRESS) // SCROLL DIRECTION { PRINTS("nChanging scroll direction"); scrollEffect = (scrollEffect == PA_SCROLL_LEFT ?
PA_SCROLL_RIGHT : PA_SCROLL_LEFT); P.setTextEffect(scrollEffect, scrollEffect); P.displayClear(); P.displayReset(); } if (uiInvert.read() == MD_UISwitch::KEY_PRESS) // INVERT MODE { PRINTS("nChanging invert mode"); P.setInvert(!P.getInvert()); }}#endif // USE_UI_CONTROLvoid readSerial(void){ static char *cp = newMessage; while (Serial.available()) { *cp = (char)Serial.read(); if ((*cp == n) || (cp - newMessage >= BUF_SIZE-2)) // end of message character or full buffer { *cp = 0; // end the string // restart the index for next filling spree and flag we have a message waiting cp = curMessage; newMessageAvailable = true; } else // move char pointer to next position cp++; }}void setup(){ Serial.begin(9600); Serial.print("n[Parola Scrolling Display]nType a message for the scrolling displaynEnd message line with a newline");#if USE_UI_CONTROL uiDirection.begin(); uiInvert.begin(); pinMode(SPEED_IN, INPUT); doUI();#endif // USE_UI_CONTROL P.begin(); P.displayText(newMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);}void loop(){#if USE_UI_CONTROL doUI();#endif // USE_UI_CONTROL if (P.displayAnimate()) { if (newMessageAvailable) { strcpy(curMessage, newMessage); newMessageAvailable = false; } P.displayReset(); } readSerial();}
Secure & Private
Your data is protected with industry-leading security protocols.
24/7 Support
Our dedicated support team is always ready to help you.
Personalization
Customize the app to match your preferences and workflow.
See the Arduino Matrix and The phone in Action
Get the App Today
Available for Android 8.0 and above