Made MD* libraries (Parola, MAX72XX) project specific, to be able to use the newest software version from github.

This commit is contained in:
2019-02-01 15:21:58 +01:00
parent fe9f25c856
commit c7547144d2
761 changed files with 108577 additions and 2 deletions

View File

@@ -0,0 +1,159 @@
// Use the MD_MAX72XX library to Display a Scrolling Chart
//
// Scroll Chart Style can be changed from line to bar chart, triggered
// by a switch on the MODE_SWITCH pin.
//
// Uses the MD_UIswitch library found at https://github.com/MajicDesigns/MD_UISwitch
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <MD_UISwitch.h>
#define DEBUG 0 // Enable or disable (default) debugging output
#if DEBUG
#define PRINT(s, v) { Serial.print(F(s)); Serial.print(v); } // Print a string followed by a value (decimal)
#define PRINTX(s, v) { Serial.print(F(s)); Serial.print(v, HEX); } // Print a string followed by a value (hex)
#define PRINTB(s, v) { Serial.print(F(s)); Serial.print(v, BIN); } // Print a string followed by a value (binary)
#define PRINTC(s, v) { Serial.print(F(s)); Serial.print((char)v); } // Print a string followed by a value (char)
#define PRINTS(s) { Serial.print(F(s)); } // Print a string
#else
#define PRINT(s, v) // Print a string followed by a value (decimal)
#define PRINTX(s, v) // Print a string followed by a value (hex)
#define PRINTB(s, v) // Print a string followed by a value (binary)
#define PRINTC(s, v) // Print a string followed by a value (char)
#define PRINTS(s) // Print a string
#endif
// --------------------
// MD_MAX72xx hardware definitions and object
// 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::PAROLA_HW
#define MAX_DEVICES 8
#define CLK_PIN 13 // or SCK
#define DATA_PIN 11 // or MOSI
#define CS_PIN 10 // or SS
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // SPI hardware interface
//MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES); // Arbitrary pins
// --------------------
// Mode keyswitch parameters and object
//
#define MODE_SWITCH 9 // Digital Pin
MD_UISwitch_Digital ks = MD_UISwitch_Digital(MODE_SWITCH, LOW);
// --------------------
// Constant parameters
//
// Various delays in milliseconds
#define Next_POINT_DELAY 40
// ========== General Variables ===========
//
uint32_t prevTime = 0; // Used for remembering the mills() value
// ========== Graphic routines ===========
//
bool graphDisplay(bool bInit, uint8_t nType)
{
static int8_t curPoint = 0;
uint8_t curCol = 0;
// are we initializing?
if (bInit)
{
resetDisplay();
curPoint = 4;
bInit = false;
}
else if (millis() - prevTime >= Next_POINT_DELAY)
{
prevTime = millis(); // rest for next time
// work out the new value for the height depending on the chart type
switch (nType)
{
case 0: // continuous display next point should be +/-1 or 0
curPoint += random(3) - 1;
if (curPoint < 0) curPoint = 0;
if (curPoint > 7) curPoint = 7;
break;
case 1: // random height
case 2:
curPoint = random(8);
break;
}
// now work out the new column value
switch (nType)
{
case 0: // just a dot
case 1:
curCol = (1 << curPoint);
break;
case 2: // bar chart
for (uint8_t i=0; i<8; i++)
curCol |= (i<curPoint ? 0 : 1) << i;
break;
}
// Shift over and insert the new column
mx.transform(MD_MAX72XX::TSL);
mx.setColumn(0, curCol);
}
return(bInit);
}
// ========== Control routines ===========
//
void resetDisplay(void)
{
mx.control(MD_MAX72XX::INTENSITY, MAX_INTENSITY/2);
mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::ON);
mx.clear();
prevTime = 0;
}
void runAnimation(void)
// Schedule the animations, switching to the next one when the
// the mode switch is pressed.
{
static uint8_t state = 0;
static bool bRestart = true;
// check if the switch is pressed and handle that first
if (ks.read() == MD_UISwitch::KEY_PRESS)
{
state = (state + 1) % 3;
bRestart = true;
};
// now do whatever we do in the current state
bRestart = graphDisplay(bRestart, state);
}
void setup()
{
mx.begin();
ks.begin();
#if DEBUG
Serial.begin(57600);
#endif
PRINTS("\n[MD_MAX72XX Scroll Chart]");
}
void loop()
{
runAnimation();
}