diff --git a/EyeTrainer_1.ino b/EyeTrainer_1.ino index 95c2b6e..198f032 100644 --- a/EyeTrainer_1.ino +++ b/EyeTrainer_1.ino @@ -1,9 +1,324 @@ -void setup() { - // put your setup code here, to run once: +/* + 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 +#include + +#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 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: (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() +{ + pinMode(LED_BUILTIN, OUTPUT); + pinMode(PIN_LED_GND_BUS, OUTPUT); } -void loop() { - // put your main code here, to run repeatedly: +void loop() +{ + // // 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); +// } +