xevi/NuEVI/src/led.cpp
2023-08-30 22:50:55 -05:00

83 lines
1.7 KiB
C++

#include <Arduino.h>
#include "hardware.h"
#include "globals.h"
#include "config.h"
void singleLED(int n, int color) {
}
// 0000 0001
// 0000 0010
// 0000 0011
// 0000 0100
// ...
// 0111 0000
// 0111 1111
// >> 4 == 0111
// 127 -> 255, 255, 255, 255, 255, 255, 255, 255
// 64 -> 255, 255, 255, 255, 0, 0, 0, 0
// 64 -> 255, 255, 255, 255, 0, 0, 0, 0
// 32 -> 255, 255, 0, 0, 0, 0, 0, 0
// 24 -> 255, 127, 0, 0, 0, 0, 0, 0
// 16 -> 255, 0, 0, 0, 0, 0, 0, 0
// 8 -> 127, 0, 0, 0, 0, 0, 0, 0
// 0 -> 0, 0, 0, 0, 0, 0, 0, 0
void ledFullMeter(byte indicatedValue, int color){
int scaledVal = indicatedValue;
ledStrip.setBrightness(1);
for (int i = 0; i < 8; i++) {
if (scaledVal > 0) {
ledStrip.setPixel(i, color);
} else {
ledStrip.setPixel(i, 0);
}
scaledVal -= 16;
}
ledStrip.show();
}
void ledHalfMeter(int n, byte indicatedValue, int color){
}
void ledQuarterMeter(int n, byte indicatedValue, int color){
}
void statusLedOn() {
digitalWrite(statusLedPin, HIGH);
}
void statusLedOff() {
digitalWrite(statusLedPin, LOW);
}
void statusLed(bool state) {
digitalWrite(statusLedPin, state);
}
void statusLedFlip() {
digitalWrite(statusLedPin, !digitalRead(statusLedPin));
}
void statusLedFlash(uint16_t delayTime) {
for (int i = 0; i < 8; i++) {
ledStrip.setPixel(i, 0x000400);
}
ledStrip.show();
statusLedOff();
delay(delayTime/2);
statusLedOn();
ledStrip.clear();
ledStrip.show();
delay(delayTime/2);
}
void statusLedBlink() {
statusLedFlash(300);
statusLedFlash(300);
}
void updateSensorLEDs(instrument_state_t &state) {
ledFullMeter(state.breathCCVal, 0x0000FF);
}