54 lines
972 B
C++
54 lines
972 B
C++
#include "NerfStatTrakConfig.h"
|
|
#include "Globals.h"
|
|
|
|
#include "StateHandler.h"
|
|
#include "StateDefault.h"
|
|
|
|
|
|
void setup()
|
|
{
|
|
// Configure display
|
|
display = new SegmentDisplay();
|
|
|
|
#ifdef SDUseSPI
|
|
display->setClockSpeed(NerfClockSpeed);
|
|
#else
|
|
display->setClockPin(NerfClockPin);
|
|
display->setDataPin(NerfDataPin);
|
|
#endif
|
|
|
|
display->setLatchPin(NerfLatchPin);
|
|
display->setDigits(NerfDigits);
|
|
display->begin();
|
|
|
|
|
|
// Configure buttons
|
|
buttonA = new Button();
|
|
buttonA->init(NerfButtonA);
|
|
|
|
buttonB = new Button();
|
|
buttonB->init(NerfButtonB);
|
|
|
|
buttonArmed = new Button();
|
|
buttonArmed->init(NerfButtonArmed, LOW);
|
|
|
|
|
|
setCurrentState(new DefaultState());
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
currentTime = millis();
|
|
|
|
buttonA->update(currentTime);
|
|
buttonB->update(currentTime);
|
|
buttonArmed->update(currentTime);
|
|
|
|
// Count the shot no matter which state we're in
|
|
if (buttonArmed->changed() && !buttonArmed->pressed())
|
|
shots++;
|
|
|
|
currentState->loop();
|
|
}
|