#include <MD_parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#include <LedControl.h>
// set to 1 if we are implementing the user interface pot, switch, etc
#define USE_UI_CONTROL 0
#if USE_UI_CONTROL
#include <MD_UISwitch.h>
#endif
// turnn on debug statements to the serial output
#define DEBUG 0
#if DEBUG
#define PRINT(s, x) { serial.print(F(s)); serial.print(x); }
#define PRINT(x) serial.print(F(x))
#define PRINT(x) serial.println(x, HEX)
#else
#define PRINT(s, x)
#define PRINT(x)
#define PRINT(x)
#endif
// Define the number of devices we have in the chain and the haedware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX: :PAROLA_HW
#define MAX_DEVICES 11
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
//HARDWARE
MD_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_CONTROL
const uint8_t SPEED_UI = A5;
const uint8_t DIRECTION_SET = 8; // change the effect
const uint8_t INVERT_SET = 9; // change the innvert
const uint8_t SPEED_DEADBAND = 5;
#endif // USE_UI_CONTROL
uint8_t scrollSpeed = 25; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textposition_ scrollAlign = PA_LEFT;
uint16_t scrollpause = 100; // in milliseconds
// Global message buffers shared by serial and Scrolling functions
#define BUF_SIZE 100
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = { "RANGKAIAN ELEKTRONIKA SEDERHANA & TEGANGAN RENDAH-SISTEM KOMPUTER KAMPUS KOTA SERANG"}
bool newMessageAvailable = true;
#if USE_UI_CONTROL
MD_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;
PRINTR("\nChanged speed to", p.getSpeed());
}
}
if (uiDirection.read() == MD_UISwitch::KEY_PRESS) //SCROLL DIRECTION
{
PRINTR("\nChangin invert mode");
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
{
PRINTR("\nChanging invert mode");
p.setInvert(!p.getInvert());
}
}
#endif // USE_UI_CONTROL
void readSerial(void)