Move all the LED things to a separate file, as mentioned in comments

This commit is contained in:
John Stäck 2019-07-27 00:42:27 +02:00
parent 3903ec7b98
commit 3ae4147d7e
7 changed files with 76 additions and 56 deletions

View file

@ -11,6 +11,7 @@
#include "menu.h" #include "menu.h"
#include "config.h" #include "config.h"
#include "settings.h" #include "settings.h"
#include "led.h"
/* /*
NAME: NuEVI NAME: NuEVI
@ -233,9 +234,6 @@ byte slurSustain = 0;
byte parallelChord = 0; byte parallelChord = 0;
byte subOctaveDouble = 0; byte subOctaveDouble = 0;
const int breathLedBrightness = 500; // up to 4095, PWM
const int portamLedBrightness = 500; // up to 4095, PWM
Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor Adafruit_MPR121 touchSensor = Adafruit_MPR121(); // This is the 12-input touch sensor
FilterOnePole breathFilter; FilterOnePole breathFilter;
@ -291,7 +289,7 @@ void setup() {
vibZero += touchRead(vibratoPin); vibZero += touchRead(vibratoPin);
breathCalZero += analogRead(breathSensorPin); breathCalZero += analogRead(breathSensorPin);
if (biteJumper) vibZeroBite += analogRead(A7); else vibZeroBite += touchRead(bitePin); if (biteJumper) vibZeroBite += analogRead(A7); else vibZeroBite += touchRead(bitePin);
digitalWrite( statusLedPin, i&1 ); statusLed(i&1);
delay(fastBoot?75:250); //Shorter delay for fastboot delay(fastBoot?75:250); //Shorter delay for fastboot
} }
@ -687,7 +685,7 @@ void loop() {
} else { } else {
if (slowMidi) breath(); if (slowMidi) breath();
extraController(); extraController();
statusLEDs(); updateSensorLEDs();
doorKnobCheck(); doorKnobCheck();
} }
ccSendTime = millis(); ccSendTime = millis();
@ -778,23 +776,6 @@ int patchLimit(int value) {
//************************************************************** //**************************************************************
void statusLEDs() {
if (breathLevel > breathThrVal) { // breath indicator LED, labeled "B" on PCB
//analogWrite(bLedPin, map(breathLevel,0,4096,5,breathLedBrightness));
analogWrite(bLedPin, map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, 5, breathLedBrightness));
} else {
analogWrite(bLedPin, 0);
}
if (portIsOn) { // portamento indicator LED, labeled "P" on PCB
//analogWrite(pLedPin, map(biteSensor,0,4096,5,portamLedBrightness));
analogWrite(pLedPin, map(constrain(oldport, 0, 127), 0, 127, 5, portamLedBrightness));
} else {
analogWrite(pLedPin, 0);
}
}
//**************************************************************
void breath() { void breath() {
int breathCCval, breathCCvalFine,breathCC2val; int breathCCval, breathCCvalFine,breathCC2val;
unsigned int breathCCvalHires; unsigned int breathCCvalHires;
@ -1170,24 +1151,3 @@ void readSwitches() {
} }
lastFingering = fingeredNoteRead; lastFingering = fingeredNoteRead;
} }
void statusLedOn() {
digitalWrite(statusLedPin, HIGH);
}
void statusLedOff() {
digitalWrite(statusLedPin, LOW);
}
void statusLedFlip() {
digitalWrite(statusLedPin, !digitalRead(statusLedPin));
}
void statusLedFlash(uint16_t delayTime) {
statusLedOff();
delay(delayTime/2);
statusLedOn();
delay(delayTime/2);
}

View file

@ -30,4 +30,9 @@
#define ttouchHiLimit 1900 #define ttouchHiLimit 1900
#define MIN_LED_BRIGHTNESS 5 // lowest PWM value that still is visible
#define BREATH_LED_BRIGHTNESS 500 // up to 4095, PWM
#define PORTAM_LED_BRIGHTNESS 500 // up to 4095, PWM
#endif #endif

View file

@ -116,6 +116,10 @@ extern int vibZeroBite;
extern int vibThrBite; extern int vibThrBite;
extern int vibThrBiteLo; extern int vibThrBiteLo;
extern int breathLevel;
extern byte portIsOn;
extern int oldport;
// Key variables, TRUE (1) for pressed, FALSE (0) for not pressed // Key variables, TRUE (1) for pressed, FALSE (0) for not pressed
extern byte K1; // Valve 1 (pitch change -2) extern byte K1; // Valve 1 (pitch change -2)
extern byte K2; // Valve 2 (pitch change -1) extern byte K2; // Valve 2 (pitch change -1)

48
NuEVI/led.cpp Normal file
View file

@ -0,0 +1,48 @@
#include <Arduino.h>
#include "hardware.h"
#include "globals.h"
#include "config.h"
// Do things with status LED.
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) {
statusLedOff();
delay(delayTime/2);
statusLedOn();
delay(delayTime/2);
}
void statusLedBlink() {
statusLedFlash(300);
statusLedFlash(300);
}
void updateSensorLEDs() {
if (breathLevel > breathThrVal) { // breath indicator LED, labeled "B" on PCB
//analogWrite(bLedPin, map(breathLevel,0,4096,5,breathLedBrightness));
analogWrite(bLedPin, map(constrain(breathLevel, breathThrVal, breathMaxVal), breathThrVal, breathMaxVal, MIN_LED_BRIGHTNESS, BREATH_LED_BRIGHTNESS));
} else {
analogWrite(bLedPin, 0);
}
if (portIsOn) { // portamento indicator LED, labeled "P" on PCB
//analogWrite(pLedPin, map(biteSensor,0,4096,5,portamLedBrightness));
analogWrite(pLedPin, map(constrain(oldport, 0, 127), 0, 127, MIN_LED_BRIGHTNESS, PORTAM_LED_BRIGHTNESS));
} else {
analogWrite(pLedPin, 0);
}
}

12
NuEVI/led.h Normal file
View file

@ -0,0 +1,12 @@
#ifndef __LED_H
#define __LED_H
void statusLedOn();
void statusLedOff();
void statusLedFlip();
void statusLed(bool state);
void statusLedFlash(uint16_t delayTime);
void statusLedBlink();
void updateSensorLEDs();
#endif

View file

@ -10,6 +10,7 @@
#include "globals.h" #include "globals.h"
#include "midi.h" #include "midi.h"
#include "numenu.h" #include "numenu.h"
#include "led.h"
enum CursorIdx { enum CursorIdx {
EMain, EMain,
@ -1228,17 +1229,6 @@ static bool updatePage(const MenuPage *page, KeyState &input, uint32_t timeNow)
return redraw; return redraw;
} }
//***********************************************************
// This should be moved to a separate file/process that handles only led
static void statusBlink() {
digitalWrite(statusLedPin,LOW);
delay(150);
digitalWrite(statusLedPin,HIGH);
delay(150);
digitalWrite(statusLedPin,LOW);
delay(150);
digitalWrite(statusLedPin,HIGH);
}
//*********************************************************** //***********************************************************
@ -1391,12 +1381,12 @@ static bool idlePageUpdate(KeyState& __unused input, uint32_t __unused timeNow)
legacyBrAct = !legacyBrAct; legacyBrAct = !legacyBrAct;
dipSwBits = dipSwBits ^ (1<<2); dipSwBits = dipSwBits ^ (1<<2);
writeSetting(DIPSW_BITS_ADDR,dipSwBits); writeSetting(DIPSW_BITS_ADDR,dipSwBits);
statusBlink(); statusLedBlink();
} else if ((exSensor >= ((extracThrVal+extracMaxVal)/2))) { // switch pb pad activated legacy settings control on/off } else if ((exSensor >= ((extracThrVal+extracMaxVal)/2))) { // switch pb pad activated legacy settings control on/off
legacy = !legacy; legacy = !legacy;
dipSwBits = dipSwBits ^ (1<<1); dipSwBits = dipSwBits ^ (1<<1);
writeSetting(DIPSW_BITS_ADDR,dipSwBits); writeSetting(DIPSW_BITS_ADDR,dipSwBits);
statusBlink(); statusLedBlink();
} else if (pinkyKey && !specialKey){ //hold pinky key for rotator menu, and if too high touch sensing blocks regular menu, touching special key helps } else if (pinkyKey && !specialKey){ //hold pinky key for rotator menu, and if too high touch sensing blocks regular menu, touching special key helps
display.ssd1306_command(SSD1306_DISPLAYON); display.ssd1306_command(SSD1306_DISPLAYON);
menuState= ROTATOR_MENU; menuState= ROTATOR_MENU;

View file

@ -30,6 +30,7 @@ CXXFILES= ../NuEVI/menu.cpp \
../NuEVI/adjustmenu.cpp \ ../NuEVI/adjustmenu.cpp \
../NuEVI/midi.cpp \ ../NuEVI/midi.cpp \
../NuEVI/settings.cpp \ ../NuEVI/settings.cpp \
../NuEVI/led.cpp \
src/nuevisim.cpp \ src/nuevisim.cpp \
src/simeeprom.cpp \ src/simeeprom.cpp \
src/Print.cpp \ src/Print.cpp \