Splitted code to classes.
This commit is contained in:
committed by
s.aydarov
parent
6bfbc0ccff
commit
03106054c5
22
Defines.h
Normal file
22
Defines.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#ifndef EYE_TRAINER_CONSTANTS
|
||||||
|
#define EYE_TRAINER_CONSTANTS 0
|
||||||
|
|
||||||
|
#define PIN_LED_GND_BUS 6
|
||||||
|
#define MAX_LED_INDEX 15
|
||||||
|
#define MAX_BRIGHTNESS 255.0
|
||||||
|
#define MIN_BRIGHTNESS 25.5
|
||||||
|
|
||||||
|
#define PIN_BTN_MAIN 9
|
||||||
|
#define PIN_BTN_UP 10
|
||||||
|
#define PIN_BTN_DOWN 11
|
||||||
|
|
||||||
|
#define PIN_DISPLAY_CLK 7
|
||||||
|
#define PIN_DISPLAY_DIO 8
|
||||||
|
|
||||||
|
#define PIN_LED_DATA 5
|
||||||
|
#define PIN_LED_LATCH 4
|
||||||
|
#define PIN_LED_CLOCK 3
|
||||||
|
|
||||||
|
#define REGISTER_SIZE 2
|
||||||
|
|
||||||
|
#endif
|
||||||
167
DisplayHelper.h
Normal file
167
DisplayHelper.h
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
#include <TM1637Display.h>
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
|
class DisplayHelper
|
||||||
|
{
|
||||||
|
// The amount of time (in milliseconds) between tests
|
||||||
|
#define TEST_DELAY 250
|
||||||
|
|
||||||
|
public:
|
||||||
|
DisplayHelper() { }
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(PIN_BTN_MAIN, INPUT);
|
||||||
|
pinMode(PIN_BTN_UP, INPUT);
|
||||||
|
pinMode(PIN_BTN_DOWN, INPUT);
|
||||||
|
display.setBrightness(0x0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buttonsTest()
|
||||||
|
{
|
||||||
|
bool btnMainState = digitalRead(PIN_BTN_MAIN);
|
||||||
|
bool btnUpState = digitalRead(PIN_BTN_UP);
|
||||||
|
bool btnDownState = digitalRead(PIN_BTN_DOWN);
|
||||||
|
int numChanged = currentNum;
|
||||||
|
|
||||||
|
if(btnMainState == HIGH)
|
||||||
|
{
|
||||||
|
numChanged = 0;
|
||||||
|
}
|
||||||
|
else if (btnUpState == HIGH)
|
||||||
|
{
|
||||||
|
numChanged++;
|
||||||
|
}
|
||||||
|
else if (btnDownState == HIGH)
|
||||||
|
{
|
||||||
|
numChanged--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(numChanged != currentNum)
|
||||||
|
{
|
||||||
|
currentNum = numChanged;
|
||||||
|
display.clear();
|
||||||
|
display.showNumberDec(currentNum, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void runTest()
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
|
||||||
|
uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
|
||||||
|
display.setBrightness(0x0f);
|
||||||
|
|
||||||
|
// All segments on
|
||||||
|
display.setSegments(data);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
// Selectively set different digits
|
||||||
|
data[0] = display.encodeDigit(0);
|
||||||
|
data[1] = display.encodeDigit(1);
|
||||||
|
data[2] = display.encodeDigit(2);
|
||||||
|
data[3] = display.encodeDigit(3);
|
||||||
|
display.setSegments(data);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for(k = 3; k >= 0; k--) {
|
||||||
|
display.setSegments(data, 1, k);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
display.clear();
|
||||||
|
display.setSegments(data+2, 2, 2);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
display.clear();
|
||||||
|
display.setSegments(data+2, 2, 1);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
display.clear();
|
||||||
|
display.setSegments(data+1, 3, 1);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
|
||||||
|
// Show decimal numbers with/without leading zeros
|
||||||
|
display.showNumberDec(0, false); // Expect: ___0
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(0, true); // Expect: 0000
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(1, false); // Expect: ___1
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(1, true); // Expect: 0001
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(301, false); // Expect: _301
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(301, true); // Expect: 0301
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.clear();
|
||||||
|
display.showNumberDec(14, false, 2, 1); // Expect: _14_
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.clear();
|
||||||
|
display.showNumberDec(4, true, 2, 2); // Expect: __04
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(-1, false); // Expect: __-1
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(-12); // Expect: _-12
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberDec(-999); // Expect: -999
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.clear();
|
||||||
|
display.showNumberDec(-5, false, 3, 0); // Expect: _-5_
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberHexEx(0xf1af); // Expect: f1Af
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberHexEx(0x2c); // Expect: __2C
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.showNumberHexEx(0xd1, 0, true); // Expect: 00d1
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.clear();
|
||||||
|
display.showNumberHexEx(0xd1, 0, true, 2); // Expect: d1__
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
|
||||||
|
// Run through all the dots
|
||||||
|
for(k=0; k <= 4; k++) {
|
||||||
|
display.showNumberDecEx(0, (0x80 >> k), true);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Brightness Test
|
||||||
|
for(k = 0; k < 4; k++)
|
||||||
|
data[k] = 0xff;
|
||||||
|
for(k = 0; k < 7; k++) {
|
||||||
|
display.setBrightness(k);
|
||||||
|
display.setSegments(data);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
// On/Off test
|
||||||
|
for(k = 0; k < 4; k++)
|
||||||
|
{
|
||||||
|
display.setBrightness(7, false); // Turn off
|
||||||
|
display.setSegments(data);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
display.setBrightness(7, true); // Turn on
|
||||||
|
display.setSegments(data);
|
||||||
|
delay(TEST_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Done!
|
||||||
|
display.setSegments(SEG_DONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
TM1637Display display = TM1637Display::TM1637Display(PIN_DISPLAY_CLK, PIN_DISPLAY_DIO);
|
||||||
|
int currentNum = 0;
|
||||||
|
|
||||||
|
// const uint8_t SEG_DONE[] = {
|
||||||
|
uint8_t SEG_DONE[4] = {
|
||||||
|
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
|
||||||
|
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
|
||||||
|
SEG_C | SEG_E | SEG_G, // n
|
||||||
|
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
27
Enums.h
Normal file
27
Enums.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#ifndef EYE_TRAINER_ENUMS
|
||||||
|
#define EYE_TRAINER_ENUMS 0
|
||||||
|
|
||||||
|
enum DeviceMode
|
||||||
|
{
|
||||||
|
IDLE,
|
||||||
|
SETTINGS_MODE,
|
||||||
|
SETTINGS_BRIGHTNESS,
|
||||||
|
SETTINGS_TIME,
|
||||||
|
RUN
|
||||||
|
};
|
||||||
|
|
||||||
|
enum RunMode
|
||||||
|
{
|
||||||
|
Forward,
|
||||||
|
Backward,
|
||||||
|
Bothward,
|
||||||
|
Random,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TimeMode
|
||||||
|
{
|
||||||
|
Const,
|
||||||
|
Manual
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
49
EyeTrainerMain.h
Normal file
49
EyeTrainerMain.h
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#include "Defines.h"
|
||||||
|
#include "DisplayHelper.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
#include "LEDRunner.h"
|
||||||
|
|
||||||
|
|
||||||
|
class EyeTrainerMain
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================
|
||||||
|
//state
|
||||||
|
//==============================================================
|
||||||
|
|
||||||
|
DeviceMode m_deviceMode;
|
||||||
|
|
||||||
|
Settings m_Settings;
|
||||||
|
LEDRunner m_LEDRunner;
|
||||||
|
DisplayHelper m_DisplayHelper;
|
||||||
|
|
||||||
|
//==============================================================
|
||||||
|
//end of state
|
||||||
|
//==============================================================
|
||||||
|
|
||||||
|
EyeTrainerMain() { }
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
m_Settings = Settings();
|
||||||
|
m_LEDRunner = LEDRunner(m_Settings);
|
||||||
|
m_LEDRunner.setup();
|
||||||
|
m_DisplayHelper = DisplayHelper();
|
||||||
|
m_DisplayHelper.setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void runTest()
|
||||||
|
{
|
||||||
|
m_LEDRunner.runTest();
|
||||||
|
m_DisplayHelper.runTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
317
EyeTrainer_1.ino
317
EyeTrainer_1.ino
@@ -1,324 +1,17 @@
|
|||||||
/*
|
|
||||||
ShiftRegister74HC595 - Library for simplified control of 74HC595 shift registers.
|
|
||||||
Developed and maintained by Timo Denk and contributers, since Nov 2014.
|
|
||||||
Additional information is available at https://timodenk.com/blog/shift-register-arduino-library/
|
|
||||||
Released into the public domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <ShiftRegister74HC595.h>
|
#include "EyeTrainerMain.h"
|
||||||
#include <TM1637Display.h>
|
|
||||||
|
|
||||||
#define PIN_LED_GND_BUS 6
|
EyeTrainerMain m_EyeTrainerMain;
|
||||||
#define MAX_LED_INDEX 15
|
|
||||||
#define MAX_BRIGHTNESS 255.0
|
|
||||||
#define MIN_BRIGHTNESS 25.5
|
|
||||||
|
|
||||||
#define PIN_BTN_MAIN 9
|
|
||||||
#define PIN_BTN_UP 10
|
|
||||||
#define PIN_BTN_DOWN 11
|
|
||||||
|
|
||||||
#define PIN_DISPLAY_CLK 7
|
|
||||||
#define PIN_DISPLAY_DIO 8
|
|
||||||
|
|
||||||
#define BTN_DELAY
|
|
||||||
|
|
||||||
enum DeviceMode
|
|
||||||
{
|
|
||||||
IDLE,
|
|
||||||
SETTINGS_MODE,
|
|
||||||
SETTINGS_BRIGHTNESS,
|
|
||||||
SETTINGS_TIME,
|
|
||||||
RUN
|
|
||||||
};
|
|
||||||
|
|
||||||
enum RunMode
|
|
||||||
{
|
|
||||||
Forward,
|
|
||||||
Backward,
|
|
||||||
Bothward,
|
|
||||||
Random,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum TimeMode
|
|
||||||
{
|
|
||||||
Const,
|
|
||||||
Manual
|
|
||||||
};
|
|
||||||
|
|
||||||
//==============================================================
|
|
||||||
//state
|
|
||||||
//==============================================================
|
|
||||||
|
|
||||||
// create a global shift register object
|
|
||||||
// parameters: <number of shift registers> (data pin, clock pin, latch pin)
|
|
||||||
ShiftRegister74HC595<2> sr(5, 3, 4);
|
|
||||||
|
|
||||||
DeviceMode m_deviceMode;
|
|
||||||
RunMode m_RunMode;
|
|
||||||
TimeMode m_TimeMode;
|
|
||||||
|
|
||||||
float m_SwitchTime;
|
|
||||||
int m_CurrentLED;
|
|
||||||
|
|
||||||
|
|
||||||
//==============================================================
|
|
||||||
//end of state
|
|
||||||
//==============================================================
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
m_EyeTrainerMain = EyeTrainerMain();
|
||||||
pinMode(PIN_LED_GND_BUS, OUTPUT);
|
m_EyeTrainerMain.setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
|
m_EyeTrainerMain.runTest();
|
||||||
// // setting all pins at the same time to either HIGH or LOW
|
|
||||||
// sr.setAllHigh(); // set all pins HIGH
|
|
||||||
// delay(500);
|
|
||||||
|
|
||||||
analogWrite(PIN_LED_GND_BUS, 120);
|
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
|
||||||
delay(250); // wait for a second
|
|
||||||
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
|
||||||
delay(250); // wait for a second
|
|
||||||
}
|
|
||||||
|
|
||||||
sr.setAllHigh();
|
|
||||||
delay(500);
|
|
||||||
sr.setAllLow();
|
|
||||||
delay(500);
|
|
||||||
sr.setAllHigh();
|
|
||||||
delay(500);
|
|
||||||
sr.setAllLow();
|
|
||||||
delay(500);
|
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
|
||||||
delay(150); // wait for a second
|
|
||||||
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
|
||||||
delay(150); // wait for a second
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int j = 0; j < 4; j++)
|
|
||||||
{
|
|
||||||
// setting single pins
|
|
||||||
for (int i = 0; i < MAX_LED_INDEX; i++)
|
|
||||||
{
|
|
||||||
sr.set(i, HIGH);
|
|
||||||
delay(25);
|
|
||||||
sr.set(i, LOW);
|
|
||||||
}
|
|
||||||
// setting single pins
|
|
||||||
for (int i = MAX_LED_INDEX; i > 0; i--)
|
|
||||||
{
|
|
||||||
sr.set(i, HIGH);
|
|
||||||
delay(25);
|
|
||||||
sr.set(i, LOW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sr.set(0, HIGH);
|
|
||||||
delay(50);
|
|
||||||
|
|
||||||
for (int i = 0; i < MAX_LED_INDEX / 2; i++)
|
|
||||||
{
|
|
||||||
sr.set(i, HIGH);
|
|
||||||
sr.set(MAX_LED_INDEX - i, HIGH);
|
|
||||||
delay(150);
|
|
||||||
sr.set(i, LOW);
|
|
||||||
sr.set(MAX_LED_INDEX - i, LOW);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for(int j = 0; j < 5; j++)
|
|
||||||
{
|
|
||||||
for (int i = MAX_LED_INDEX / 2; i >= 0; i--)
|
|
||||||
{
|
|
||||||
sr.set(i, HIGH);
|
|
||||||
sr.set(MAX_LED_INDEX - i, HIGH);
|
|
||||||
delay(50);
|
|
||||||
sr.set(i, LOW);
|
|
||||||
sr.set(MAX_LED_INDEX - i, LOW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sr.setAllHigh(); // set all pins HIGH
|
|
||||||
|
|
||||||
for(int i = 10; i > 0; i--)
|
|
||||||
{
|
|
||||||
analogWrite(PIN_LED_GND_BUS, i * 25.5);
|
|
||||||
delay(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
delay(500);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================
|
|
||||||
//DISPLAY TEST!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
// // The amount of time (in milliseconds) between tests
|
|
||||||
// #define TEST_DELAY 2000
|
|
||||||
|
|
||||||
// const uint8_t SEG_DONE[] = {
|
|
||||||
// SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
|
|
||||||
// SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
|
|
||||||
// SEG_C | SEG_E | SEG_G, // n
|
|
||||||
// SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
|
|
||||||
// };
|
|
||||||
|
|
||||||
// TM1637Display display(DISPLAY_CLK, DISPLAY_DIO);
|
|
||||||
|
|
||||||
// int currentNum = 0;
|
|
||||||
|
|
||||||
// void setup()
|
|
||||||
// {
|
|
||||||
// pinMode(PIN_BTN_MAIN, INPUT);
|
|
||||||
// pinMode(PIN_BTN_UP, INPUT);
|
|
||||||
// pinMode(PIN_BTN_DOWN, INPUT);
|
|
||||||
// display.setBrightness(0x0f);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// void loop()
|
|
||||||
// {
|
|
||||||
// bool btnMainState = digitalRead(PIN_BTN_MAIN);
|
|
||||||
// bool btnUpState = digitalRead(PIN_BTN_UP);
|
|
||||||
// bool btnDownState = digitalRead(PIN_BTN_DOWN);
|
|
||||||
// int numChanged = currentNum;
|
|
||||||
|
|
||||||
// if(btnMainState == HIGH)
|
|
||||||
// {
|
|
||||||
// numChanged = 0;
|
|
||||||
// }
|
|
||||||
// else if (btnUpState == HIGH)
|
|
||||||
// {
|
|
||||||
// numChanged++;
|
|
||||||
// }
|
|
||||||
// else if (btnDownState == HIGH)
|
|
||||||
// {
|
|
||||||
// numChanged--;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(numChanged != currentNum)
|
|
||||||
// {
|
|
||||||
// currentNum = numChanged;
|
|
||||||
// display.clear();
|
|
||||||
// display.showNumberDec(currentNum, false);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return;
|
|
||||||
|
|
||||||
// int k;
|
|
||||||
// uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
|
|
||||||
// uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
|
|
||||||
// display.setBrightness(0x0f);
|
|
||||||
|
|
||||||
// // All segments on
|
|
||||||
// display.setSegments(data);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
// // Selectively set different digits
|
|
||||||
// data[0] = display.encodeDigit(0);
|
|
||||||
// data[1] = display.encodeDigit(1);
|
|
||||||
// data[2] = display.encodeDigit(2);
|
|
||||||
// data[3] = display.encodeDigit(3);
|
|
||||||
// display.setSegments(data);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
// /*
|
|
||||||
// for(k = 3; k >= 0; k--) {
|
|
||||||
// display.setSegments(data, 1, k);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// }
|
|
||||||
// */
|
|
||||||
|
|
||||||
// display.clear();
|
|
||||||
// display.setSegments(data+2, 2, 2);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
// display.clear();
|
|
||||||
// display.setSegments(data+2, 2, 1);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
// display.clear();
|
|
||||||
// display.setSegments(data+1, 3, 1);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
|
|
||||||
// // Show decimal numbers with/without leading zeros
|
|
||||||
// display.showNumberDec(0, false); // Expect: ___0
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(0, true); // Expect: 0000
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(1, false); // Expect: ___1
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(1, true); // Expect: 0001
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(301, false); // Expect: _301
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(301, true); // Expect: 0301
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.clear();
|
|
||||||
// display.showNumberDec(14, false, 2, 1); // Expect: _14_
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.clear();
|
|
||||||
// display.showNumberDec(4, true, 2, 2); // Expect: __04
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(-1, false); // Expect: __-1
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(-12); // Expect: _-12
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberDec(-999); // Expect: -999
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.clear();
|
|
||||||
// display.showNumberDec(-5, false, 3, 0); // Expect: _-5_
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberHexEx(0xf1af); // Expect: f1Af
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberHexEx(0x2c); // Expect: __2C
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.showNumberHexEx(0xd1, 0, true); // Expect: 00d1
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.clear();
|
|
||||||
// display.showNumberHexEx(0xd1, 0, true, 2); // Expect: d1__
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
|
|
||||||
// // Run through all the dots
|
|
||||||
// for(k=0; k <= 4; k++) {
|
|
||||||
// display.showNumberDecEx(0, (0x80 >> k), true);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Brightness Test
|
|
||||||
// for(k = 0; k < 4; k++)
|
|
||||||
// data[k] = 0xff;
|
|
||||||
// for(k = 0; k < 7; k++) {
|
|
||||||
// display.setBrightness(k);
|
|
||||||
// display.setSegments(data);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // On/Off test
|
|
||||||
// for(k = 0; k < 4; k++)
|
|
||||||
// {
|
|
||||||
// display.setBrightness(7, false); // Turn off
|
|
||||||
// display.setSegments(data);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// display.setBrightness(7, true); // Turn on
|
|
||||||
// display.setSegments(data);
|
|
||||||
// delay(TEST_DELAY);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Done!
|
|
||||||
// display.setSegments(SEG_DONE);
|
|
||||||
|
|
||||||
// while(1);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|||||||
122
LEDRunner.h
Normal file
122
LEDRunner.h
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
/*
|
||||||
|
ShiftRegister74HC595 - Library for simplified control of 74HC595 shift registers.
|
||||||
|
Developed and maintained by Timo Denk and contributers, since Nov 2014.
|
||||||
|
Additional information is available at https://timodenk.com/blog/shift-register-arduino-library/
|
||||||
|
Released into the public domain.
|
||||||
|
*/
|
||||||
|
#include "Defines.h"
|
||||||
|
#include <ShiftRegister74HC595.h>
|
||||||
|
|
||||||
|
class LEDRunner
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LEDRunner()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
LEDRunner(Settings _Settings)
|
||||||
|
{
|
||||||
|
m_Settings = _Settings;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(PIN_LED_GND_BUS, OUTPUT);
|
||||||
|
pinMode(PIN_LED_DATA, OUTPUT);
|
||||||
|
pinMode(PIN_LED_CLOCK, OUTPUT);
|
||||||
|
pinMode(PIN_LED_LATCH, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void runTest()
|
||||||
|
{
|
||||||
|
// // setting all pins at the same time to either HIGH or LOW
|
||||||
|
// sr.setAllHigh(); // set all pins HIGH
|
||||||
|
// delay(500);
|
||||||
|
|
||||||
|
analogWrite(PIN_LED_GND_BUS, 120);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
||||||
|
delay(250); // wait for a second
|
||||||
|
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
||||||
|
delay(250); // wait for a second
|
||||||
|
}
|
||||||
|
|
||||||
|
sr.setAllHigh();
|
||||||
|
delay(500);
|
||||||
|
sr.setAllLow();
|
||||||
|
delay(500);
|
||||||
|
sr.setAllHigh();
|
||||||
|
delay(500);
|
||||||
|
sr.setAllLow();
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
||||||
|
delay(150); // wait for a second
|
||||||
|
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
||||||
|
delay(150); // wait for a second
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int j = 0; j < 4; j++)
|
||||||
|
{
|
||||||
|
// setting single pins
|
||||||
|
for (int i = 0; i < MAX_LED_INDEX; i++)
|
||||||
|
{
|
||||||
|
sr.set(i, HIGH);
|
||||||
|
delay(25);
|
||||||
|
sr.set(i, LOW);
|
||||||
|
}
|
||||||
|
// setting single pins
|
||||||
|
for (int i = MAX_LED_INDEX; i > 0; i--)
|
||||||
|
{
|
||||||
|
sr.set(i, HIGH);
|
||||||
|
delay(25);
|
||||||
|
sr.set(i, LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sr.set(0, HIGH);
|
||||||
|
delay(50);
|
||||||
|
|
||||||
|
for (int i = 0; i < MAX_LED_INDEX / 2; i++)
|
||||||
|
{
|
||||||
|
sr.set(i, HIGH);
|
||||||
|
sr.set(MAX_LED_INDEX - i, HIGH);
|
||||||
|
delay(150);
|
||||||
|
sr.set(i, LOW);
|
||||||
|
sr.set(MAX_LED_INDEX - i, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for(int j = 0; j < 5; j++)
|
||||||
|
{
|
||||||
|
for (int i = MAX_LED_INDEX / 2; i >= 0; i--)
|
||||||
|
{
|
||||||
|
sr.set(i, HIGH);
|
||||||
|
sr.set(MAX_LED_INDEX - i, HIGH);
|
||||||
|
delay(50);
|
||||||
|
sr.set(i, LOW);
|
||||||
|
sr.set(MAX_LED_INDEX - i, LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sr.setAllHigh(); // set all pins HIGH
|
||||||
|
|
||||||
|
for(int i = 10; i > 0; i--)
|
||||||
|
{
|
||||||
|
analogWrite(PIN_LED_GND_BUS, i * 25.5);
|
||||||
|
delay(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Settings m_Settings;
|
||||||
|
ShiftRegister74HC595<REGISTER_SIZE> sr = ShiftRegister74HC595<REGISTER_SIZE>::ShiftRegister74HC595(PIN_LED_DATA, PIN_LED_CLOCK, PIN_LED_LATCH);
|
||||||
|
|
||||||
|
};
|
||||||
14
Settings.h
Normal file
14
Settings.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include "Defines.h"
|
||||||
|
#include "Enums.h"
|
||||||
|
|
||||||
|
class Settings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum RunMode m_RunMode = RunMode::Random;
|
||||||
|
enum TimeMode m_TimeMode = TimeMode::Const;
|
||||||
|
float SwitchTime = 3;
|
||||||
|
|
||||||
|
Settings()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user