Added 3 out of 4 run modes. Generally speaking EyeTrainer is now functional.
This commit is contained in:
committed by
s.aydarov
parent
4d7d67e7b6
commit
20c25767bd
2
Enums.h
2
Enums.h
@@ -22,7 +22,7 @@ enum TimeMode
|
|||||||
{
|
{
|
||||||
CONST = 0,
|
CONST = 0,
|
||||||
MANUAL,
|
MANUAL,
|
||||||
INCREASING
|
DECREASING
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -52,15 +52,7 @@ public:
|
|||||||
unsigned long deltaTime = millis() - m_PrevTime;
|
unsigned long deltaTime = millis() - m_PrevTime;
|
||||||
m_PrevTime = millis();
|
m_PrevTime = millis();
|
||||||
|
|
||||||
// m_LEDRunner.update(deltaTime);
|
m_LEDRunner.update(deltaTime, m_Settings.SwitchTime, m_Settings.m_RunMode, m_Settings.m_TimeMode);
|
||||||
|
|
||||||
switch(m_Settings.m_RunMode)
|
|
||||||
{
|
|
||||||
case RunMode::FORWARD: m_LEDRunner.set(0, HIGH); break;
|
|
||||||
case RunMode::BACKWARD: m_LEDRunner.set(1, HIGH); break;
|
|
||||||
case RunMode::BOTH: m_LEDRunner.set(2, HIGH); break;
|
|
||||||
case RunMode::RANDOM: m_LEDRunner.set(3, HIGH); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void runTest()
|
void runTest()
|
||||||
@@ -105,6 +97,10 @@ private:
|
|||||||
m_DrawTitle = true;
|
m_DrawTitle = true;
|
||||||
m_deviceMode = static_cast<DeviceMode>(wrapInt(static_cast<int>(m_deviceMode) + 1, 5));
|
m_deviceMode = static_cast<DeviceMode>(wrapInt(static_cast<int>(m_deviceMode) + 1, 5));
|
||||||
UpdateModeDisplay();
|
UpdateModeDisplay();
|
||||||
|
if(m_deviceMode != DeviceMode::RUN)
|
||||||
|
{
|
||||||
|
m_LEDRunner.setRun(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateModeDisplay()
|
void UpdateModeDisplay()
|
||||||
@@ -173,28 +169,16 @@ private:
|
|||||||
int upDownHoldButtons = GetUpDownButtonsHold();
|
int upDownHoldButtons = GetUpDownButtonsHold();
|
||||||
if(upDownButtons != BTN_DOWN_UP_NO_SHORT_CLICKED)
|
if(upDownButtons != BTN_DOWN_UP_NO_SHORT_CLICKED)
|
||||||
{
|
{
|
||||||
m_LEDRunner.set(0, HIGH);
|
|
||||||
m_DrawTitle = false;
|
m_DrawTitle = false;
|
||||||
m_Settings.setSwitchTime(m_Settings.SwitchTime + upDownButtons * 50);
|
m_Settings.setSwitchTime(m_Settings.SwitchTime + upDownButtons * 50);
|
||||||
// m_Settings.setSwitchTime(m_Settings.SwitchTime);
|
|
||||||
UpdateModeDisplay();
|
UpdateModeDisplay();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
m_LEDRunner.set(0, LOW);
|
|
||||||
}
|
|
||||||
if(upDownHoldButtons != 0)
|
if(upDownHoldButtons != 0)
|
||||||
{
|
{
|
||||||
m_LEDRunner.set(1, HIGH);
|
|
||||||
m_DrawTitle = false;
|
m_DrawTitle = false;
|
||||||
m_Settings.setSwitchTime(m_Settings.SwitchTime + upDownHoldButtons * 50);
|
m_Settings.setSwitchTime(m_Settings.SwitchTime + upDownHoldButtons * 50);
|
||||||
// m_Settings.setSwitchTime(m_Settings.SwitchTime);
|
|
||||||
UpdateModeDisplay();
|
UpdateModeDisplay();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
m_LEDRunner.set(1, LOW);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessBrightness()
|
void ProcessBrightness()
|
||||||
|
|||||||
44
LEDRunner.h
44
LEDRunner.h
@@ -28,20 +28,31 @@ public:
|
|||||||
pinMode(PIN_LED_LATCH, OUTPUT);
|
pinMode(PIN_LED_LATCH, OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update(unsigned long _DeltaTime)
|
void nextLED(RunMode _RunMode)
|
||||||
|
{
|
||||||
|
switch(_RunMode)
|
||||||
|
{
|
||||||
|
case RunMode::FORWARD: m_CurrentLED = wrapInt(m_CurrentLED + 1, MAX_LED_INDEX + 1); break;
|
||||||
|
case RunMode::BACKWARD: m_CurrentLED = wrapInt(m_CurrentLED - 1, MAX_LED_INDEX + 1); break;
|
||||||
|
//TODO: ADD PING PONG
|
||||||
|
case RunMode::BOTH: m_CurrentLED = wrapInt(m_CurrentLED - 1, MAX_LED_INDEX + 1); break;
|
||||||
|
case RunMode::RANDOM: m_CurrentLED = random(0, MAX_LED_INDEX + 1); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void update(unsigned long _DeltaTime, int _SwitchTime, RunMode _RunMode, TimeMode _TimeMode)
|
||||||
{
|
{
|
||||||
if(!m_Run)
|
if(!m_Run)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_CurrentTime += _DeltaTime;
|
m_CurrentTime += _DeltaTime;
|
||||||
|
|
||||||
if((m_CurrentTime / 1000) % 2 != 0)
|
if(m_CurrentTime > _SwitchTime)
|
||||||
{
|
|
||||||
sr.setAllHigh();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
m_CurrentTime = 0;
|
||||||
|
nextLED(_RunMode);
|
||||||
sr.setAllLow();
|
sr.setAllLow();
|
||||||
|
sr.set(m_CurrentLED, HIGH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,6 +191,27 @@ public:
|
|||||||
Settings* m_Settings;
|
Settings* m_Settings;
|
||||||
bool m_Run = false;
|
bool m_Run = false;
|
||||||
unsigned long m_CurrentTime = 0;
|
unsigned long m_CurrentTime = 0;
|
||||||
|
int m_CurrentLED = 0;
|
||||||
ShiftRegister74HC595<REGISTER_SIZE> sr = ShiftRegister74HC595<REGISTER_SIZE>::ShiftRegister74HC595(PIN_LED_DATA, PIN_LED_CLOCK, PIN_LED_LATCH);
|
ShiftRegister74HC595<REGISTER_SIZE> sr = ShiftRegister74HC595<REGISTER_SIZE>::ShiftRegister74HC595(PIN_LED_DATA, PIN_LED_CLOCK, PIN_LED_LATCH);
|
||||||
|
|
||||||
|
int wrapInt(int _Num, int _Max)
|
||||||
|
{
|
||||||
|
if(_Num < 0)
|
||||||
|
{
|
||||||
|
return (_Max - _Num) % _Max;
|
||||||
|
}
|
||||||
|
if(_Num >= _Max)
|
||||||
|
{
|
||||||
|
return _Num % _Max;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _Num;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wrapInt(int _Num, int _Min, int _Max)
|
||||||
|
{
|
||||||
|
int num = _Num - _Min;
|
||||||
|
int max = _Max - _Min;
|
||||||
|
return wrapInt(num, max) + _Min;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user