#include <EasyTransfer.h>
#include <LiquidCrystal.h>
int trimvalthro=0, trimvalaile=0, trimvalelev=0, trimvalrudd=0, schermnummer;
boolean trimbuttonthroomhoog, trimbuttonthroomlaag, trimbuttonthroomhoogPREVIOUS, trimbuttonthroomlaagPREVIOUS;
boolean trimbuttonailelinks, trimbuttonailerechts, trimbuttonailelinksPREVIOUS, trimbuttonailerechtsPREVIOUS;
boolean trimbuttonelevomhoog, trimbuttonelevomlaag, trimbuttonelevomhoogPREVIOUS, trimbuttonelevomlaagPREVIOUS;
boolean trimbuttonruddlinks, trimbuttonruddrechts, trimbuttonruddlinksPREVIOUS, trimbuttonruddrechtsPREVIOUS;
boolean autopilotswitch;
long unsigned int oudetijd, nieuwetijd, cycletijd;
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
EasyTransfer ETin, ETout;
struct RECEIVE_DATA_STRUCTURE{
int temp,gyro,gyro1,cycletijdontvanger;
};
struct SEND_DATA_STRUCTURE{
int temp,gyro,gyro1,cycletijdontvanger,autopilot;
int servoval, servoval1, servoval2, servoval3,servoval4;
};
RECEIVE_DATA_STRUCTURE rxdata;
SEND_DATA_STRUCTURE txdata;
void setup(){
Serial.begin(38400);
//start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
ETin.begin(details(rxdata), &Serial);
ETout.begin(details(txdata), &Serial);
pinMode(45, INPUT);
pinMode(37, INPUT);
pinMode(35, INPUT);
pinMode(33, INPUT);
pinMode(31, INPUT);
pinMode(29, INPUT);
pinMode(27, INPUT);
pinMode(25, INPUT);
pinMode(23, INPUT);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Xbee Transmitter");
delay(2000);
}
void loop(){
autopilotswitch = digitalRead(45);
oudetijd=millis();
// TRIM FUNCTION
trimbuttonthroomhoog = digitalRead(33);
if (trimbuttonthroomhoog==HIGH && trimbuttonthroomhoogPREVIOUS==LOW){
++ trimvalthro;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonthroomhoogPREVIOUS = digitalRead(33);
trimbuttonthroomlaag = digitalRead(31);
if (trimbuttonthroomlaag==HIGH && trimbuttonthroomlaagPREVIOUS==LOW){
-- trimvalthro;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonthroomlaagPREVIOUS = digitalRead(31);
trimbuttonailelinks = digitalRead(23);
if (trimbuttonailelinks==HIGH && trimbuttonailelinksPREVIOUS==LOW){
-- trimvalaile;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonailelinksPREVIOUS = digitalRead(23);
trimbuttonailerechts = digitalRead(25);
if (trimbuttonailerechts==HIGH && trimbuttonailerechtsPREVIOUS==LOW){
++ trimvalaile;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonailerechtsPREVIOUS = digitalRead(25);
trimbuttonruddlinks = digitalRead(37);
if (trimbuttonruddlinks==HIGH && trimbuttonruddlinksPREVIOUS==LOW){
-- trimvalrudd;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonruddlinksPREVIOUS = digitalRead(37);
trimbuttonruddrechts = digitalRead(35);
if (trimbuttonruddrechts==HIGH && trimbuttonruddrechtsPREVIOUS==LOW){
++ trimvalrudd;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonruddrechtsPREVIOUS = digitalRead(35);
trimbuttonelevomhoog = digitalRead(27);
if (trimbuttonelevomhoog==HIGH && trimbuttonelevomhoogPREVIOUS==LOW){
++ trimvalelev;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonelevomhoogPREVIOUS = digitalRead(27);
trimbuttonelevomlaag = digitalRead(29);
if (trimbuttonelevomlaag==HIGH && trimbuttonelevomlaagPREVIOUS==LOW){
-- trimvalelev;
digitalWrite(13, HIGH); delay (10);} else { digitalWrite(13, LOW); }
trimbuttonelevomlaagPREVIOUS = digitalRead(29);
//Display function can be changed with analogpot connected to arduino analog input 4!!!
schermnummer= map(analogRead(4),0,1024,1,9);
switch (schermnummer){
case 1:{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CH1");
lcd.setCursor(0,

;
lcd.print("CH2");
lcd.setCursor(8, 0);
lcd.print("CH3");
lcd.setCursor(8, 1);
lcd.print("CH4");
int servoval = (map(analogRead(0),0,1024,0,90))+trimvalaile-44;//
lcd.setCursor(3, 0);
lcd.print(" ");
lcd.print(servoval);
lcd.setCursor(7, 0);
lcd.print(" ");
int servoval1 = (map(analogRead(1),0,1024,0,90))+trimvalthro-41;
lcd.setCursor(3, 1);
lcd.print(" ");
lcd.print(servoval1);
lcd.setCursor(7, 1);
lcd.print(" ");
int servoval2 = (map(analogRead(2),0,1024,0,90))+trimvalelev-44;
lcd.setCursor(12, 0);
lcd.print(" ");
lcd.print(servoval2);
lcd.setCursor(16, 0);
lcd.print(" ");
int servoval3 = (map(analogRead(3),0,1024,0,90))+trimvalrudd-45;
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.print(servoval3);
lcd.setCursor(16, 1);
lcd.print(" ");}
break;
case 2:{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gyro");
lcd.setCursor(0, 1);
lcd.print(rxdata.gyro);
lcd.setCursor(8, 1);
lcd.print(rxdata.gyro1);}
break;
case 3:{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature");
lcd.setCursor(0, 1);
lcd.print(rxdata.temp);}
break;
case 4:{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Cycletijd");
lcd.setCursor(0, 1);
lcd.print(cycletijd);}
break;
case 5:{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CycletijdRX");
lcd.setCursor(0, 1);
lcd.print(rxdata.cycletijdontvanger);}
break;
}
//then we will go ahead and send that data out
ETout.sendData();
txdata.servoval = (map(analogRead(0),300,824,0,1024))+trimvalaile+100;
txdata.servoval1 = (map(analogRead(1),300,824,1024,0))+trimvalthro;
txdata.servoval2 = (map(analogRead(2),300,824,1024,0))+trimvalelev-50;
txdata.servoval3 = (map(analogRead(3),300,824,1024,0))+trimvalrudd;
txdata.servoval4 = (map(analogRead(0),300,824,0,1024))+trimvalaile+200;
if (autopilotswitch==HIGH){txdata.autopilot = 100;}
if (autopilotswitch==LOW){txdata.autopilot = 0; }
for(int i=0; i<5; i++){
//remember, you could use an if() here to check for new data, this time it's not needed.
ETin.receiveData();
}
//delay for good measure
delayMicroseconds(7800);
nieuwetijd=millis();
cycletijd=nieuwetijd-oudetijd;
}