110 lines
1.6 KiB
C
110 lines
1.6 KiB
C
|
#include "alarm.h"
|
||
|
|
||
|
class LedController {
|
||
|
private:
|
||
|
int bluePin = 32;
|
||
|
int redPin = 33;
|
||
|
int greenPin = 25;
|
||
|
AlarmStatus* status;
|
||
|
|
||
|
void turnOn(int led){
|
||
|
digitalWrite(led, LED_ON_VAL);
|
||
|
}
|
||
|
|
||
|
void turnOff(int led){
|
||
|
digitalWrite(led, LED_OFF_VAL);
|
||
|
}
|
||
|
public:
|
||
|
static const int PIN_LED_BLUE = 32;
|
||
|
static const int PIN_LED_RED = 33;
|
||
|
static const int PIN_LED_GREEN = 25;
|
||
|
|
||
|
static const int LED_OFF_VAL = 0;
|
||
|
static const int LED_ON_VAL = 255;
|
||
|
|
||
|
LedController(AlarmStatus* statusObj){
|
||
|
Serial.println("const.");
|
||
|
status = statusObj;
|
||
|
}
|
||
|
void SetPins(int blueLedPin, int greenLedPin, int redLedPin){
|
||
|
bluePin = blueLedPin;
|
||
|
redPin = redLedPin;
|
||
|
greenPin = greenLedPin;
|
||
|
}
|
||
|
void Init(){
|
||
|
pinMode(bluePin, OUTPUT);
|
||
|
pinMode(redPin, OUTPUT);
|
||
|
pinMode(greenPin, OUTPUT);
|
||
|
}
|
||
|
|
||
|
void Off(){
|
||
|
turnOff(bluePin);
|
||
|
turnOff(redPin);
|
||
|
turnOff(greenPin);
|
||
|
}
|
||
|
|
||
|
void Red(){
|
||
|
turnOn(redPin);
|
||
|
turnOff(greenPin);
|
||
|
turnOff(bluePin);
|
||
|
}
|
||
|
|
||
|
void Green(){
|
||
|
turnOn(greenPin);
|
||
|
turnOff(redPin);
|
||
|
turnOff(bluePin);
|
||
|
}
|
||
|
|
||
|
void Yellow(){
|
||
|
turnOn(redPin);
|
||
|
turnOn(greenPin);
|
||
|
turnOff(bluePin);
|
||
|
}
|
||
|
|
||
|
void Blue(){
|
||
|
turnOn(bluePin);
|
||
|
turnOff(redPin);
|
||
|
turnOff(greenPin);
|
||
|
}
|
||
|
|
||
|
void Error(){
|
||
|
Red();
|
||
|
delay(100);
|
||
|
|
||
|
Off();
|
||
|
delay(100);
|
||
|
|
||
|
Red();
|
||
|
delay(100);
|
||
|
|
||
|
Off();
|
||
|
delay(100);
|
||
|
}
|
||
|
|
||
|
void Update(){
|
||
|
if(!status->ledOn)
|
||
|
{
|
||
|
Off();
|
||
|
return;
|
||
|
}
|
||
|
if(status->isFired)
|
||
|
{
|
||
|
Red();
|
||
|
return;
|
||
|
}
|
||
|
if(status->doorStatus==DOOR_OPEN)
|
||
|
{
|
||
|
Yellow();
|
||
|
return;
|
||
|
}
|
||
|
if(status->isArmed)
|
||
|
{
|
||
|
Blue();
|
||
|
return;
|
||
|
}
|
||
|
Green();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|