// Schwind RC
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte pipeOut_1[6] = "mod01";
const byte pipeOut_2[6] = "mod02";
const byte pipeOut_3[6] = "mod03";
RF24 radio(7, 8); // select CE,CSN pin
LiquidCrystal_I2C lcd(0x27, 16, 2);
int ch1_mix;
int ch3_mix;
int ch4_mix;
int ch5_mix;
int ch6_mix;
int mix_sum;
int pumpon = 5;
int pumpauto = 6;
int upButton = 11;
int downButton = 10;
int selectButton = 12;
int buzzer = 9;
int ch13rbutton = 32;
int ch13lbutton = 33;
int ch13button;
int ch14rbutton = 34;
int ch14lbutton = 35;
int ch14button;
int ch15rbutton = 36;
int ch15lbutton = 37;
int ch15button;
int ch16rbutton = 38;
int ch16lbutton = 39;
int ch16button;
unsigned long buzzertime = millis();
unsigned long buzzerrepeattime = millis();
unsigned long lastack = millis();
char screen = "000000";
char screennow = "999999";
int menu = 0;
int sub0 = 0;
int sub1 = 0;
int sub2 = 0;
int sub3 = 0;
int sub4 = 0;
float vout = 00.00;
float r1 = 100000;
float r2 = 10000;
int vval = 0;
float volt = 00.00;
float voltrx = 00.00;
int volttxlow = 0;
int voltrxlow = 0;
unsigned long backlighton;
int defaults;
int writerom = 0;
char* modelstate = "Offline";
bool tx_sent;
unsigned long fstime = millis();
struct settings {
int model;
int m1c1a;
int m2c1a;
int m3c1a;
int m1c1tr;
int m2c1tr;
int m3c1tr;
int m1c1tl;
int m2c1tl;
int m3c1tl;
bool m1c1r;
bool m2c1r;
bool m3c1r;
int m1c2a;
int m2c2a;
int m3c2a;
int m1c2tr;
int m2c2tr;
int m3c2tr;
int m1c2tl;
int m2c2tl;
int m3c2tl;
bool m1c2r;
bool m2c2r;
bool m3c2r;
int m1c3a;
int m2c3a;
int m3c3a;
int m1c3tr;
int m2c3tr;
int m3c3tr;
int m1c3tl;
int m2c3tl;
int m3c3tl;
bool m1c3r;
bool m2c3r;
bool m3c3r;
int m1c4a;
int m2c4a;
int m3c4a;
int m1c4tr;
int m2c4tr;
int m3c4tr;
int m1c4tl;
int m2c4tl;
int m3c4tl;
bool m1c4r;
bool m2c4r;
bool m3c4r;
int m1c5a;
int m2c5a;
int m3c5a;
int m1c5tr;
int m2c5tr;
int m3c5tr;
int m1c5tl;
int m2c5tl;
int m3c5tl;
bool m1c5r;
bool m2c5r;
bool m3c5r;
int m1c6a;
int m2c6a;
int m3c6a;
int m1c6tr;
int m2c6tr;
int m3c6tr;
int m1c6tl;
int m2c6tl;
int m3c6tl;
bool m1c6r;
bool m2c6r;
bool m3c6r;
int m1c7a;
int m2c7a;
int m3c7a;
int m1c7tr;
int m2c7tr;
int m3c7tr;
int m1c7tl;
int m2c7tl;
int m3c7tl;
bool m1c7r;
bool m2c7r;
bool m3c7r;
int m1c8a;
int m2c8a;
int m3c8a;
int m1c8tr;
int m2c8tr;
int m3c8tr;
int m1c8tl;
int m2c8tl;
int m3c8tl;
bool m1c8r;
bool m2c8r;
bool m3c8r;
int m1c9a;
int m2c9a;
int m3c9a;
int m1c9tr;
int m2c9tr;
int m3c9tr;
int m1c9tl;
int m2c9tl;
int m3c9tl;
bool m1c9r;
bool m2c9r;
bool m3c9r;
int m1c10a;
int m2c10a;
int m3c10a;
int m1c10tr;
int m2c10tr;
int m3c10tr;
int m1c10tl;
int m2c10tl;
int m3c10tl;
bool m1c10r;
bool m2c10r;
bool m3c10r;
int m1c11a;
int m2c11a;
int m3c11a;
int m1c11tr;
int m2c11tr;
int m3c11tr;
int m1c11tl;
int m2c11tl;
int m3c11tl;
bool m1c11r;
bool m2c11r;
bool m3c11r;
int m1c12a;
int m2c12a;
int m3c12a;
int m1c12tr;
int m2c12tr;
int m3c12tr;
int m1c12tl;
int m2c12tl;
int m3c12tl;
bool m1c12r;
bool m2c12r;
bool m3c12r;
int m1c13a;
int m2c13a;
int m3c13a;
int m1c13tr;
int m2c13tr;
int m3c13tr;
int m1c13tl;
int m2c13tl;
int m3c13tl;
bool m1c13r;
bool m2c13r;
bool m3c13r;
int m1c14a;
int m2c14a;
int m3c14a;
int m1c14tr;
int m2c14tr;
int m3c14tr;
int m1c14tl;
int m2c14tl;
int m3c14tl;
bool m1c14r;
bool m2c14r;
bool m3c14r;
int m1c15a;
int m2c15a;
int m3c15a;
int m1c15tr;
int m2c15tr;
int m3c15tr;
int m1c15tl;
int m2c15tl;
int m3c15tl;
bool m1c15r;
bool m2c15r;
bool m3c15r;
int m1c16a;
int m2c16a;
int m3c16a;
int m1c16tr;
int m2c16tr;
int m3c16tr;
int m1c16tl;
int m2c16tl;
int m3c16tl;
bool m1c16r;
bool m2c16r;
bool m3c16r;
int m1c1dz;
int m2c1dz;
int m3c1dz;
int m1c2dz;
int m2c2dz;
int m3c2dz;
int m1c3dz;
int m2c3dz;
int m3c3dz;
int m1c4dz;
int m2c4dz;
int m3c4dz;
int m1c5dz;
int m2c5dz;
int m3c5dz;
int m1c6dz;
int m2c6dz;
int m3c6dz;
int m1c7dz;
int m2c7dz;
int m3c7dz;
int m1c8dz;
int m2c8dz;
int m3c8dz;
int m1c9dz;
int m2c9dz;
int m3c9dz;
int m1c10dz;
int m2c10dz;
int m3c10dz;
int m1c11dz;
int m2c11dz;
int m3c11dz;
int m1c12dz;
int m2c12dz;
int m3c12dz;
int m1c13dz;
int m2c13dz;
int m3c13dz;
int m1c14dz;
int m2c14dz;
int m3c14dz;
int m1c15dz;
int m2c15dz;
int m3c15dz;
int m1c16dz;
int m2c16dz;
int m3c16dz;
float vtxw;
float vtxc;
float m1vrxw;
float m1vrxc;
float m2vrxw;
float m2vrxc;
float m3vrxw;
float m3vrxc;
};
settings data;
struct Signal {
byte ch1;
byte ch2;
byte ch3;
byte ch4;
byte ch5;
byte ch6;
byte ch7;
byte ch8;
byte ch9;
byte ch10;
byte ch11;
byte ch12;
byte ch13;
byte ch14;
byte ch15;
byte ch16;
bool fs;
};
Signal value;
void setup()
{
pinMode(pumpon, INPUT_PULLUP);
pinMode(pumpauto, INPUT_PULLUP);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
pinMode(ch13rbutton, INPUT_PULLUP);
pinMode(ch13lbutton, INPUT_PULLUP);
pinMode(ch14rbutton, INPUT_PULLUP);
pinMode(ch14lbutton, INPUT_PULLUP);
pinMode(ch15rbutton, INPUT_PULLUP);
pinMode(ch15lbutton, INPUT_PULLUP);
pinMode(ch16rbutton, INPUT_PULLUP);
pinMode(ch16lbutton, INPUT_PULLUP);
if(!digitalRead(upButton) && !digitalRead(downButton) && !digitalRead(selectButton)) {
setdefaults();
}
//Serial.begin(9600);
tone(buzzer, 2000);
delay(500);
noTone(buzzer);
EEPROM.get(0, defaults);
if(defaults != 123) {
setdefaults();
}
EEPROM.get(2, data);
lcd.init();
lcd.backlight();
lcd.print("Martin Schwind");
lcd.setCursor(0, 1);
lcd.print("Remote Control");
delay(3000);
light();
ResetData();
transmitter();
}
int mapJoystickValues(int val, int lower, int middle, int upper, bool reverse, int trimr, int triml, int dz)
{
val = constrain(val, lower, upper);
if (middle <= 0) {
middle = 512 - (4 * abs(middle));
}
else {
middle = 512 + (4 * middle);
}
if ( val < middle ){
middle = middle - (4 * dz);
if(val > middle) {
val = middle;
}
val = map(val, lower, middle, abs(triml), 128);
}
else
{
middle = middle + (4 * dz);
if (val < middle) {
val = middle;
}
val = map(val, middle, upper, 128, (255 - abs(trimr)));
}
return ( reverse ? 255 - val : val );
}
int pumpmix(int val_mix, int middle_mix)
{
if (val_mix < middle_mix)
val_mix = middle_mix - val_mix;
else
val_mix = val_mix - middle_mix;
return (val_mix);
}
void clearlcd() {
if(screen != screennow){
lcd.clear();
screennow = screen;
}
}
void light() {
lcd.backlight();
backlighton = millis();
}
void screensaver() {
menu = 0;
sub0 = 0;
sub1 = 0;
sub2 = 0;
sub3 = 0;
sub4 = 0;
}
void ResetData() {
value.ch1 = 127; // Center
value.ch2 = 127; // Center
value.ch3 = 127; // Center
value.ch4 = 127; // Center
value.ch5 = 127; // Center
value.ch6 = 0; // Motor Stop
value.ch7 = 127; // Center
value.ch8 = 127; // Center
value.ch9 = 127; // Center
value.ch10 = 127; // Center
value.ch11 = 127; // Center
value.ch12 = 127; //
value.ch13 = 127;
value.ch14 = 127;
value.ch15 = 127;
value.ch16 = 127;
voltrx = 00.00;
modelstate = "Offline";
}
void transmitter() {
radio.begin();
radio.setChannel(108);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.enableDynamicPayloads();
radio.enableAckPayload();
if(data.model == 1){
radio.openWritingPipe(pipeOut_1);
}
if(data.model == 2){
radio.openWritingPipe(pipeOut_2);
}
if(data.model == 3){
radio.openWritingPipe(pipeOut_3);
}
radio.stopListening();
}
void modifysettings(){
if(menu == 1 && sub0 == 0) {
screen = "100000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">Model");
lcd.setCursor(0, 1);
lcd.print(" CH1");
if(!digitalRead(downButton)) {
menu = 2;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 20;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub0 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 2 && sub1 == 0) {
screen = "200000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" Model");
lcd.setCursor(0, 1);
lcd.print(">CH1");
if(!digitalRead(downButton)) {
menu = 3;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 1;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 3 && sub1 == 0) {
screen = "300000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH2");
lcd.setCursor(0, 1);
lcd.print(" CH3");
if(!digitalRead(downButton)) {
menu = 4;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 2;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 4 && sub1 == 0) {
screen = "400000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH2");
lcd.setCursor(0, 1);
lcd.print(">CH3");
if(!digitalRead(downButton)) {
menu = 5;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 3;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 5 && sub1 == 0) {
screen = "500000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH4");
lcd.setCursor(0, 1);
lcd.print(" CH5");
if(!digitalRead(downButton)) {
menu = 6;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 4;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 6 && sub1 == 0) {
screen = "600000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH4");
lcd.setCursor(0, 1);
lcd.print(">CH5");
if(!digitalRead(downButton)) {
menu = 7;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 5;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 7 && sub1 == 0) {
screen = "700000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH6");
lcd.setCursor(0, 1);
lcd.print(" CH7");
if(!digitalRead(downButton)) {
menu = 8;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 6;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 8 && sub1 == 0) {
screen = "800000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH6");
lcd.setCursor(0, 1);
lcd.print(">CH7");
if(!digitalRead(downButton)) {
menu = 9;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 7;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 9 && sub1 == 0) {
screen = "900000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH8");
lcd.setCursor(0, 1);
lcd.print(" CH9");
if(!digitalRead(downButton)) {
menu = 10;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 8;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 10 && sub1 == 0) {
screen = "A00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH8");
lcd.setCursor(0, 1);
lcd.print(">CH9");
if(!digitalRead(downButton)) {
menu = 11;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 9;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 11 && sub1 == 0) {
screen = "B00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH10");
lcd.setCursor(0, 1);
lcd.print(" CH11");
if(!digitalRead(downButton)) {
menu = 12;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 10;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 12 && sub1 == 0) {
screen = "C00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH10");
lcd.setCursor(0, 1);
lcd.print(">CH11");
if(!digitalRead(downButton)) {
menu = 13;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 11;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 13 && sub1 == 0) {
screen = "D00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH12");
lcd.setCursor(0, 1);
lcd.print(" CH13");
if(!digitalRead(downButton)) {
menu = 14;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 12;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 14 && sub1 == 0) {
screen = "E00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH12");
lcd.setCursor(0, 1);
lcd.print(">CH13");
if(!digitalRead(downButton)) {
menu = 15;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 13;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 15 && sub1 == 0) {
screen = "F00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH14");
lcd.setCursor(0, 1);
lcd.print(" CH15");
if(!digitalRead(downButton)) {
menu = 16;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 14;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 16 && sub1 == 0) {
screen = "G00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH14");
lcd.setCursor(0, 1);
lcd.print(">CH15");
if(!digitalRead(downButton)) {
menu = 17;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 15;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 17 && sub1 == 0) {
screen = "H00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">CH16");
lcd.setCursor(0, 1);
lcd.print(" Battery Alarm");
if(!digitalRead(downButton)) {
menu = 18;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 16;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 1;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 18 && sub1 == 0) {
screen = "I00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" CH16");
lcd.setCursor(0, 1);
lcd.print(">Battery Alarm");
if(!digitalRead(downButton)) {
menu = 19;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 17;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
sub1 = 2;
light();
while(!digitalRead(selectButton));
}
}
if(menu == 19 && sub1 == 0) {
screen = "J00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(">FailSafe");
lcd.setCursor(0, 1);
lcd.print(" Cancle");
if(!digitalRead(downButton)) {
menu = 20;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 18;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
value.fs = true;
fstime = millis();
light();
screensaver();
while(!digitalRead(selectButton));
}
}
if(menu == 20 && sub1 == 0) {
screen = "J00000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print(" FailSafe");
lcd.setCursor(0, 1);
lcd.print(">Cancle");
if(!digitalRead(downButton)) {
menu = 1;
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
menu = 19;
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
light();
screensaver();
while(!digitalRead(selectButton));
}
}
if(menu == 1 && sub0 == 1) {
screen = "110000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Model:");
lcd.setCursor(0, 1);
lcd.print(data.model);
if(!digitalRead(downButton)) {
data.model = data.model - 1;
data.model = constrain(data.model, 1, 3);
light();
while(!digitalRead(downButton));
}
if(!digitalRead(upButton)) {
data.model = data.model + 1;
data.model = constrain(data.model, 1, 3);
light();
while(!digitalRead(upButton));
}
if(!digitalRead(selectButton)) {
light();
writerom = 1;
transmitter();
screensaver();
while(!digitalRead(selectButton));
}
}
if(sub1 == 1 && sub2 == 0) {
screen = "201000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Adjust:");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
switch (menu) {
case 2:
lcd.print(data.m1c1a);
break;
case 3:
lcd.print(data.m1c2a);
break;
case 4:
lcd.print(data.m1c3a);
break;
case 5:
lcd.print(data.m1c4a);
break;
case 6:
lcd.print(data.m1c5a);
break;
case 7:
lcd.print(data.m1c6a);
break;
case 8:
lcd.print(data.m1c7a);
break;
case 9:
lcd.print(data.m1c8a);
break;
case 10:
lcd.print(data.m1c9a);
break;
case 11:
lcd.print(data.m1c10a);
break;
case 12:
lcd.print(data.m1c11a);
break;
case 13:
lcd.print(data.m1c12a);
break;
case 14:
lcd.print(data.m1c13a);
break;
case 15:
lcd.print(data.m1c14a);
break;
case 16:
lcd.print(data.m1c15a);
break;
case 17:
lcd.print(data.m1c16a);
break;
}
break;
case 2:
switch (menu) {
case 2:
lcd.print(data.m2c1a);
break;
case 3:
lcd.print(data.m2c2a);
break;
case 4:
lcd.print(data.m2c3a);
break;
case 5:
lcd.print(data.m2c4a);
break;
case 6:
lcd.print(data.m2c5a);
break;
case 7:
lcd.print(data.m2c6a);
break;
case 8:
lcd.print(data.m2c7a);
break;
case 9:
lcd.print(data.m2c8a);
break;
case 10:
lcd.print(data.m2c9a);
break;
case 11:
lcd.print(data.m2c10a);
break;
case 12:
lcd.print(data.m2c11a);
break;
case 13:
lcd.print(data.m2c12a);
break;
case 14:
lcd.print(data.m2c13a);
break;
case 15:
lcd.print(data.m2c14a);
break;
case 16:
lcd.print(data.m2c15a);
break;
case 17:
lcd.print(data.m2c16a);
break;
}
break;
case 3:
switch (menu) {
case 2:
lcd.print(data.m3c1a);
break;
case 3:
lcd.print(data.m3c2a);
break;
case 4:
lcd.print(data.m3c3a);
break;
case 5:
lcd.print(data.m3c4a);
break;
case 6:
lcd.print(data.m3c5a);
break;
case 7:
lcd.print(data.m3c6a);
break;
case 8:
lcd.print(data.m3c7a);
break;
case 9:
lcd.print(data.m3c8a);
break;
case 10:
lcd.print(data.m3c9a);
break;
case 11:
lcd.print(data.m3c10a);
break;
case 12:
lcd.print(data.m3c11a);
break;
case 13:
lcd.print(data.m3c12a);
break;
case 14:
lcd.print(data.m3c13a);
break;
case 15:
lcd.print(data.m3c14a);
break;
case 16:
lcd.print(data.m3c15a);
break;
case 17:
lcd.print(data.m3c16a);
break;
}
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1a = data.m1c1a - 1;
data.m1c1a = constrain(data.m1c1a, -128, 127);
break;
case 3:
data.m1c2a = data.m1c2a - 1;
data.m1c2a = constrain(data.m1c2a, -128, 127);
break;
case 4:
data.m1c3a = data.m1c3a - 1;
data.m1c3a = constrain(data.m1c3a, -128, 127);
break;
case 5:
data.m1c4a = data.m1c4a - 1;
data.m1c4a = constrain(data.m1c4a, -128, 127);
break;
case 6:
data.m1c5a = data.m1c5a - 1;
data.m1c5a = constrain(data.m1c5a, -128, 127);
break;
case 7:
data.m1c6a = data.m1c6a - 1;
data.m1c6a = constrain(data.m1c6a, -128, 127);
break;
case 8:
data.m1c7a = data.m1c7a - 1;
data.m1c7a = constrain(data.m1c7a, -128, 127);
break;
case 9:
data.m1c8a = data.m1c8a - 1;
data.m1c8a = constrain(data.m1c8a, -128, 127);
break;
case 10:
data.m1c9a = data.m1c9a - 1;
data.m1c9a = constrain(data.m1c9a, -128, 127);
break;
case 11:
data.m1c10a = data.m1c10a - 1;
data.m1c10a = constrain(data.m1c10a, -128, 127);
break;
case 12:
data.m1c11a = data.m1c11a - 1;
data.m1c11a = constrain(data.m1c11a, -128, 127);
break;
case 13:
data.m1c12a = data.m1c12a - 1;
data.m1c12a = constrain(data.m1c12a, -128, 127);
break;
case 14:
data.m1c13a = data.m1c13a - 1;
data.m1c13a = constrain(data.m1c13a, -128, 127);
break;
case 15:
data.m1c14a = data.m1c14a - 1;
data.m1c14a = constrain(data.m1c14a, -128, 127);
break;
case 16:
data.m1c15a = data.m1c15a - 1;
data.m1c15a = constrain(data.m1c15a, -128, 127);
break;
case 17:
data.m1c16a = data.m1c16a - 1;
data.m1c16a = constrain(data.m1c16a, -128, 127);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1a = data.m2c1a - 1;
data.m2c1a = constrain(data.m2c1a, -128, 127);
break;
case 3:
data.m2c2a = data.m2c2a - 1;
data.m2c2a = constrain(data.m2c2a, -128, 127);
break;
case 4:
data.m2c3a = data.m2c3a - 1;
data.m2c3a = constrain(data.m2c3a, -128, 127);
break;
case 5:
data.m2c4a = data.m2c4a - 1;
data.m2c4a = constrain(data.m2c4a, -128, 127);
break;
case 6:
data.m2c5a = data.m2c5a - 1;
data.m2c5a = constrain(data.m2c5a, -128, 127);
break;
case 7:
data.m2c6a = data.m2c6a - 1;
data.m2c6a = constrain(data.m2c6a, -128, 127);
break;
case 8:
data.m2c7a = data.m2c7a - 1;
data.m2c7a = constrain(data.m2c7a, -128, 127);
break;
case 9:
data.m2c8a = data.m2c8a - 1;
data.m2c8a = constrain(data.m2c8a, -128, 127);
break;
case 10:
data.m2c9a = data.m2c9a - 1;
data.m2c9a = constrain(data.m2c9a, -128, 127);
break;
case 11:
data.m2c10a = data.m2c10a - 1;
data.m2c10a = constrain(data.m2c10a, -128, 127);
break;
case 12:
data.m2c11a = data.m2c11a - 1;
data.m2c11a = constrain(data.m2c11a, -128, 127);
break;
case 13:
data.m2c12a = data.m2c12a - 1;
data.m2c12a = constrain(data.m2c12a, -128, 127);
break;
case 14:
data.m2c13a = data.m2c13a - 1;
data.m2c13a = constrain(data.m2c13a, -128, 127);
break;
case 15:
data.m2c14a = data.m2c14a - 1;
data.m2c14a = constrain(data.m2c14a, -128, 127);
break;
case 16:
data.m2c15a = data.m2c15a - 1;
data.m2c15a = constrain(data.m2c15a, -128, 127);
break;
case 17:
data.m2c16a = data.m2c16a - 1;
data.m2c16a = constrain(data.m2c16a, -128, 127);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1a = data.m3c1a - 1;
data.m3c1a = constrain(data.m3c1a, -128, 127);
break;
case 3:
data.m3c2a = data.m3c2a - 1;
data.m3c2a = constrain(data.m3c2a, -128, 127);
break;
case 4:
data.m3c3a = data.m3c3a - 1;
data.m3c3a = constrain(data.m3c3a, -128, 127);
break;
case 5:
data.m3c4a = data.m3c4a - 1;
data.m3c4a = constrain(data.m3c4a, -128, 127);
break;
case 6:
data.m3c5a = data.m3c5a - 1;
data.m3c5a = constrain(data.m3c5a, -128, 127);
break;
case 7:
data.m3c6a = data.m3c6a - 1;
data.m3c6a = constrain(data.m3c6a, -128, 127);
break;
case 8:
data.m3c7a = data.m3c7a - 1;
data.m3c7a = constrain(data.m3c7a, -128, 127);
break;
case 9:
data.m3c8a = data.m3c8a - 1;
data.m3c8a = constrain(data.m3c8a, -128, 127);
break;
case 10:
data.m3c9a = data.m3c9a - 1;
data.m3c9a = constrain(data.m3c9a, -128, 127);
break;
case 11:
data.m3c10a = data.m3c10a - 1;
data.m3c10a = constrain(data.m3c10a, -128, 127);
break;
case 12:
data.m3c11a = data.m3c11a - 1;
data.m3c11a = constrain(data.m3c11a, -128, 127);
break;
case 13:
data.m3c12a = data.m3c12a - 1;
data.m3c12a = constrain(data.m3c12a, -128, 127);
break;
case 14:
data.m3c13a = data.m3c13a - 1;
data.m3c13a = constrain(data.m3c13a, -128, 127);
break;
case 15:
data.m3c14a = data.m3c14a - 1;
data.m3c14a = constrain(data.m3c14a, -128, 127);
break;
case 16:
data.m3c15a = data.m3c15a - 1;
data.m3c15a = constrain(data.m3c15a, -128, 127);
break;
case 17:
data.m3c16a = data.m3c16a - 1;
data.m3c16a = constrain(data.m3c16a, -128, 127);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1a = data.m1c1a + 1;
data.m1c1a = constrain(data.m1c1a, -128, 127);
break;
case 3:
data.m1c2a = data.m1c2a + 1;
data.m1c2a = constrain(data.m1c2a, -128, 127);
break;
case 4:
data.m1c3a = data.m1c3a + 1;
data.m1c3a = constrain(data.m1c3a, -128, 127);
break;
case 5:
data.m1c4a = data.m1c4a + 1;
data.m1c4a = constrain(data.m1c4a, -128, 127);
break;
case 6:
data.m1c5a = data.m1c5a + 1;
data.m1c5a = constrain(data.m1c5a, -128, 127);
break;
case 7:
data.m1c6a = data.m1c6a + 1;
data.m1c6a = constrain(data.m1c6a, -128, 127);
break;
case 8:
data.m1c7a = data.m1c7a + 1;
data.m1c7a = constrain(data.m1c7a, -128, 127);
break;
case 9:
data.m1c8a = data.m1c8a + 1;
data.m1c8a = constrain(data.m1c8a, -128, 127);
break;
case 10:
data.m1c9a = data.m1c9a + 1;
data.m1c9a = constrain(data.m1c9a, -128, 127);
break;
case 11:
data.m1c10a = data.m1c10a + 1;
data.m1c10a = constrain(data.m1c10a, -128, 127);
break;
case 12:
data.m1c11a = data.m1c11a + 1;
data.m1c11a = constrain(data.m1c11a, -128, 127);
break;
case 13:
data.m1c12a = data.m1c12a + 1;
data.m1c12a = constrain(data.m1c12a, -128, 127);
break;
case 14:
data.m1c13a = data.m1c13a + 1;
data.m1c13a = constrain(data.m1c13a, -128, 127);
break;
case 15:
data.m1c14a = data.m1c14a + 1;
data.m1c14a = constrain(data.m1c14a, -128, 127);
break;
case 16:
data.m1c15a = data.m1c15a + 1;
data.m1c15a = constrain(data.m1c15a, -128, 127);
break;
case 17:
data.m1c16a = data.m1c16a + 1;
data.m1c16a = constrain(data.m1c16a, -128, 127);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1a = data.m2c1a + 1;
data.m2c1a = constrain(data.m2c1a, -128, 127);
break;
case 3:
data.m2c2a = data.m2c2a + 1;
data.m2c2a = constrain(data.m2c2a, -128, 127);
break;
case 4:
data.m2c3a = data.m2c3a + 1;
data.m2c3a = constrain(data.m2c3a, -128, 127);
break;
case 5:
data.m2c4a = data.m2c4a + 1;
data.m2c4a = constrain(data.m2c4a, -128, 127);
break;
case 6:
data.m2c5a = data.m2c5a + 1;
data.m2c5a = constrain(data.m2c5a, -128, 127);
break;
case 7:
data.m2c6a = data.m2c6a + 1;
data.m2c6a = constrain(data.m2c6a, -128, 127);
break;
case 8:
data.m2c7a = data.m2c7a + 1;
data.m2c7a = constrain(data.m2c7a, -128, 127);
break;
case 9:
data.m2c8a = data.m2c8a + 1;
data.m2c8a = constrain(data.m2c8a, -128, 127);
break;
case 10:
data.m2c9a = data.m2c9a + 1;
data.m2c9a = constrain(data.m2c9a, -128, 127);
break;
case 11:
data.m2c10a = data.m2c10a + 1;
data.m2c10a = constrain(data.m2c10a, -128, 127);
break;
case 12:
data.m2c11a = data.m2c11a + 1;
data.m2c11a = constrain(data.m2c11a, -128, 127);
break;
case 13:
data.m2c12a = data.m2c12a + 1;
data.m2c12a = constrain(data.m2c12a, -128, 127);
break;
case 14:
data.m2c13a = data.m2c13a + 1;
data.m2c13a = constrain(data.m2c13a, -128, 127);
break;
case 15:
data.m2c14a = data.m2c14a + 1;
data.m2c14a = constrain(data.m2c14a, -128, 127);
break;
case 16:
data.m2c15a = data.m2c15a + 1;
data.m2c15a = constrain(data.m2c15a, -128, 127);
break;
case 17:
data.m2c16a = data.m2c16a + 1;
data.m2c16a = constrain(data.m2c16a, -128, 127);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1a = data.m3c1a + 1;
data.m3c1a = constrain(data.m3c1a, -128, 127);
break;
case 3:
data.m3c2a = data.m3c2a + 1;
data.m3c2a = constrain(data.m3c2a, -128, 127);
break;
case 4:
data.m3c3a = data.m3c3a + 1;
data.m3c3a = constrain(data.m3c3a, -128, 127);
break;
case 5:
data.m3c4a = data.m3c4a + 1;
data.m3c4a = constrain(data.m3c4a, -128, 127);
break;
case 6:
data.m3c5a = data.m3c5a + 1;
data.m3c5a = constrain(data.m3c5a, -128, 127);
break;
case 7:
data.m3c6a = data.m3c6a + 1;
data.m3c6a = constrain(data.m3c6a, -128, 127);
break;
case 8:
data.m3c7a = data.m3c7a + 1;
data.m3c7a = constrain(data.m3c7a, -128, 127);
break;
case 9:
data.m3c8a = data.m3c8a + 1;
data.m3c8a = constrain(data.m3c8a, -128, 127);
break;
case 10:
data.m3c9a = data.m3c9a + 1;
data.m3c9a = constrain(data.m3c9a, -128, 127);
break;
case 11:
data.m3c10a = data.m3c10a + 1;
data.m3c10a = constrain(data.m3c10a, -128, 127);
break;
case 12:
data.m3c11a = data.m3c11a + 1;
data.m3c11a = constrain(data.m3c11a, -128, 127);
break;
case 13:
data.m3c12a = data.m3c12a + 1;
data.m3c12a = constrain(data.m3c12a, -128, 127);
break;
case 14:
data.m3c13a = data.m3c13a + 1;
data.m3c13a = constrain(data.m3c13a, -128, 127);
break;
case 15:
data.m3c14a = data.m3c14a + 1;
data.m3c14a = constrain(data.m3c14a, -128, 127);
break;
case 16:
data.m3c15a = data.m3c15a + 1;
data.m3c15a = constrain(data.m3c15a, -128, 127);
break;
case 17:
data.m3c16a = data.m3c16a + 1;
data.m3c16a = constrain(data.m3c16a, -128, 127);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
lcd.setCursor(0, 1);
lcd.print(" ");
light();
sub2 = 1;
while(!digitalRead(selectButton));
}
}
if(sub1 == 1 && sub2 == 1 && sub3 == 0) {
screen = "201100";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Trimm R:");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
switch (menu) {
case 2:
lcd.print(data.m1c1tr);
break;
case 3:
lcd.print(data.m1c2tr);
break;
case 4:
lcd.print(data.m1c3tr);
break;
case 5:
lcd.print(data.m1c4tr);
break;
case 6:
lcd.print(data.m1c5tr);
break;
case 7:
lcd.print(data.m1c6tr);
break;
case 8:
lcd.print(data.m1c7tr);
break;
case 9:
lcd.print(data.m1c8tr);
break;
case 10:
lcd.print(data.m1c9tr);
break;
case 11:
lcd.print(data.m1c10tr);
break;
case 12:
lcd.print(data.m1c11tr);
break;
case 13:
lcd.print(data.m1c12tr);
break;
case 14:
lcd.print(data.m1c13tr);
break;
case 15:
lcd.print(data.m1c13tr);
break;
case 16:
lcd.print(data.m1c15tr);
break;
case 17:
lcd.print(data.m1c16tr);
break;
}
break;
case 2:
switch (menu) {
case 2:
lcd.print(data.m2c1tr);
break;
case 3:
lcd.print(data.m2c2tr);
break;
case 4:
lcd.print(data.m2c3tr);
break;
case 5:
lcd.print(data.m2c4tr);
break;
case 6:
lcd.print(data.m2c5tr);
break;
case 7:
lcd.print(data.m2c6tr);
break;
case 8:
lcd.print(data.m2c7tr);
break;
case 9:
lcd.print(data.m2c8tr);
break;
case 10:
lcd.print(data.m2c9tr);
break;
case 11:
lcd.print(data.m2c10tr);
break;
case 12:
lcd.print(data.m2c11tr);
break;
case 13:
lcd.print(data.m2c12tr);
break;
case 14:
lcd.print(data.m2c13tr);
break;
case 15:
lcd.print(data.m2c14tr);
break;
case 16:
lcd.print(data.m2c15tr);
break;
case 17:
lcd.print(data.m2c16tr);
break;
}
break;
case 3:
switch (menu) {
case 2:
lcd.print(data.m3c1tr);
break;
case 3:
lcd.print(data.m3c2tr);
break;
case 4:
lcd.print(data.m3c3tr);
break;
case 5:
lcd.print(data.m3c4tr);
break;
case 6:
lcd.print(data.m3c5tr);
break;
case 7:
lcd.print(data.m3c6tr);
break;
case 8:
lcd.print(data.m3c7tr);
break;
case 9:
lcd.print(data.m3c8tr);
break;
case 10:
lcd.print(data.m3c9tr);
break;
case 11:
lcd.print(data.m3c10tr);
break;
case 12:
lcd.print(data.m3c11tr);
break;
case 13:
lcd.print(data.m3c12tr);
break;
case 14:
lcd.print(data.m3c13tr);
break;
case 15:
lcd.print(data.m3c14tr);
break;
case 16:
lcd.print(data.m3c15tr);
break;
case 17:
lcd.print(data.m3c16tr);
break;
}
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1tr = data.m1c1tr - 1;
data.m1c1tr = constrain(data.m1c1tr, -128, 0);
break;
case 3:
data.m1c2tr = data.m1c2tr - 1;
data.m1c2tr = constrain(data.m1c2tr, -128, 0);
break;
case 4:
data.m1c3tr = data.m1c3tr - 1;
data.m1c3tr = constrain(data.m1c3tr, -128, 0);
break;
case 5:
data.m1c4tr = data.m1c4tr - 1;
data.m1c4tr = constrain(data.m1c4tr, -128, 0);
break;
case 6:
data.m1c5tr = data.m1c5tr - 1;
data.m1c5tr = constrain(data.m1c5tr, -128, 0);
break;
case 7:
data.m1c6tr = data.m1c6tr - 1;
data.m1c6tr = constrain(data.m1c6tr, -128, 0);
break;
case 8:
data.m1c7tr = data.m1c7tr - 1;
data.m1c7tr = constrain(data.m1c7tr, -128, 0);
break;
case 9:
data.m1c8tr = data.m1c8tr - 1;
data.m1c8tr = constrain(data.m1c8tr, -128, 0);
break;
case 10:
data.m1c9tr = data.m1c9tr - 1;
data.m1c9tr = constrain(data.m1c9tr, -128, 0);
break;
case 11:
data.m1c10tr = data.m1c10tr - 1;
data.m1c10tr = constrain(data.m1c10tr, -128, 0);
break;
case 12:
data.m1c11tr = data.m1c11tr - 1;
data.m1c11tr = constrain(data.m1c11tr, -128, 0);
break;
case 13:
data.m1c12tr = data.m1c12tr - 1;
data.m1c12tr = constrain(data.m1c12tr, -128, 0);
break;
case 14:
data.m1c13tr = data.m1c13tr - 1;
data.m1c13tr = constrain(data.m1c13tr, -128, 0);
break;
case 15:
data.m1c14tr = data.m1c14tr - 1;
data.m1c14tr = constrain(data.m1c14tr, -128, 0);
break;
case 16:
data.m1c15tr = data.m1c15tr - 1;
data.m1c15tr = constrain(data.m1c15tr, -128, 0);
break;
case 17:
data.m1c16tr = data.m1c16tr - 1;
data.m1c16tr = constrain(data.m1c16tr, -128, 0);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1tr = data.m2c1tr - 1;
data.m2c1tr = constrain(data.m2c1tr, -128, 0);
break;
case 3:
data.m2c2tr = data.m2c2tr - 1;
data.m2c2tr = constrain(data.m2c2tr, -128, 0);
break;
case 4:
data.m2c3tr = data.m2c3tr - 1;
data.m2c3tr = constrain(data.m2c3tr, -128, 0);
break;
case 5:
data.m2c4tr = data.m2c4tr - 1;
data.m2c4tr = constrain(data.m2c4tr, -128, 0);
break;
case 6:
data.m2c5tr = data.m2c5tr - 1;
data.m2c5tr = constrain(data.m2c5tr, -128, 0);
break;
case 7:
data.m2c6tr = data.m2c6tr - 1;
data.m2c6tr = constrain(data.m2c6tr, -128, 0);
break;
case 8:
data.m2c7tr = data.m2c7tr - 1;
data.m2c7tr = constrain(data.m2c7tr, -128, 0);
break;
case 9:
data.m2c8tr = data.m2c8tr - 1;
data.m2c8tr = constrain(data.m2c8tr, -128, 0);
break;
case 10:
data.m2c9tr = data.m2c9tr - 1;
data.m2c9tr = constrain(data.m2c9tr, -128, 0);
break;
case 11:
data.m2c10tr = data.m2c10tr - 1;
data.m2c10tr = constrain(data.m2c10tr, -128, 0);
break;
case 12:
data.m2c11tr = data.m2c11tr - 1;
data.m2c11tr = constrain(data.m2c11tr, -128, 0);
break;
case 13:
data.m2c12tr = data.m2c12tr - 1;
data.m2c12tr = constrain(data.m2c12tr, -128, 0);
break;
case 14:
data.m2c13tr = data.m2c13tr - 1;
data.m2c13tr = constrain(data.m2c13tr, -128, 0);
break;
case 15:
data.m2c14tr = data.m2c14tr - 1;
data.m2c14tr = constrain(data.m2c14tr, -128, 0);
break;
case 16:
data.m2c15tr = data.m2c15tr - 1;
data.m2c15tr = constrain(data.m2c15tr, -128, 0);
break;
case 17:
data.m2c16tr = data.m2c16tr - 1;
data.m2c16tr = constrain(data.m2c16tr, -128, 0);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1tr = data.m3c1tr - 1;
data.m3c1tr = constrain(data.m3c1tr, -128, 0);
break;
case 3:
data.m3c2tr = data.m3c2tr - 1;
data.m3c2tr = constrain(data.m3c2tr, -128, 0);
break;
case 4:
data.m3c3tr = data.m3c3tr - 1;
data.m3c3tr = constrain(data.m3c3tr, -128, 0);
break;
case 5:
data.m3c4tr = data.m3c4tr - 1;
data.m3c4tr = constrain(data.m3c4tr, -128, 0);
break;
case 6:
data.m3c5tr = data.m3c5tr - 1;
data.m3c5tr = constrain(data.m3c5tr, -128, 0);
break;
case 7:
data.m3c6tr = data.m3c6tr - 1;
data.m3c6tr = constrain(data.m3c6tr, -128, 0);
break;
case 8:
data.m3c7tr = data.m3c7tr - 1;
data.m3c7tr = constrain(data.m3c7tr, -128, 0);
break;
case 9:
data.m3c8tr = data.m3c8tr - 1;
data.m3c8tr = constrain(data.m3c8tr, -128, 0);
break;
case 10:
data.m3c9tr = data.m3c9tr - 1;
data.m3c9tr = constrain(data.m3c9tr, -128, 0);
break;
case 11:
data.m3c10tr = data.m3c10tr - 1;
data.m3c10tr = constrain(data.m3c10tr, -128, 0);
break;
case 12:
data.m3c11tr = data.m3c11tr - 1;
data.m3c11tr = constrain(data.m3c11tr, -128, 0);
break;
case 13:
data.m3c12tr = data.m3c12tr - 1;
data.m3c12tr = constrain(data.m3c12tr, -128, 0);
break;
case 14:
data.m3c13tr = data.m3c13tr - 1;
data.m3c13tr = constrain(data.m3c13tr, -128, 0);
break;
case 15:
data.m3c14tr = data.m3c14tr - 1;
data.m3c14tr = constrain(data.m3c14tr, -128, 0);
break;
case 16:
data.m3c15tr = data.m3c15tr - 1;
data.m3c15tr = constrain(data.m3c15tr, -128, 0);
break;
case 17:
data.m3c16tr = data.m3c16tr - 1;
data.m3c16tr = constrain(data.m3c16tr, -128, 0);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1tr = data.m1c1tr + 1;
data.m1c1tr = constrain(data.m1c1tr, -128, 0);
break;
case 3:
data.m1c2tr = data.m1c2tr + 1;
data.m1c2tr = constrain(data.m1c2tr, -128, 0);
break;
case 4:
data.m1c3tr = data.m1c3tr + 1;
data.m1c3tr = constrain(data.m1c3tr, -128, 0);
break;
case 5:
data.m1c4tr = data.m1c4tr + 1;
data.m1c4tr = constrain(data.m1c4tr, -128, 0);
break;
case 6:
data.m1c5tr = data.m1c5tr + 1;
data.m1c5tr = constrain(data.m1c5tr, -128, 0);
break;
case 7:
data.m1c6tr = data.m1c6tr + 1;
data.m1c6tr = constrain(data.m1c6tr, -128, 0);
break;
case 8:
data.m1c7tr = data.m1c7tr + 1;
data.m1c7tr = constrain(data.m1c7tr, -128, 0);
break;
case 9:
data.m1c8tr = data.m1c8tr + 1;
data.m1c8tr = constrain(data.m1c8tr, -128, 0);
break;
case 10:
data.m1c9tr = data.m1c9tr + 1;
data.m1c9tr = constrain(data.m1c9tr, -128, 0);
break;
case 11:
data.m1c10tr = data.m1c10tr + 1;
data.m1c10tr = constrain(data.m1c10tr, -128, 0);
break;
case 12:
data.m1c11tr = data.m1c11tr + 1;
data.m1c11tr = constrain(data.m1c11tr, -128, 0);
break;
case 13:
data.m1c12tr = data.m1c12tr + 1;
data.m1c12tr = constrain(data.m1c12tr, -128, 0);
break;
case 14:
data.m1c13tr = data.m1c13tr + 1;
data.m1c13tr = constrain(data.m1c13tr, -128, 0);
break;
case 15:
data.m1c14tr = data.m1c14tr + 1;
data.m1c14tr = constrain(data.m1c14tr, -128, 0);
break;
case 16:
data.m1c15tr = data.m1c15tr + 1;
data.m1c15tr = constrain(data.m1c15tr, -128, 0);
break;
case 17:
data.m1c16tr = data.m1c16tr + 1;
data.m1c16tr = constrain(data.m1c16tr, -128, 0);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1tr = data.m2c1tr + 1;
data.m2c1tr = constrain(data.m2c1tr, -128, 0);
break;
case 3:
data.m2c2tr = data.m2c2tr + 1;
data.m2c2tr = constrain(data.m2c2tr, -128, 0);
break;
case 4:
data.m2c3tr = data.m2c3tr + 1;
data.m2c3tr = constrain(data.m2c3tr, -128, 0);
break;
case 5:
data.m2c4tr = data.m2c4tr + 1;
data.m2c4tr = constrain(data.m2c4tr, -128, 0);
break;
case 6:
data.m2c5tr = data.m2c5tr + 1;
data.m2c5tr = constrain(data.m2c5tr, -128, 0);
break;
case 7:
data.m2c6tr = data.m2c6tr + 1;
data.m2c6tr = constrain(data.m2c6tr, -128, 0);
break;
case 8:
data.m2c7tr = data.m2c7tr + 1;
data.m2c7tr = constrain(data.m2c7tr, -128, 0);
break;
case 9:
data.m2c8tr = data.m2c8tr + 1;
data.m2c8tr = constrain(data.m2c8tr, -128, 0);
break;
case 10:
data.m2c9tr = data.m2c9tr + 1;
data.m2c9tr = constrain(data.m2c9tr, -128, 0);
break;
case 11:
data.m2c10tr = data.m2c10tr + 1;
data.m2c10tr = constrain(data.m2c10tr, -128, 0);
break;
case 12:
data.m2c11tr = data.m2c11tr + 1;
data.m2c11tr = constrain(data.m2c11tr, -128, 0);
break;
case 13:
data.m2c12tr = data.m2c12tr + 1;
data.m2c12tr = constrain(data.m2c12tr, -128, 0);
break;
case 14:
data.m2c13tr = data.m2c13tr + 1;
data.m2c13tr = constrain(data.m2c13tr, -128, 0);
break;
case 15:
data.m2c14tr = data.m2c14tr + 1;
data.m2c14tr = constrain(data.m2c14tr, -128, 0);
break;
case 16:
data.m2c15tr = data.m2c15tr + 1;
data.m2c15tr = constrain(data.m2c15tr, -128, 0);
break;
case 17:
data.m2c16tr = data.m2c16tr + 1;
data.m2c16tr = constrain(data.m2c16tr, -128, 0);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1tr = data.m3c1tr + 1;
data.m3c1tr = constrain(data.m3c1tr, -128, 0);
break;
case 3:
data.m3c2tr = data.m3c2tr + 1;
data.m3c2tr = constrain(data.m3c2tr, -128, 0);
break;
case 4:
data.m3c3tr = data.m3c3tr + 1;
data.m3c3tr = constrain(data.m3c3tr, -128, 0);
break;
case 5:
data.m3c4tr = data.m3c4tr + 1;
data.m3c4tr = constrain(data.m3c4tr, -128, 0);
break;
case 6:
data.m3c5tr = data.m3c5tr + 1;
data.m3c5tr = constrain(data.m3c5tr, -128, 0);
break;
case 7:
data.m3c6tr = data.m3c6tr + 1;
data.m3c6tr = constrain(data.m3c6tr, -128, 0);
break;
case 8:
data.m3c7tr = data.m3c7tr + 1;
data.m3c7tr = constrain(data.m3c7tr, -128, 0);
break;
case 9:
data.m3c8tr = data.m3c8tr + 1;
data.m3c8tr = constrain(data.m3c8tr, -128, 0);
break;
case 10:
data.m3c9tr = data.m3c9tr + 1;
data.m3c9tr = constrain(data.m3c9tr, -128, 0);
break;
case 11:
data.m3c10tr = data.m3c10tr + 1;
data.m3c10tr = constrain(data.m3c10tr, -128, 0);
break;
case 12:
data.m3c11tr = data.m3c11tr + 1;
data.m3c11tr = constrain(data.m3c11tr, -128, 0);
break;
case 13:
data.m3c12tr = data.m3c12tr + 1;
data.m3c12tr = constrain(data.m3c12tr, -128, 0);
break;
case 14:
data.m3c13tr = data.m3c13tr + 1;
data.m3c13tr = constrain(data.m3c13tr, -128, 0);
break;
case 15:
data.m3c14tr = data.m3c14tr + 1;
data.m3c14tr = constrain(data.m3c14tr, -128, 0);
break;
case 16:
data.m3c15tr = data.m3c15tr + 1;
data.m3c15tr = constrain(data.m3c15tr, -128, 0);
break;
case 17:
data.m3c16tr = data.m3c16tr + 1;
data.m3c16tr = constrain(data.m3c16tr, -128, 0);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
lcd.setCursor(0, 1);
lcd.print(" ");
light();
sub3 = 1;
while(!digitalRead(selectButton));
}
}
if(sub1 == 1 && sub2 == 1 && sub3 == 1 && sub4 == 0) {
screen = "201110";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Trimm L:");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
switch (menu) {
case 2:
lcd.print(data.m1c1tl);
break;
case 3:
lcd.print(data.m1c2tl);
break;
case 4:
lcd.print(data.m1c3tl);
break;
case 5:
lcd.print(data.m1c4tl);
break;
case 6:
lcd.print(data.m1c5tl);
break;
case 7:
lcd.print(data.m1c6tl);
break;
case 8:
lcd.print(data.m1c7tl);
break;
case 9:
lcd.print(data.m1c8tl);
break;
case 10:
lcd.print(data.m1c9tl);
break;
case 11:
lcd.print(data.m1c10tl);
break;
case 12:
lcd.print(data.m1c11tl);
break;
case 13:
lcd.print(data.m1c12tl);
break;
case 14:
lcd.print(data.m1c13tl);
break;
case 15:
lcd.print(data.m1c14tl);
break;
case 16:
lcd.print(data.m1c15tl);
break;
case 17:
lcd.print(data.m1c16tl);
break;
}
break;
case 2:
switch (menu) {
case 2:
lcd.print(data.m2c1tl);
break;
case 3:
lcd.print(data.m2c2tl);
break;
case 4:
lcd.print(data.m2c3tl);
break;
case 5:
lcd.print(data.m2c4tl);
break;
case 6:
lcd.print(data.m2c5tl);
break;
case 7:
lcd.print(data.m2c6tl);
break;
case 8:
lcd.print(data.m2c7tl);
break;
case 9:
lcd.print(data.m2c8tl);
break;
case 10:
lcd.print(data.m2c9tl);
break;
case 11:
lcd.print(data.m2c10tl);
break;
case 12:
lcd.print(data.m2c11tl);
break;
case 13:
lcd.print(data.m2c12tl);
break;
case 14:
lcd.print(data.m2c13tl);
break;
case 15:
lcd.print(data.m2c14tl);
break;
case 16:
lcd.print(data.m2c15tl);
break;
case 17:
lcd.print(data.m2c16tl);
break;
}
break;
case 3:
switch (menu) {
case 2:
lcd.print(data.m3c1tl);
break;
case 3:
lcd.print(data.m3c2tl);
break;
case 4:
lcd.print(data.m3c3tl);
break;
case 5:
lcd.print(data.m3c4tl);
break;
case 6:
lcd.print(data.m3c5tl);
break;
case 7:
lcd.print(data.m3c6tl);
break;
case 8:
lcd.print(data.m3c7tl);
break;
case 9:
lcd.print(data.m3c8tl);
break;
case 10:
lcd.print(data.m3c9tl);
break;
case 11:
lcd.print(data.m3c10tl);
break;
case 12:
lcd.print(data.m3c11tl);
break;
case 13:
lcd.print(data.m3c12tl);
break;
case 14:
lcd.print(data.m3c13tl);
break;
case 15:
lcd.print(data.m3c14tl);
break;
case 16:
lcd.print(data.m3c15tl);
break;
case 17:
lcd.print(data.m3c16tl);
break;
}
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1tl = data.m1c1tl - 1;
data.m1c1tl = constrain(data.m1c1tl, -128, 0);
break;
case 3:
data.m1c2tl = data.m1c2tl - 1;
data.m1c1tl = constrain(data.m1c2tl, -128, 0);
break;
case 4:
data.m1c3tl = data.m1c3tl - 1;
data.m1c3tl = constrain(data.m1c3tl, -128, 0);
break;
case 5:
data.m1c4tl = data.m1c4tl - 1;
data.m1c4tl = constrain(data.m1c4tl, -128, 0);
break;
case 6:
data.m1c5tl = data.m1c5tl - 1;
data.m1c5tl = constrain(data.m1c5tl, -128, 0);
break;
case 7:
data.m1c6tl = data.m1c6tl - 1;
data.m1c6tl = constrain(data.m1c6tl, -128, 0);
break;
case 8:
data.m1c7tl = data.m1c7tl - 1;
data.m1c7tl = constrain(data.m1c7tl, -128, 0);
break;
case 9:
data.m1c8tl = data.m1c8tl - 1;
data.m1c8tl = constrain(data.m1c8tl, -128, 0);
break;
case 10:
data.m1c9tl = data.m1c9tl - 1;
data.m1c9tl = constrain(data.m1c9tl, -128, 0);
break;
case 11:
data.m1c10tl = data.m1c10tl - 1;
data.m1c10tl = constrain(data.m1c10tl, -128, 0);
break;
case 12:
data.m1c11tl = data.m1c11tl - 1;
data.m1c11tl = constrain(data.m1c11tl, -128, 0);
break;
case 13:
data.m1c12tl = data.m1c12tl - 1;
data.m1c12tl = constrain(data.m1c12tl, -128, 0);
break;
case 14:
data.m1c13tl = data.m1c13tl - 1;
data.m1c13tl = constrain(data.m1c13tl, -128, 0);
break;
case 15:
data.m1c14tl = data.m1c14tl - 1;
data.m1c14tl = constrain(data.m1c14tl, -128, 0);
break;
case 16:
data.m1c15tl = data.m1c15tl - 1;
data.m1c15tl = constrain(data.m1c15tl, -128, 0);
break;
case 17:
data.m1c16tl = data.m1c16tl - 1;
data.m1c16tl = constrain(data.m1c16tl, -128, 0);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1tl = data.m2c1tl - 1;
data.m2c1tl = constrain(data.m2c1tl, -128, 0);
break;
case 3:
data.m2c2tl = data.m2c2tl - 1;
data.m2c2tl = constrain(data.m2c2tl, -128, 0);
break;
case 4:
data.m2c3tl = data.m2c3tl - 1;
data.m2c3tl = constrain(data.m2c3tl, -128, 0);
break;
case 5:
data.m2c4tl = data.m2c4tl - 1;
data.m2c4tl = constrain(data.m2c4tl, -128, 0);
break;
case 6:
data.m2c5tl = data.m2c5tl - 1;
data.m2c5tl = constrain(data.m2c5tl, -128, 0);
break;
case 7:
data.m2c6tl = data.m2c6tl - 1;
data.m2c6tl = constrain(data.m2c6tl, -128, 0);
break;
case 8:
data.m2c7tl = data.m2c7tl - 1;
data.m2c7tl = constrain(data.m2c7tl, -128, 0);
break;
case 9:
data.m2c8tl = data.m2c8tl - 1;
data.m2c8tl = constrain(data.m2c8tl, -128, 0);
break;
case 10:
data.m2c9tl = data.m2c9tl - 1;
data.m2c9tl = constrain(data.m2c9tl, -128, 0);
break;
case 11:
data.m2c10tl = data.m2c10tl - 1;
data.m2c10tl = constrain(data.m2c10tl, -128, 0);
break;
case 12:
data.m2c11tl = data.m2c11tl - 1;
data.m2c11tl = constrain(data.m2c11tl, -128, 0);
break;
case 13:
data.m2c12tl = data.m2c12tl - 1;
data.m2c12tl = constrain(data.m2c12tl, -128, 0);
break;
case 14:
data.m2c13tl = data.m2c13tl - 1;
data.m2c13tl = constrain(data.m2c13tl, -128, 0);
break;
case 15:
data.m2c14tl = data.m2c14tl - 1;
data.m2c14tl = constrain(data.m2c14tl, -128, 0);
break;
case 16:
data.m2c15tl = data.m2c15tl - 1;
data.m2c15tl = constrain(data.m2c15tl, -128, 0);
break;
case 17:
data.m2c16tl = data.m2c16tl - 1;
data.m2c16tl = constrain(data.m2c16tl, -128, 0);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1tl = data.m3c1tl - 1;
data.m3c1tl = constrain(data.m3c1tl, -128, 0);
break;
case 3:
data.m3c2tl = data.m3c2tl - 1;
data.m3c2tl = constrain(data.m3c2tl, -128, 0);
break;
case 4:
data.m3c3tl = data.m3c3tl - 1;
data.m3c3tl = constrain(data.m3c3tl, -128, 0);
break;
case 5:
data.m3c4tl = data.m3c4tl - 1;
data.m3c4tl = constrain(data.m3c4tl, -128, 0);
break;
case 6:
data.m3c5tl = data.m3c5tl - 1;
data.m3c5tl = constrain(data.m3c5tl, -128, 0);
break;
case 7:
data.m3c6tl = data.m3c6tl - 1;
data.m3c6tl = constrain(data.m3c6tl, -128, 0);
break;
case 8:
data.m3c7tl = data.m3c7tl - 1;
data.m3c7tl = constrain(data.m3c7tl, -128, 0);
break;
case 9:
data.m3c8tl = data.m3c8tl - 1;
data.m3c8tl = constrain(data.m3c8tl, -128, 0);
break;
case 10:
data.m3c9tl = data.m3c9tl - 1;
data.m3c9tl = constrain(data.m3c9tl, -128, 0);
break;
case 11:
data.m3c10tl = data.m3c10tl - 1;
data.m3c10tl = constrain(data.m3c10tl, -128, 0);
break;
case 12:
data.m3c11tl = data.m3c11tl - 1;
data.m3c11tl = constrain(data.m3c11tl, -128, 0);
break;
case 13:
data.m3c12tl = data.m3c12tl - 1;
data.m3c12tl = constrain(data.m3c12tl, -128, 0);
break;
case 14:
data.m3c13tl = data.m3c13tl - 1;
data.m3c13tl = constrain(data.m3c13tl, -128, 0);
break;
case 15:
data.m3c14tl = data.m3c14tl - 1;
data.m3c14tl = constrain(data.m3c14tl, -128, 0);
break;
case 16:
data.m3c15tl = data.m3c15tl - 1;
data.m3c15tl = constrain(data.m3c15tl, -128, 0);
break;
case 17:
data.m3c16tl = data.m3c16tl - 1;
data.m3c16tl = constrain(data.m3c16tl, -128, 0);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1tl = data.m1c1tl + 1;
data.m1c1tl = constrain(data.m1c1tl, -128, 0);
break;
case 3:
data.m1c2tl = data.m1c2tl + 1;
data.m1c2tl = constrain(data.m1c2tl, -128, 0);
break;
case 4:
data.m1c3tl = data.m1c3tl + 1;
data.m1c3tl = constrain(data.m1c3tl, -128, 0);
break;
case 5:
data.m1c4tl = data.m1c4tl + 1;
data.m1c4tl = constrain(data.m1c4tl, -128, 0);
break;
case 6:
data.m1c5tl = data.m1c5tl + 1;
data.m1c5tl = constrain(data.m1c5tl, -128, 0);
break;
case 7:
data.m1c6tl = data.m1c6tl + 1;
data.m1c6tl = constrain(data.m1c6tl, -128, 0);
break;
case 8:
data.m1c7tl = data.m1c7tl + 1;
data.m1c7tl = constrain(data.m1c7tl, -128, 0);
break;
case 9:
data.m1c8tl = data.m1c8tl + 1;
data.m1c8tl = constrain(data.m1c8tl, -128, 0);
break;
case 10:
data.m1c9tl = data.m1c9tl + 1;
data.m1c9tl = constrain(data.m1c9tl, -128, 0);
break;
case 11:
data.m1c10tl = data.m1c10tl + 1;
data.m1c10tl = constrain(data.m1c10tl, -128, 0);
break;
case 12:
data.m1c11tl = data.m1c11tl + 1;
data.m1c11tl = constrain(data.m1c11tl, -128, 0);
break;
case 13:
data.m1c12tl = data.m1c12tl + 1;
data.m1c12tl = constrain(data.m1c12tl, -128, 0);
break;
case 14:
data.m1c13tl = data.m1c13tl + 1;
data.m1c13tl = constrain(data.m1c13tl, -128, 0);
break;
case 15:
data.m1c14tl = data.m1c14tl + 1;
data.m1c14tl = constrain(data.m1c14tl, -128, 0);
break;
case 16:
data.m1c15tl = data.m1c15tl + 1;
data.m1c15tl = constrain(data.m1c15tl, -128, 0);
break;
case 17:
data.m1c16tl = data.m1c16tl + 1;
data.m1c16tl = constrain(data.m1c16tl, -128, 0);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1tl = data.m2c1tl + 1;
data.m2c1tl = constrain(data.m2c1tl, -128, 0);
break;
case 3:
data.m2c2tl = data.m2c2tl + 1;
data.m2c2tl = constrain(data.m2c2tl, -128, 0);
break;
case 4:
data.m2c3tl = data.m2c3tl + 1;
data.m2c3tl = constrain(data.m2c3tl, -128, 0);
break;
case 5:
data.m2c4tl = data.m2c4tl + 1;
data.m2c4tl = constrain(data.m2c4tl, -128, 0);
break;
case 6:
data.m2c5tl = data.m2c5tl + 1;
data.m2c5tl = constrain(data.m2c5tl, -128, 0);
break;
case 7:
data.m2c6tl = data.m2c6tl + 1;
data.m2c6tl = constrain(data.m2c6tl, -128, 0);
break;
case 8:
data.m2c7tl = data.m2c7tl + 1;
data.m2c7tl = constrain(data.m2c7tl, -128, 0);
break;
case 9:
data.m2c8tl = data.m2c8tl + 1;
data.m2c8tl = constrain(data.m2c8tl, -128, 0);
break;
case 10:
data.m2c9tl = data.m2c9tl + 1;
data.m2c9tl = constrain(data.m2c9tl, -128, 0);
break;
case 11:
data.m2c10tl = data.m2c10tl + 1;
data.m2c10tl = constrain(data.m2c10tl, -128, 0);
break;
case 12:
data.m2c11tl = data.m2c11tl + 1;
data.m2c11tl = constrain(data.m2c11tl, -128, 0);
break;
case 13:
data.m2c12tl = data.m2c12tl + 1;
data.m2c12tl = constrain(data.m2c12tl, -128, 0);
break;
case 14:
data.m2c13tl = data.m2c13tl + 1;
data.m2c13tl = constrain(data.m2c13tl, -128, 0);
break;
case 15:
data.m2c14tl = data.m2c14tl + 1;
data.m2c14tl = constrain(data.m2c14tl, -128, 0);
break;
case 16:
data.m2c15tl = data.m2c15tl + 1;
data.m2c15tl = constrain(data.m2c15tl, -128, 0);
break;
case 17:
data.m2c16tl = data.m2c16tl + 1;
data.m2c16tl = constrain(data.m2c16tl, -128, 0);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1tl = data.m3c1tl + 1;
data.m3c1tl = constrain(data.m3c1tl, -128, 0);
break;
case 3:
data.m3c2tl = data.m3c2tl + 1;
data.m3c2tl = constrain(data.m3c2tl, -128, 0);
break;
case 4:
data.m3c3tl = data.m3c3tl + 1;
data.m3c3tl = constrain(data.m3c3tl, -128, 0);
break;
case 5:
data.m3c4tl = data.m3c4tl + 1;
data.m3c4tl = constrain(data.m3c4tl, -128, 0);
break;
case 6:
data.m3c5tl = data.m3c5tl + 1;
data.m3c5tl = constrain(data.m3c5tl, -128, 0);
break;
case 7:
data.m3c6tl = data.m3c6tl + 1;
data.m3c6tl = constrain(data.m3c6tl, -128, 0);
break;
case 8:
data.m3c7tl = data.m3c7tl + 1;
data.m3c7tl = constrain(data.m3c7tl, -128, 0);
break;
case 9:
data.m3c8tl = data.m3c8tl + 1;
data.m3c8tl = constrain(data.m3c8tl, -128, 0);
break;
case 10:
data.m3c9tl = data.m3c9tl + 1;
data.m3c9tl = constrain(data.m3c9tl, -128, 0);
break;
case 11:
data.m3c10tl = data.m3c10tl + 1;
data.m3c10tl = constrain(data.m3c10tl, -128, 0);
break;
case 12:
data.m3c11tl = data.m3c11tl + 1;
data.m3c11tl = constrain(data.m3c11tl, -128, 0);
break;
case 13:
data.m3c12tl = data.m3c12tl + 1;
data.m3c12tl = constrain(data.m3c12tl, -128, 0);
break;
case 14:
data.m3c13tl = data.m3c13tl + 1;
data.m3c13tl = constrain(data.m3c13tl, -128, 0);
break;
case 15:
data.m3c14tl = data.m3c14tl + 1;
data.m3c14tl = constrain(data.m3c14tl, -128, 0);
break;
case 16:
data.m3c15tl = data.m3c15tl + 1;
data.m3c15tl = constrain(data.m3c15tl, -128, 0);
break;
case 17:
data.m3c16tl = data.m3c16tl + 1;
data.m3c16tl = constrain(data.m3c16tl, -128, 0);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
light();
sub3 = 2;
while(!digitalRead(selectButton));
}
}
if(sub1 == 1 && sub2 == 1 && sub3 == 2 && sub4 == 0) {
screen = "201120";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Deadzone:");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
switch (menu) {
case 2:
lcd.print(data.m1c1dz);
break;
case 3:
lcd.print(data.m1c2dz);
break;
case 4:
lcd.print(data.m1c3dz);
break;
case 5:
lcd.print(data.m1c4dz);
break;
case 6:
lcd.print(data.m1c5dz);
break;
case 7:
lcd.print(data.m1c6dz);
break;
case 8:
lcd.print(data.m1c7dz);
break;
case 9:
lcd.print(data.m1c8dz);
break;
case 10:
lcd.print(data.m1c9dz);
break;
case 11:
lcd.print(data.m1c10dz);
break;
case 12:
lcd.print(data.m1c11dz);
break;
case 13:
lcd.print(data.m1c12dz);
break;
case 14:
lcd.print(data.m1c13dz);
break;
case 15:
lcd.print(data.m1c14dz);
break;
case 16:
lcd.print(data.m1c15dz);
break;
case 17:
lcd.print(data.m1c16dz);
break;
}
break;
case 2:
switch (menu) {
case 2:
lcd.print(data.m2c1dz);
break;
case 3:
lcd.print(data.m2c2dz);
break;
case 4:
lcd.print(data.m2c3dz);
break;
case 5:
lcd.print(data.m2c4dz);
break;
case 6:
lcd.print(data.m2c5dz);
break;
case 7:
lcd.print(data.m2c6dz);
break;
case 8:
lcd.print(data.m2c7dz);
break;
case 9:
lcd.print(data.m2c8dz);
break;
case 10:
lcd.print(data.m2c9dz);
break;
case 11:
lcd.print(data.m2c10dz);
break;
case 12:
lcd.print(data.m2c11dz);
break;
case 13:
lcd.print(data.m2c12dz);
break;
case 14:
lcd.print(data.m2c13dz);
break;
case 15:
lcd.print(data.m2c14dz);
break;
case 16:
lcd.print(data.m2c15dz);
break;
case 17:
lcd.print(data.m2c16dz);
break;
}
break;
case 3:
switch (menu) {
case 2:
lcd.print(data.m3c1dz);
break;
case 3:
lcd.print(data.m3c2dz);
break;
case 4:
lcd.print(data.m3c3dz);
break;
case 5:
lcd.print(data.m3c4dz);
break;
case 6:
lcd.print(data.m3c5dz);
break;
case 7:
lcd.print(data.m3c6dz);
break;
case 8:
lcd.print(data.m3c7dz);
break;
case 9:
lcd.print(data.m3c8dz);
break;
case 10:
lcd.print(data.m3c9dz);
break;
case 11:
lcd.print(data.m3c10dz);
break;
case 12:
lcd.print(data.m3c11dz);
break;
case 13:
lcd.print(data.m3c12dz);
break;
case 14:
lcd.print(data.m3c13dz);
break;
case 15:
lcd.print(data.m3c14dz);
break;
case 16:
lcd.print(data.m3c15dz);
break;
case 17:
lcd.print(data.m3c16dz);
break;
}
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1dz = data.m1c1dz - 1;
data.m1c1dz = constrain(data.m1c1dz, 0, 128);
break;
case 3:
data.m1c2dz = data.m1c2dz - 1;
data.m1c1dz = constrain(data.m1c2dz, 0, 128);
break;
case 4:
data.m1c3dz = data.m1c3dz - 1;
data.m1c3dz = constrain(data.m1c3dz, 0, 128);
break;
case 5:
data.m1c4dz = data.m1c4dz - 1;
data.m1c4dz = constrain(data.m1c4dz, 0, 128);
break;
case 6:
data.m1c5dz = data.m1c5dz - 1;
data.m1c5dz = constrain(data.m1c5dz, 0, 128);
break;
case 7:
data.m1c6dz = data.m1c6dz - 1;
data.m1c6dz = constrain(data.m1c6dz, 0, 128);
break;
case 8:
data.m1c7dz = data.m1c7dz - 1;
data.m1c7dz = constrain(data.m1c7dz, 0, 128);
break;
case 9:
data.m1c8dz = data.m1c8dz - 1;
data.m1c8dz = constrain(data.m1c8dz, 0, 128);
break;
case 10:
data.m1c9dz = data.m1c9dz - 1;
data.m1c9dz = constrain(data.m1c9dz, 0, 128);
break;
case 11:
data.m1c10dz = data.m1c10dz - 1;
data.m1c10dz = constrain(data.m1c10dz, 0, 128);
break;
case 12:
data.m1c11dz = data.m1c11dz - 1;
data.m1c11dz = constrain(data.m1c11dz, 0, 128);
break;
case 13:
data.m1c12dz = data.m1c12dz - 1;
data.m1c12dz = constrain(data.m1c12dz, 0, 128);
break;
case 14:
data.m1c13dz = data.m1c13dz - 1;
data.m1c13dz = constrain(data.m1c13dz, 0, 128);
break;
case 15:
data.m1c14dz = data.m1c14dz - 1;
data.m1c14dz = constrain(data.m1c14dz, 0, 128);
break;
case 16:
data.m1c15dz = data.m1c15dz - 1;
data.m1c15dz = constrain(data.m1c15dz, 0, 128);
break;
case 17:
data.m1c16dz = data.m1c16dz - 1;
data.m1c16dz = constrain(data.m1c16dz, 0, 128);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1dz = data.m2c1dz - 1;
data.m2c1dz = constrain(data.m2c1dz, 0, 128);
break;
case 3:
data.m2c2dz = data.m2c2dz - 1;
data.m2c2dz = constrain(data.m2c2dz, 0, 128);
break;
case 4:
data.m2c3dz = data.m2c3dz - 1;
data.m2c3dz = constrain(data.m2c3dz, 0, 128);
break;
case 5:
data.m2c4dz = data.m2c4dz - 1;
data.m2c4dz = constrain(data.m2c4dz, 0, 128);
break;
case 6:
data.m2c5dz = data.m2c5dz - 1;
data.m2c5dz = constrain(data.m2c5dz, 0, 128);
break;
case 7:
data.m2c6dz = data.m2c6dz - 1;
data.m2c6dz = constrain(data.m2c6dz, 0, 128);
break;
case 8:
data.m2c7dz = data.m2c7dz - 1;
data.m2c7dz = constrain(data.m2c7dz, 0, 128);
break;
case 9:
data.m2c8dz = data.m2c8dz - 1;
data.m2c8dz = constrain(data.m2c8dz, 0, 128);
break;
case 10:
data.m2c9dz = data.m2c9dz - 1;
data.m2c9dz = constrain(data.m2c9dz, 0, 128);
break;
case 11:
data.m2c10dz = data.m2c10dz - 1;
data.m2c10dz = constrain(data.m2c10dz, 0, 128);
break;
case 12:
data.m2c11dz = data.m2c11dz - 1;
data.m2c11dz = constrain(data.m2c11dz, 0, 128);
break;
case 13:
data.m2c12dz = data.m2c12dz - 1;
data.m2c12dz = constrain(data.m2c12dz, 0, 128);
break;
case 14:
data.m2c13dz = data.m2c13dz - 1;
data.m2c13dz = constrain(data.m2c13dz, 0, 128);
break;
case 15:
data.m2c14dz = data.m2c14dz - 1;
data.m2c14dz = constrain(data.m2c14dz, 0, 128);
break;
case 16:
data.m2c15dz = data.m2c15dz - 1;
data.m2c15dz = constrain(data.m2c15dz, 0, 128);
break;
case 17:
data.m2c16dz = data.m2c16dz - 1;
data.m2c16dz = constrain(data.m2c16dz, 0, 128);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1dz = data.m3c1dz - 1;
data.m3c1dz = constrain(data.m3c1dz, 0, 128);
break;
case 3:
data.m3c2dz = data.m3c2dz - 1;
data.m3c2dz = constrain(data.m3c2dz, 0, 128);
break;
case 4:
data.m3c3dz = data.m3c3dz - 1;
data.m3c3dz = constrain(data.m3c3dz, 0, 128);
break;
case 5:
data.m3c4dz = data.m3c4dz - 1;
data.m3c4dz = constrain(data.m3c4dz, 0, 128);
break;
case 6:
data.m3c5dz = data.m3c5dz - 1;
data.m3c5dz = constrain(data.m3c5dz, 0, 128);
break;
case 7:
data.m3c6dz = data.m3c6dz - 1;
data.m3c6dz = constrain(data.m3c6dz, 0, 128);
break;
case 8:
data.m3c7dz = data.m3c7dz - 1;
data.m3c7dz = constrain(data.m3c7dz, 0, 128);
break;
case 9:
data.m3c8dz = data.m3c8dz - 1;
data.m3c8dz = constrain(data.m3c8dz, 0, 128);
break;
case 10:
data.m3c9dz = data.m3c9dz - 1;
data.m3c9dz = constrain(data.m3c9dz, 0, 128);
break;
case 11:
data.m3c10dz = data.m3c10dz - 1;
data.m3c10dz = constrain(data.m3c10dz, 0, 128);
break;
case 12:
data.m3c11dz = data.m3c11dz - 1;
data.m3c11dz = constrain(data.m3c11dz, 0, 128);
break;
case 13:
data.m3c12dz = data.m3c12dz - 1;
data.m3c12dz = constrain(data.m3c12dz, 0, 128);
break;
case 14:
data.m3c13dz = data.m3c13dz - 1;
data.m3c13dz = constrain(data.m3c13dz, 0, 128);
break;
case 15:
data.m3c14dz = data.m3c14dz - 1;
data.m3c14dz = constrain(data.m3c14dz, 0, 128);
break;
case 16:
data.m3c15dz = data.m3c15dz - 1;
data.m3c15dz = constrain(data.m3c15dz, 0, 128);
break;
case 17:
data.m3c16dz = data.m3c16dz - 1;
data.m3c16dz = constrain(data.m3c16dz, 0, 128);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1dz = data.m1c1dz + 1;
data.m1c1dz = constrain(data.m1c1dz, 0, 128);
break;
case 3:
data.m1c2dz = data.m1c2dz + 1;
data.m1c2dz = constrain(data.m1c2dz, 0, 128);
break;
case 4:
data.m1c3dz = data.m1c3dz + 1;
data.m1c3dz = constrain(data.m1c3dz, 0, 128);
break;
case 5:
data.m1c4dz = data.m1c4dz + 1;
data.m1c4dz = constrain(data.m1c4dz, 0, 128);
break;
case 6:
data.m1c5dz = data.m1c5dz + 1;
data.m1c5dz = constrain(data.m1c5dz, 0, 128);
break;
case 7:
data.m1c6dz = data.m1c6dz + 1;
data.m1c6dz = constrain(data.m1c6dz, 0, 128);
break;
case 8:
data.m1c7dz = data.m1c7dz + 1;
data.m1c7dz = constrain(data.m1c7dz, 0, 128);
break;
case 9:
data.m1c8dz = data.m1c8dz + 1;
data.m1c8dz = constrain(data.m1c8dz, 0, 128);
break;
case 10:
data.m1c9dz = data.m1c9dz + 1;
data.m1c9dz = constrain(data.m1c9dz, 0, 128);
break;
case 11:
data.m1c10dz = data.m1c10dz + 1;
data.m1c10dz = constrain(data.m1c10dz, 0, 128);
break;
case 12:
data.m1c11dz = data.m1c11dz + 1;
data.m1c11dz = constrain(data.m1c11dz, 0, 128);
break;
case 13:
data.m1c12dz = data.m1c12dz + 1;
data.m1c12dz = constrain(data.m1c12dz, 0, 128);
break;
case 14:
data.m1c13dz = data.m1c13dz + 1;
data.m1c13dz = constrain(data.m1c13dz, 0, 128);
break;
case 15:
data.m1c14dz = data.m1c14dz + 1;
data.m1c14dz = constrain(data.m1c14dz, 0, 128);
break;
case 16:
data.m1c15dz = data.m1c15dz + 1;
data.m1c15dz = constrain(data.m1c15dz, 0, 128);
break;
case 17:
data.m1c16dz = data.m1c16dz + 1;
data.m1c16dz = constrain(data.m1c16dz, 0, 128);
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1dz = data.m2c1dz + 1;
data.m2c1dz = constrain(data.m2c1dz, 0, 128);
break;
case 3:
data.m2c2dz = data.m2c2dz + 1;
data.m2c2dz = constrain(data.m2c2dz, 0, 128);
break;
case 4:
data.m2c3dz = data.m2c3dz + 1;
data.m2c3dz = constrain(data.m2c3dz, 0, 128);
break;
case 5:
data.m2c4dz = data.m2c4dz + 1;
data.m2c4dz = constrain(data.m2c4dz, 0, 128);
break;
case 6:
data.m2c5dz = data.m2c5dz + 1;
data.m2c5dz = constrain(data.m2c5dz, 0, 128);
break;
case 7:
data.m2c6dz = data.m2c6dz + 1;
data.m2c6dz = constrain(data.m2c6dz, 0, 128);
break;
case 8:
data.m2c7dz = data.m2c7dz + 1;
data.m2c7dz = constrain(data.m2c7dz, 0, 128);
break;
case 9:
data.m2c8dz = data.m2c8dz + 1;
data.m2c8dz = constrain(data.m2c8dz, 0, 128);
break;
case 10:
data.m2c9dz = data.m2c9dz + 1;
data.m2c9dz = constrain(data.m2c9dz, 0, 128);
break;
case 11:
data.m2c10dz = data.m2c10dz + 1;
data.m2c10dz = constrain(data.m2c10dz, 0, 128);
break;
case 12:
data.m2c11dz = data.m2c11dz + 1;
data.m2c11dz = constrain(data.m2c11dz, 0, 128);
break;
case 13:
data.m2c12dz = data.m2c12dz + 1;
data.m2c12dz = constrain(data.m2c12dz, 0, 128);
break;
case 14:
data.m2c13dz = data.m2c13dz + 1;
data.m2c13dz = constrain(data.m2c13dz, 0, 128);
break;
case 15:
data.m2c14dz = data.m2c14dz + 1;
data.m2c14dz = constrain(data.m2c14dz, 0, 128);
break;
case 16:
data.m2c15dz = data.m2c15dz + 1;
data.m2c15dz = constrain(data.m2c15dz, 0, 128);
break;
case 17:
data.m2c16dz = data.m2c16dz + 1;
data.m2c16dz = constrain(data.m2c16dz, 0, 128);
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1dz = data.m3c1dz + 1;
data.m3c1dz = constrain(data.m3c1dz, 0, 128);
break;
case 3:
data.m3c2dz = data.m3c2dz + 1;
data.m3c2dz = constrain(data.m3c2dz, 0, 128);
break;
case 4:
data.m3c3dz = data.m3c3dz + 1;
data.m3c3dz = constrain(data.m3c3dz, 0, 128);
break;
case 5:
data.m3c4dz = data.m3c4dz + 1;
data.m3c4dz = constrain(data.m3c4dz, 0, 128);
break;
case 6:
data.m3c5dz = data.m3c5dz + 1;
data.m3c5dz = constrain(data.m3c5dz, 0, 128);
break;
case 7:
data.m3c6dz = data.m3c6dz + 1;
data.m3c6dz = constrain(data.m3c6dz, 0, 128);
break;
case 8:
data.m3c7dz = data.m3c7dz + 1;
data.m3c7dz = constrain(data.m3c7dz, 0, 128);
break;
case 9:
data.m3c8dz = data.m3c8dz + 1;
data.m3c8dz = constrain(data.m3c8dz, 0, 128);
break;
case 10:
data.m3c9dz = data.m3c9dz + 1;
data.m3c9dz = constrain(data.m3c9dz, 0, 128);
break;
case 11:
data.m3c10dz = data.m3c10dz + 1;
data.m3c10dz = constrain(data.m3c10dz, 0, 128);
break;
case 12:
data.m3c11dz = data.m3c11dz + 1;
data.m3c11dz = constrain(data.m3c11dz, 0, 128);
break;
case 13:
data.m3c12dz = data.m3c12dz + 1;
data.m3c12dz = constrain(data.m3c12dz, 0, 128);
break;
case 14:
data.m3c13dz = data.m3c13dz + 1;
data.m3c13dz = constrain(data.m3c13dz, 0, 128);
break;
case 15:
data.m3c14dz = data.m3c14dz + 1;
data.m3c14dz = constrain(data.m3c14dz, 0, 128);
break;
case 16:
data.m3c15dz = data.m3c15dz + 1;
data.m3c15dz = constrain(data.m3c15dz, 0, 128);
break;
case 17:
data.m3c16dz = data.m3c16dz + 1;
data.m3c16dz = constrain(data.m3c16dz, 0, 128);
break;
}
break;
}
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
light();
sub4 = 1;
while(!digitalRead(selectButton));
}
}
if(sub1 == 1 && sub2 == 1 && sub3 == 2 && sub4 == 1) {
screen = "201111";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Reverse:");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
switch (menu) {
case 2:
lcd.print(data.m1c1r);
break;
case 3:
lcd.print(data.m1c2r);
break;
case 4:
lcd.print(data.m1c3r);
break;
case 5:
lcd.print(data.m1c4r);
break;
case 6:
lcd.print(data.m1c5r);
break;
case 7:
lcd.print(data.m1c6r);
break;
case 8:
lcd.print(data.m1c7r);
break;
case 9:
lcd.print(data.m1c8r);
break;
case 10:
lcd.print(data.m1c9r);
break;
case 11:
lcd.print(data.m1c10r);
break;
case 12:
lcd.print(data.m1c11r);
break;
case 13:
lcd.print(data.m1c12r);
break;
case 14:
lcd.print(data.m1c13r);
break;
case 15:
lcd.print(data.m1c14r);
break;
case 16:
lcd.print(data.m1c15r);
break;
case 17:
lcd.print(data.m1c16r);
break;
}
break;
case 2:
switch (menu) {
case 2:
lcd.print(data.m2c1r);
break;
case 3:
lcd.print(data.m2c2r);
break;
case 4:
lcd.print(data.m2c3r);
break;
case 5:
lcd.print(data.m2c4r);
break;
case 6:
lcd.print(data.m2c5r);
break;
case 7:
lcd.print(data.m2c6r);
break;
case 8:
lcd.print(data.m2c7r);
break;
case 9:
lcd.print(data.m2c8r);
break;
case 10:
lcd.print(data.m2c9r);
break;
case 11:
lcd.print(data.m2c10r);
break;
case 12:
lcd.print(data.m2c11r);
break;
case 13:
lcd.print(data.m2c12r);
break;
case 14:
lcd.print(data.m2c13r);
break;
case 15:
lcd.print(data.m2c14r);
break;
case 16:
lcd.print(data.m2c15r);
break;
case 17:
lcd.print(data.m2c16r);
break;
}
break;
case 3:
switch (menu) {
case 2:
lcd.print(data.m3c1r);
break;
case 3:
lcd.print(data.m3c2r);
break;
case 4:
lcd.print(data.m3c3r);
break;
case 5:
lcd.print(data.m3c4r);
break;
case 6:
lcd.print(data.m3c5r);
break;
case 7:
lcd.print(data.m3c6r);
break;
case 8:
lcd.print(data.m3c7r);
break;
case 9:
lcd.print(data.m3c8r);
break;
case 10:
lcd.print(data.m3c9r);
break;
case 11:
lcd.print(data.m3c10r);
break;
case 12:
lcd.print(data.m3c11r);
break;
case 13:
lcd.print(data.m3c12r);
break;
case 14:
lcd.print(data.m3c13r);
break;
case 15:
lcd.print(data.m3c14r);
break;
case 16:
lcd.print(data.m3c15r);
break;
case 17:
lcd.print(data.m3c16r);
break;
}
break;
}
if(!digitalRead(downButton)) {
lcd.setCursor(0, 1);
lcd.print(" ");
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1r = false;
break;
case 3:
data.m1c2r = false;
break;
case 4:
data.m1c3r = false;
break;
case 5:
data.m1c4r = false;
break;
case 6:
data.m1c5r = false;
break;
case 7:
data.m1c6r = false;
break;
case 8:
data.m1c7r = false;
break;
case 9:
data.m1c8r = false;
break;
case 10:
data.m1c9r = false;
break;
case 11:
data.m1c10r = false;
break;
case 12:
data.m1c11r = false;
break;
case 13:
data.m1c12r = false;
break;
case 14:
data.m1c13r = false;
break;
case 15:
data.m1c14r = false;
break;
case 16:
data.m1c15r = false;
break;
case 17:
data.m1c16r = false;
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1r = false;
break;
case 3:
data.m2c2r = false;
break;
case 4:
data.m2c3r = false;
break;
case 5:
data.m2c4r = false;
break;
case 6:
data.m2c5r = false;
break;
case 7:
data.m2c6r = false;
break;
case 8:
data.m2c7r = false;
break;
case 9:
data.m2c8r = false;
break;
case 10:
data.m2c9r = false;
break;
case 11:
data.m2c10r = false;
break;
case 12:
data.m2c11r = false;
break;
case 13:
data.m2c12r = false;
break;
case 14:
data.m2c13r = false;
break;
case 15:
data.m2c14r = false;
break;
case 16:
data.m2c15r = false;
break;
case 17:
data.m2c16r = false;
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1r = false;
break;
case 3:
data.m3c2r = false;
break;
case 4:
data.m3c3r = false;
break;
case 5:
data.m3c4r = false;
break;
case 6:
data.m3c5r = false;
break;
case 7:
data.m3c6r = false;
break;
case 8:
data.m3c7r = false;
break;
case 9:
data.m3c8r = false;
break;
case 10:
data.m3c9r = false;
break;
case 11:
data.m3c10r = false;
break;
case 12:
data.m3c11r = false;
break;
case 13:
data.m3c12r = false;
break;
case 14:
data.m3c13r = false;
break;
case 15:
data.m3c14r = false;
break;
case 16:
data.m3c15r = false;
break;
case 17:
data.m3c16r = false;
break;
}
break;
}
while(!digitalRead(downButton));
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
lcd.setCursor(0, 1);
lcd.print(" ");
switch (data.model) {
case 1:
switch (menu) {
case 2:
data.m1c1r = true;
break;
case 3:
data.m1c2r = true;
break;
case 4:
data.m1c3r = true;
break;
case 5:
data.m1c4r = true;
break;
case 6:
data.m1c5r = true;
break;
case 7:
data.m1c6r = true;
break;
case 8:
data.m1c7r = true;
break;
case 9:
data.m1c8r = true;
break;
case 10:
data.m1c9r = true;
break;
case 11:
data.m1c10r = true;
break;
case 12:
data.m1c11r = true;
break;
case 13:
data.m1c12r = true;
break;
case 14:
data.m1c13r = true;
break;
case 15:
data.m1c14r = true;
break;
case 16:
data.m1c15r = true;
break;
case 17:
data.m1c16r = true;
break;
}
break;
case 2:
switch (menu) {
case 2:
data.m2c1r = true;
break;
case 3:
data.m2c2r = true;
break;
case 4:
data.m2c3r = true;
break;
case 5:
data.m2c4r = true;
break;
case 6:
data.m2c5r = true;
break;
case 7:
data.m2c6r = true;
break;
case 8:
data.m2c7r = true;
break;
case 9:
data.m2c8r = true;
break;
case 10:
data.m2c9r = true;
break;
case 11:
data.m2c10r = true;
break;
case 12:
data.m2c11r = true;
break;
case 13:
data.m2c12r = true;
break;
case 14:
data.m2c13r = true;
break;
case 15:
data.m2c14r = true;
break;
case 16:
data.m2c15r = true;
break;
case 17:
data.m2c16r = true;
break;
}
break;
case 3:
switch (menu) {
case 2:
data.m3c1r = true;
break;
case 3:
data.m3c2r = true;
break;
case 4:
data.m3c3r = true;
break;
case 5:
data.m3c4r = true;
break;
case 6:
data.m3c5r = true;
break;
case 7:
data.m3c6r = true;
break;
case 8:
data.m3c7r = true;
break;
case 9:
data.m3c8r = true;
break;
case 10:
data.m3c9r = true;
break;
case 11:
data.m3c10r = true;
break;
case 12:
data.m3c11r = true;
break;
case 13:
data.m3c12r = true;
break;
case 14:
data.m3c13r = true;
break;
case 15:
data.m3c14r = true;
break;
case 16:
data.m3c15r = true;
break;
case 17:
data.m3c16r = true;
break;
}
break;
}
while(!digitalRead(upButton));
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
light();
writerom = 1;
while(!digitalRead(selectButton));
screensaver();
}
}
if(menu == 18 && sub1 == 2 && sub2 == 0) {
screen = "103000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("TX Warning Level");
lcd.setCursor(0, 1);
lcd.print(data.vtxw);
if(!digitalRead(downButton)) {
data.vtxw = data.vtxw - 0.10;
data.vtxw = constrain(data.vtxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
data.vtxw = data.vtxw + 0.10;
data.vtxw = constrain(data.vtxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
light();
sub2 = 1;
while(!digitalRead(selectButton));
}
}
if(menu == 18 && sub1 == 2 && sub2 == 1) {
screen = "103100";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("TX Alarm Level");
lcd.setCursor(0, 1);
lcd.print(data.vtxc);
if(!digitalRead(downButton)) {
data.vtxc = data.vtxc - 0.10;
data.vtxc = constrain(data.vtxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(upButton)) {
data.vtxc = data.vtxc + 0.10;
data.vtxc = constrain(data.vtxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
}
if(!digitalRead(selectButton)) {
light();
sub2 = 2;
while(!digitalRead(selectButton));
}
}
if(menu == 18 && sub1 == 2 && sub2 == 2) {
screen = "103200";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("RX Warning Level");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
lcd.print(data.m1vrxw);
break;
case 2:
lcd.print(data.m2vrxw);
break;
case 3:
lcd.print(data.m3vrxw);
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
data.m1vrxw = data.m1vrxw - 0.10;
data.m1vrxw = constrain(data.m1vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 2:
data.m2vrxw = data.m2vrxw - 0.10;
data.m2vrxw = constrain(data.m2vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 3:
data.m3vrxw = data.m3vrxw - 0.10;
data.m3vrxw = constrain(data.m3vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
}
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
data.m1vrxw = data.m1vrxw + 0.10;
data.m1vrxw = constrain(data.m1vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 2:
data.m2vrxw = data.m2vrxw + 0.10;
data.m2vrxw = constrain(data.m2vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 3:
data.m3vrxw = data.m3vrxw + 0.10;
data.m3vrxw = constrain(data.m3vrxw, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
}
}
if(!digitalRead(selectButton)) {
light();
sub2 = 3;
while(!digitalRead(selectButton));
}
}
if(menu == 18 && sub1 == 2 && sub2 == 3) {
screen = "103300";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("RX Alarm Level");
lcd.setCursor(0, 1);
switch (data.model) {
case 1:
lcd.print(data.m1vrxc);
break;
case 2:
lcd.print(data.m2vrxc);
break;
case 3:
lcd.print(data.m3vrxc);
break;
}
if(!digitalRead(downButton)) {
switch (data.model) {
case 1:
data.m1vrxc = data.m1vrxc - 0.10;
data.m1vrxc = constrain(data.m1vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 2:
data.m2vrxc = data.m2vrxc - 0.10;
data.m2vrxc = constrain(data.m2vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 3:
data.m3vrxc = data.m3vrxc - 0.10;
data.m3vrxc = constrain(data.m3vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
}
}
if(!digitalRead(upButton)) {
switch (data.model) {
case 1:
data.m1vrxc = data.m1vrxc + 0.10;
data.m1vrxc = constrain(data.m1vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 2:
data.m2vrxc = data.m2vrxc + 0.10;
data.m2vrxc = constrain(data.m2vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
case 3:
data.m3vrxc = data.m3vrxc + 0.10;
data.m3vrxc = constrain(data.m3vrxc, 00.00, 20.00);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" ");
light();
break;
}
}
if(!digitalRead(selectButton)) {
light();
writerom = 1;
screensaver();
while(!digitalRead(selectButton));
}
}
}
void setdefaults() {
data.model = 1;
data.m1c1a = 0;
data.m2c1a = 0;
data.m3c1a = 0;
data.m1c1tr = 0;
data.m2c1tr = 0;
data.m3c1tr = 0;
data.m1c1tl = 0;
data.m2c1tl = 0;
data.m3c1tl = 0;
data.m1c1r = false;
data.m2c1r = false;
data.m3c1r = false;
data.m1c2a = 0;
data.m2c2a = 0;
data.m3c2a = 0;
data.m1c2tr = 0;
data.m2c2tr = 0;
data.m3c2tr = 0;
data.m1c2tl = 0;
data.m2c2tl = 0;
data.m3c2tl = 0;
data.m1c2r = false;
data.m2c2r = false;
data.m3c2r = false;
data.m1c3a = 0;
data.m2c3a = 0;
data.m3c3a = 0;
data.m1c3tr = 0;
data.m2c3tr = 0;
data.m3c3tr = 0;
data.m1c3tl = 0;
data.m2c3tl = 0;
data.m3c3tl = 0;
data.m1c3r = false;
data.m2c3r = false;
data.m3c3r = false;
data.m1c4a = 0;
data.m2c4a = 0;
data.m3c4a = 0;
data.m1c4tr = 0;
data.m2c4tr = 0;
data.m3c4tr = 0;
data.m1c4tl = 0;
data.m2c4tl = 0;
data.m3c4tl = 0;
data.m1c4r = false;
data.m2c4r = false;
data.m3c4r = false;
data.m1c5a = 0;
data.m2c5a = 0;
data.m3c5a = 0;
data.m1c5tr = 0;
data.m2c5tr = 0;
data.m3c5tr = 0;
data.m1c5tl = 0;
data.m2c5tl = 0;
data.m3c5tl = 0;
data.m1c5r = false;
data.m2c5r = false;
data.m3c5r = false;
data.m1c6a = 0;
data.m2c6a = 0;
data.m3c6a = 0;
data.m1c6tr = 0;
data.m2c6tr = 0;
data.m3c6tr = 0;
data.m1c6tl = 0;
data.m2c6tl = 0;
data.m3c6tl = 0;
data.m1c6r = false;
data.m2c6r = false;
data.m3c6r = false;
data.m1c7a = 0;
data.m2c7a = 0;
data.m3c7a = 0;
data.m1c7tr = 0;
data.m2c7tr = 0;
data.m3c7tr = 0;
data.m1c7tl = 0;
data.m2c7tl = 0;
data.m3c7tl = 0;
data.m1c7r = false;
data.m2c7r = false;
data.m3c7r = false;
data.m1c8a = 0;
data.m2c8a = 0;
data.m3c8a = 0;
data.m1c8tr = 0;
data.m2c8tr = 0;
data.m3c8tr = 0;
data.m1c8tl = 0;
data.m2c8tl = 0;
data.m3c8tl = 0;
data.m1c8r = false;
data.m2c8r = false;
data.m3c8r = false;
data.m1c9a = 0;
data.m2c9a = 0;
data.m3c9a = 0;
data.m1c9tr = 0;
data.m2c9tr = 0;
data.m3c9tr = 0;
data.m1c9tl = 0;
data.m2c9tl = 0;
data.m3c9tl = 0;
data.m1c9r = false;
data.m2c9r = false;
data.m3c9r = false;
data.m1c10a = 0;
data.m2c10a = 0;
data.m3c10a = 0;
data.m1c10tr = 0;
data.m2c10tr = 0;
data.m3c10tr = 0;
data.m1c10tl = 0;
data.m2c10tl = 0;
data.m3c10tl = 0;
data.m1c10r = false;
data.m2c10r = false;
data.m3c10r = false;
data.m1c11a = 0;
data.m2c11a = 0;
data.m3c11a = 0;
data.m1c11tr = 0;
data.m2c11tr = 0;
data.m3c11tr = 0;
data.m1c11tl = 0;
data.m2c11tl = 0;
data.m3c11tl = 0;
data.m1c11r = false;
data.m2c11r = false;
data.m3c11r = false;
data.m1c12a = 0;
data.m2c12a = 0;
data.m3c12a = 0;
data.m1c12tr = 0;
data.m2c12tr = 0;
data.m3c12tr = 0;
data.m1c12tl = 0;
data.m2c12tl = 0;
data.m3c12tl = 0;
data.m1c12r = false;
data.m2c12r = false;
data.m3c12r = false;
data.m1c13a = 0;
data.m2c13a = 0;
data.m3c13a = 0;
data.m1c13tr = 0;
data.m2c13tr = 0;
data.m3c13tr = 0;
data.m1c13tl = 0;
data.m2c13tl = 0;
data.m3c13tl = 0;
data.m1c13r = false;
data.m2c13r = false;
data.m3c13r = false;
data.m1c14a = 0;
data.m2c14a = 0;
data.m3c14a = 0;
data.m1c14tr = 0;
data.m2c14tr = 0;
data.m3c14tr = 0;
data.m1c14tl = 0;
data.m2c14tl = 0;
data.m3c14tl = 0;
data.m1c14r = false;
data.m2c14r = false;
data.m3c14r = false;
data.m1c15a = 0;
data.m2c15a = 0;
data.m3c15a = 0;
data.m1c15tr = 0;
data.m2c15tr = 0;
data.m3c15tr = 0;
data.m1c15tl = 0;
data.m2c15tl = 0;
data.m3c15tl = 0;
data.m1c15r = false;
data.m2c15r = false;
data.m3c15r = false;
data.m1c16a = 0;
data.m2c16a = 0;
data.m3c16a = 0;
data.m1c16tr = 0;
data.m2c16tr = 0;
data.m3c16tr = 0;
data.m1c16tl = 0;
data.m2c16tl = 0;
data.m3c16tl = 0;
data.m1c16r = false;
data.m2c16r = false;
data.m3c16r = false;
data.m1c1dz = 0;
data.m2c1dz = 0;
data.m3c1dz = 0;
data.m1c2dz = 0;
data.m2c2dz = 0;
data.m3c2dz = 0;
data.m1c3dz = 0;
data.m2c3dz = 0;
data.m3c3dz = 0;
data.m1c4dz = 0;
data.m2c4dz = 0;
data.m3c4dz = 0;
data.m1c5dz = 0;
data.m2c5dz = 0;
data.m3c5dz = 0;
data.m1c6dz = 0;
data.m2c6dz = 0;
data.m3c6dz = 0;
data.m1c7dz = 0;
data.m2c7dz = 0;
data.m3c7dz = 0;
data.m1c8dz = 0;
data.m2c8dz = 0;
data.m3c8dz = 0;
data.m1c9dz = 0;
data.m2c9dz = 0;
data.m3c9dz = 0;
data.m1c10dz = 0;
data.m2c10dz = 0;
data.m3c10dz = 0;
data.m1c11dz = 0;
data.m2c11dz = 0;
data.m3c11dz = 0;
data.m1c12dz = 0;
data.m2c12dz = 0;
data.m3c12dz = 0;
data.m1c13dz = 0;
data.m2c13dz = 0;
data.m3c13dz = 0;
data.m1c14dz = 0;
data.m2c14dz = 0;
data.m3c14dz = 0;
data.m1c15dz = 0;
data.m2c15dz = 0;
data.m3c15dz = 0;
data.m1c16dz = 0;
data.m2c16dz = 0;
data.m3c16dz = 0;
data.vtxw = 07.00;
data.vtxc = 06.60;
data.m1vrxw = 10.50;
data.m1vrxc = 9.90;
data.m2vrxw = 10.50;
data.m2vrxc = 9.90;
data.m3vrxw = 10.50;
data.m3vrxc = 9.90;
defaults = 123;
EEPROM.put(0, defaults);
EEPROM.put(2, data);
}
void loop()
{
if(value.fs == true){
if(millis() - fstime > 3000 ) {
value.fs = false;
}
}
vval = analogRead(A15);
vout = (vval * 5.0) / 1024;
volt = vout / (r2 /(r1+r2));
if(volt <= data.vtxc){
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
volttxlow = 2;
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
volttxlow = 0;
}
}
if(volt > data.vtxc && volt <= data.vtxw){
if(millis() - buzzerrepeattime > 60000) {
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
buzzerrepeattime = millis();
}
}
else {
noTone(buzzer);
}
}
if(millis() - backlighton > 5000) {
lcd.noBacklight();
}
if(menu == 0 && sub0 == 0 && sub1 == 0 && sub2 == 0 && sub3 == 0 && sub4 == 0){
screen = "000000";
clearlcd();
lcd.setCursor(0, 0);
lcd.print("Model: ");
lcd.print(data.model);
lcd.print(" ");
lcd.print(modelstate);
lcd.print(" ");
lcd.setCursor(0, 1);
if(volttxlow >= 2) {
lcd.print("T LOW ");
}
else {
if(volt < 10){
lcd.print("T ");
}
else {
lcd.print("T");
}
lcd.print(volt);
lcd.print("V");
}
if(voltrxlow >= 2) {
lcd.print(" R LOW ");
}
else {
if(voltrx < 10){
lcd.print(" R ");
}
else {
lcd.print(" R");
}
lcd.print(voltrx);
lcd.print("V");
}
if(!digitalRead(selectButton)) {
menu = 1;
light();
while(!digitalRead(selectButton));
}
}
if(!digitalRead(downButton)) {
light();
}
if(!digitalRead(upButton)) {
light();
}
if(menu != 0) {
modifysettings();
}
if(writerom == 1) {
EEPROM.put(2, data);
writerom = 0;
}
if(!digitalRead(ch13lbutton) && digitalRead(ch13rbutton)) {
ch13button = 12;
}
else if(digitalRead(ch13lbutton) && !digitalRead(ch13rbutton)) {
ch13button = 1020;
}
else {
ch13button = 512;
}
if(!digitalRead(ch14lbutton) && digitalRead(ch14rbutton)) {
ch14button = 12;
}
else if(digitalRead(ch14lbutton) && !digitalRead(ch14rbutton)) {
ch14button = 1020;
}
else {
ch14button = 512;
}
if(!digitalRead(ch15lbutton) && digitalRead(ch15rbutton)) {
ch15button = 12;
}
else if(digitalRead(ch15lbutton) && !digitalRead(ch15rbutton)) {
ch15button = 1020;
}
else {
ch15button = 512;
}
if(!digitalRead(ch16lbutton) && digitalRead(ch16rbutton)) {
ch16button = 12;
}
else if(digitalRead(ch16lbutton) && !digitalRead(ch16rbutton)) {
ch16button = 1020;
}
else {
ch16button = 512;
}
if(data.model == 1){
unsigned long now;
unsigned long pumpneededlasttime;
ch1_mix = pumpmix(analogRead(A0), 512);
ch3_mix = pumpmix(analogRead(A2), 512);
ch4_mix = pumpmix(analogRead(A3), 512);
ch5_mix = pumpmix(analogRead(A4), 512);
ch6_mix = pumpmix(analogRead(A5), 512);
mix_sum = (ch1_mix + ch3_mix + ch4_mix + ch5_mix + ch6_mix);
now = millis();
if (mix_sum >= 100) {
pumpneededlasttime = millis();
}
mix_sum = (mix_sum + analogRead(A6));
if (now - pumpneededlasttime > 5000) {
mix_sum = 0;
}
value.ch1 = mapJoystickValues( analogRead(A0), 12, data.m1c1a, 1020, data.m1c1r, data.m1c1tr, data.m1c1tl, data.m1c1dz);
value.ch2 = mapJoystickValues( analogRead(A1), 12, data.m1c2a, 1020, data.m1c2r, data.m1c2tr, data.m1c2tl, data.m1c2dz);
value.ch3 = mapJoystickValues( analogRead(A2), 12, data.m1c3a, 1020, data.m1c3r, data.m1c3tr, data.m1c3tl, data.m1c3dz);
value.ch4 = mapJoystickValues( analogRead(A3), 12, data.m1c4a, 1020, data.m1c4r, data.m1c4tr, data.m1c4tl, data.m1c4dz);
value.ch5 = mapJoystickValues( analogRead(A4), 12, data.m1c5a, 1020, data.m1c5r, data.m1c5tr, data.m1c5tl, data.m1c5dz);
value.ch6 = mapJoystickValues( analogRead(A5), 12, data.m1c6a, 1020, data.m1c6r, data.m1c6tr, data.m1c6tl, data.m1c6dz);
if(!digitalRead(pumpauto)) {
value.ch7 = mapJoystickValues( mix_sum, 12, data.m1c7a, 1020, data.m1c7r, data.m1c7tr, data.m1c7tl, data.m1c7dz);
} else if(!digitalRead(pumpon)) {
value.ch7 = mapJoystickValues( analogRead(A6), 12, data.m1c7a, 1020, data.m1c7r, data.m1c7tr, data.m1c7tl, data.m1c7dz);
}
else
{
value.ch7 = mapJoystickValues( 0, 12, data.m1c7a, 1020, data.m1c7r, data.m1c7tr, data.m1c7tl, data.m1c7dz);
}
value.ch8 = mapJoystickValues( analogRead(A7), 12, data.m1c8a, 1020, data.m1c8r, data.m1c8tr, data.m1c8tl, data.m1c8dz);
value.ch9 = mapJoystickValues( analogRead(A8), 12, data.m1c9a, 1020, data.m1c9r, data.m1c9tr, data.m1c9tl, data.m1c9dz);
value.ch10 = mapJoystickValues( analogRead(A9), 12, data.m1c10a, 1020, data.m1c10r, data.m1c10tr, data.m1c10tl, data.m1c10dz);
value.ch11 = mapJoystickValues( analogRead(A10), 12, data.m1c11a, 1020, data.m1c11r, data.m1c11tr, data.m1c11tl, data.m1c11dz);
value.ch12 = mapJoystickValues( analogRead(A11), 12, data.m1c12a, 1020, data.m1c12r, data.m1c12tr, data.m1c12tl, data.m1c12dz);
value.ch13 = mapJoystickValues( ch13button, 12, data.m1c13a, 1020, data.m1c13r, data.m1c13tr, data.m1c13tl, data.m1c13dz);
value.ch14 = mapJoystickValues( ch14button, 12, data.m1c14a, 1020, data.m1c14r, data.m1c14tr, data.m1c14tl, data.m1c14dz);
value.ch15 = mapJoystickValues( ch15button, 12, data.m1c15a, 1020, data.m1c15r, data.m1c15tr, data.m1c15tl, data.m1c15dz);
value.ch16 = mapJoystickValues( ch16button, 12, data.m1c16a, 1020, data.m1c16r, data.m1c16tr, data.m1c16tl, data.m1c16dz);
//Serial.println(voltrx);
tx_sent = radio.write(&value, sizeof(Signal));
if (tx_sent) {
if (radio.isAckPayloadAvailable()) {
radio.read(&voltrx, sizeof(voltrx));
modelstate = "Online";
lastack = millis();
}}
if ( millis() - lastack > 1000 ) {
modelstate = "Offline";
voltrx = 00.00;
}
if(modelstate == "Offline"){
noTone(buzzer);
}
if(modelstate == "Online"){
if(voltrx <= data.m1vrxc){
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
voltrxlow = 2;
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
voltrxlow = 0;
}
}
if(voltrx > data.m1vrxc && voltrx <= data.m1vrxw){
if(millis() - buzzerrepeattime > 60000) {
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
buzzerrepeattime = millis();
}
}
else {
noTone(buzzer);
}
}
}
if(volt > data.vtxc && volt > data.vtxw && voltrx > data.m1vrxc && voltrx > data.m1vrxw){
noTone(buzzer);
}
}
if(data.model == 2){
value.ch1 = mapJoystickValues( analogRead(A0), 12, data.m2c1a, 1020, data.m2c1r, data.m2c1tr, data.m2c1tl, data.m2c1dz);
value.ch2 = mapJoystickValues( analogRead(A1), 12, data.m2c2a, 1020, data.m2c2r, data.m2c2tr, data.m2c2tl, data.m2c2dz);
value.ch3 = mapJoystickValues( analogRead(A2), 12, data.m2c3a, 1020, data.m2c3r, data.m2c3tr, data.m2c3tl, data.m2c3dz);
value.ch4 = mapJoystickValues( analogRead(A3), 12, data.m2c4a, 1020, data.m2c4r, data.m2c4tr, data.m2c4tl, data.m2c4dz);
value.ch5 = mapJoystickValues( analogRead(A4), 12, data.m2c5a, 1020, data.m2c5r, data.m2c5tr, data.m2c5tl, data.m2c5dz);
value.ch6 = mapJoystickValues( analogRead(A5), 12, data.m2c6a, 1020, data.m2c6r, data.m2c6tr, data.m2c6tl, data.m2c6dz);
value.ch7 = mapJoystickValues( analogRead(A6), 12, data.m2c7a, 1020, data.m2c7r, data.m2c7tr, data.m2c7tl, data.m2c7dz);
value.ch8 = mapJoystickValues( analogRead(A7), 12, data.m2c8a, 1020, data.m2c8r, data.m2c8tr, data.m2c8tl, data.m2c8dz);
value.ch9 = mapJoystickValues( analogRead(A8), 12, data.m2c9a, 1020, data.m2c9r, data.m2c9tr, data.m2c9tl, data.m2c9dz);
value.ch10 = mapJoystickValues( analogRead(A9), 12, data.m2c10a, 1020, data.m2c10r, data.m2c10tr, data.m2c10tl, data.m2c10dz);
value.ch11 = mapJoystickValues( analogRead(A10), 12, data.m2c11a, 1020, data.m2c11r, data.m2c11tr, data.m2c11tl, data.m2c11dz);
value.ch12 = mapJoystickValues( analogRead(A11), 12, data.m2c12a, 1020, data.m2c12r, data.m2c12tr, data.m2c12tl, data.m2c12dz);
value.ch13 = mapJoystickValues( ch13button, 12, data.m2c13a, 1020, data.m2c13r, data.m2c13tr, data.m2c13tl, data.m2c13dz);
value.ch14 = mapJoystickValues( ch14button, 12, data.m2c14a, 1020, data.m2c14r, data.m2c14tr, data.m2c14tl, data.m2c14dz);
value.ch15 = mapJoystickValues( ch15button, 12, data.m2c15a, 1020, data.m2c15r, data.m2c15tr, data.m2c15tl, data.m2c15dz);
value.ch16 = mapJoystickValues( ch16button, 12, data.m2c16a, 1020, data.m2c16r, data.m2c16tr, data.m2c16tl, data.m2c16dz);
tx_sent = radio.write(&value, sizeof(Signal));
if (tx_sent) {
if (radio.isAckPayloadAvailable()) {
radio.read(&voltrx, sizeof(voltrx));
modelstate = "Online";
lastack = millis();
}}
if ( millis() - lastack > 1000 ) {
modelstate = "Offline";
voltrx = 00.00;
}
if(modelstate == "Offline"){
noTone(buzzer);
}
if(modelstate == "Online"){
if(voltrx <= data.m2vrxc){
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
voltrxlow = 2;
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
voltrxlow = 0;
}
}
if(voltrx > data.m2vrxc && voltrx <= data.m2vrxw){
if(millis() - buzzerrepeattime > 60000) {
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
buzzerrepeattime = millis();
}
}
else {
noTone(buzzer);
}
}
}
if(volt > data.vtxc && volt > data.vtxw && voltrx > data.m2vrxc && voltrx > data.m2vrxw){
noTone(buzzer);
}
}
if(data.model == 3){
value.ch1 = mapJoystickValues( analogRead(A0), 12, data.m3c1a, 1020, data.m3c1r, data.m3c1tr, data.m3c1tl, data.m3c1dz);
value.ch2 = mapJoystickValues( analogRead(A1), 12, data.m3c2a, 1020, data.m3c2r, data.m3c2tr, data.m3c2tl, data.m3c2dz);
value.ch3 = mapJoystickValues( analogRead(A2), 12, data.m3c3a, 1020, data.m3c3r, data.m3c3tr, data.m3c3tl, data.m3c3dz);
value.ch4 = mapJoystickValues( analogRead(A3), 12, data.m3c4a, 1020, data.m3c4r, data.m3c4tr, data.m3c4tl, data.m3c4dz);
value.ch5 = mapJoystickValues( analogRead(A4), 12, data.m3c5a, 1020, data.m3c5r, data.m3c5tr, data.m3c5tl, data.m3c5dz);
value.ch6 = mapJoystickValues( analogRead(A5), 12, data.m3c6a, 1020, data.m3c6r, data.m3c6tr, data.m3c6tl, data.m3c6dz);
value.ch7 = mapJoystickValues( analogRead(A6), 12, data.m3c7a, 1020, data.m3c7r, data.m3c7tr, data.m3c7tl, data.m3c7dz);
value.ch8 = mapJoystickValues( analogRead(A7), 12, data.m3c8a, 1020, data.m3c8r, data.m3c8tr, data.m3c8tl, data.m3c8dz);
value.ch9 = mapJoystickValues( analogRead(A8), 12, data.m3c9a, 1020, data.m3c9r, data.m3c9tr, data.m3c9tl, data.m3c9dz);
value.ch10 = mapJoystickValues( analogRead(A9), 12, data.m3c10a, 1020, data.m3c10r, data.m3c10tr, data.m3c10tl, data.m3c10dz);
value.ch11 = mapJoystickValues( analogRead(A10), 12, data.m3c11a, 1020, data.m3c11r, data.m3c11tr, data.m3c11tl, data.m3c11dz);
value.ch12 = mapJoystickValues( analogRead(A11), 12, data.m3c12a, 1020, data.m3c12r, data.m3c12tr, data.m3c12tl, data.m3c12dz);
value.ch13 = mapJoystickValues( ch13button, 12, data.m3c13a, 1020, data.m3c13r, data.m3c13tr, data.m3c13tl, data.m3c13dz);
value.ch14 = mapJoystickValues( ch14button, 12, data.m3c14a, 1020, data.m3c14r, data.m3c14tr, data.m3c14tl, data.m3c14dz);
value.ch15 = mapJoystickValues( ch15button, 12, data.m3c15a, 1020, data.m3c15r, data.m3c15tr, data.m3c15tl, data.m3c15dz);
value.ch16 = mapJoystickValues( ch16button, 12, data.m3c16a, 1020, data.m3c16r, data.m3c16tr, data.m3c16tl, data.m3c16dz);
tx_sent = radio.write(&value, sizeof(Signal));
if (tx_sent) {
if (radio.isAckPayloadAvailable()) {
radio.read(&voltrx, sizeof(voltrx));
modelstate = "Online";
lastack = millis();
}}
if ( millis() - lastack > 1000 ) {
modelstate = "Offline";
voltrx = 00.00;
}
if(modelstate == "Offline"){
noTone(buzzer);
}
if(modelstate == "Online"){
if(voltrx <= data.m3vrxc){
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
voltrxlow = 2;
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
voltrxlow = 0;
}
}
if(voltrx > data.m3vrxc && voltrx <= data.m3vrxw){
if(millis() - buzzerrepeattime > 60000) {
if(millis() - buzzertime > 1000) {
tone(buzzer, 2000);
buzzertime = millis();
}
if(millis() - buzzertime > 500) {
tone(buzzer, 1000);
buzzerrepeattime = millis();
}
}
else {
noTone(buzzer);
}
}
}
if(volt > data.vtxc && volt > data.vtxw && voltrx > data.m3vrxc && voltrx > data.m3vrxw){
noTone(buzzer);
}
}
}