Hello, I have a question. I need to combine my code for my Arduino project. I'm using a Arduino micro board . The 2 codes are maxsonar and another is a flying drones coding. I'm lost and don't know how to combine the both of them as the maxsonar code will overwrite the flying drones code causing it unable to fly. Maxsonar code const int anPin1 = 0; const int anPin2 = 1; int triggerPin1 = 13; long distance1, distance2, cm1 ,cm2; void setup() { Serial.begin(9600); // sets the serial port to 9600 pinMode(triggerPin1, OUTPUT); pinMode(A5, OUTPUT); pinMode(A11, OUTPUT); } void start_sensor(){ digitalWrite(triggerPin1,HIGH); delay(1); digitalWrite(triggerPin1,LOW); } void Fading()//led1 { if (distance1 == 9) { analogWrite(A5,25.5); delay(10); } else if (distance1 == 8) { analogWrite(A5,76.5); delay(10); } else if( distance1 == 7) { analogWrite(A5,153); delay(10); } else if(distance1 == 6) { analogWrite(A5,255); delay(10); } } void Fading2()//led1 { if (distance2 == 9) { analogWrite(A11,25.5); delay(10); } else if (distance2 == 8) { analogWrite(A11,76.5); delay(10); } else if( distance2 == 7) { analogWrite(A11,153); delay(10); } else if(distance2 == 6 ) { analogWrite(A11,255); delay(10); } } void read_sensors(){ /* Scale factor is (Vcc/512) per inch. A 5V supply yields ~9.8mV/in Arduino analog pin goes from 0 to 1024, so the value has to be divided by 2 to get the actual inches */ distance1 = analogRead(anPin1)/2; distance2 = analogRead(anPin2)/2; } void count_in_cm() { cm1 = distance1 * 2.54; cm2 = distance2 * 2.54; } void print_all() { if( distance1 <10 && distance2 >=10 ) { Fading(); analogWrite(A11,0); Serial.print("Sensor1: Warning"); Serial.print(" "); Serial.print(" "); Serial.print("S2"); Serial.print(" "); Serial.print(distance2); Serial.print("in"); Serial.print(" "); Serial.print(" "); Serial.print(cm2); Serial.print("cm"); Serial.println(); delay(700); } else if(distance1 >= 10 && distance2 < 10) { Fading2(); analogWrite(A5,0); Serial.print("S1"); Serial.print(" "); Serial.print(distance1); Serial.print("in"); Serial.print(" "); Serial.print(" "); Serial.print(cm1); Serial.print("cm"); Serial.print(" "); Serial.print(" "); Serial.print("Sensor2: Warning"); Serial.println(); delay(700); } else if (distance1 < 10 && distance2 < 10) { Fading(); Fading2(); Serial.print("Sensor1: Warning"); Serial.print(" "); Serial.print("Sensor2: Warning"); Serial.println(); delay(700); } else { analogWrite(A11,0); analogWrite(A5,0); Serial.print("S1"); Serial.print(" "); Serial.print(distance1); Serial.print("in"); Serial.print(" "); Serial.print(" "); Serial.print(cm1); Serial.print("cm"); Serial.print(" "); Serial.print(" "); Serial.print("S2"); Serial.print(" "); Serial.print(distance2); Serial.print("in"); Serial.print(" "); Serial.print(" "); Serial.print(cm2); Serial.print("cm"); Serial.println(); delay(700); } } void loop() { start_sensor(); read_sensors(); count_in_cm(); print_all(); delay(200); //This is the equivant of the amount of sensors times 50. If you changed this to 5 sensors the delay would be 250. } flying drone code #include #include // channel declaration Servo channel1; // throttle Servo channel2; // yaw Servo channel3; // pitch Servo channel4; // roll Servo channel5; // ball drop servo // PWM freq setting, should it be 62.33Hz? const int PWMConst = 20022;//50HZ // global variables byte incomingByte, incomingByteUSB; byte rcBuffer[32], usbBuffer[12]; int i = 0, j = 0, STATE = 1; int Flag = 0, usbFlag = 0; unsigned int thr_16int = 0, yaw_16int = 0, pit_16int = 0, rol_16int = 0, gear_16int = 0; unsigned int thr_16int_usb = 0, yaw_16int_usb = 0, pit_16int_usb = 0, rol_16int_usb = 0; float throttle = 1000, roll = 1500, pitch = 1500, yaw = 1500; int gear = 1500; float currT, prevT = 0, _flagHover, throFlag; // functions declaration void extract_RC_cmd(void); void extract_USB_cmd(void); void translate_RC_cmd(void); void translate_USB_cmd(void); void RC_Neutral(void); void reset_usb(void); void reset_rc(void); void hover(void); void sonar(void); void setup() { // setting registers TCCR1A = _BV(COM1A1) | _BV(COM1B1); TCCR1B = _BV(WGM13) | _BV(CS11); ICR1 = PWMConst; // set PWM I/O ports channel1.attach(6); // throttle channel2.attach(9); // yaw channel3.attach(5); // pitch channel4.attach(10); // roll channel5.attach(11); // fail safe-attit //init usb buffer usbBuffer[0] = 0x03; usbBuffer[1] = 0xE8; usbBuffer[2] = 0x0D; usbBuffer[3] = 0xAC; usbBuffer[4] = 0x15; usbBuffer[5] = 0x7C; usbBuffer[6] = 0x1D; usbBuffer[7] = 0x4C; reset_rc(); reset_usb(); Serial1.begin(115200); // rc Rx data in Serial.begin(115200); // USB } void loop() { // accept serial data from computer if (Serial.available() > 0) { incomingByteUSB = Serial.read(); if (incomingByteUSB >= 0x03 && incomingByteUSB <= 0x07) { usbFlag = 1; } if (usbFlag == 1) { usbBuffer[j] = incomingByteUSB; j++; if (j == 12) { usbFlag = 0; j = 0; extract_USB_cmd(); } } } // accepte serial data from RC if (Serial1.available() > 0) { incomingByte = Serial1.read(); if (incomingByte >= 0x80 && incomingByte <= 0x87) { Flag = 1; } if (Flag == 1) { rcBuffer[i] = incomingByte; i++; if (i == 32) { Flag = 0; i = 0; extract_RC_cmd(); } } // Serial.print(rcBuffer[i]); } // STATE MACHINE switch (STATE) { case 1: translate_USB_cmd(); reset_rc(); //Serial.print(); break; case 2: translate_RC_cmd(); reset_usb(); //Serial.print('R'); break; case 3: landing(); break; default: RC_Neutral(); break; } // output PWM channel1.write(throttle); channel2.write(yaw); channel3.write(pitch); channel4.write(roll); channel5.write(gear); } // local functions void extract_RC_cmd() { if (rcBuffer[0] >= 0x80 && rcBuffer[0] <= 0x87) // double check throttle range { thr_16int = rcBuffer[0] << 8 | rcBuffer[1]; // 16 bit throttle // Serial.print(thr_16int); } if (rcBuffer[4] >= 0x19 && rcBuffer[4] <= 0x1E) // double check yaw range { yaw_16int = rcBuffer[4] << 8 | rcBuffer[5]; // 16 bit yaw //Serial.print(yaw_16int); } if (rcBuffer[16] >= 0x09 && rcBuffer[16] <= 0x0E) // double check yaw range { rol_16int = rcBuffer[16] << 8 | rcBuffer[17]; // 16 bit yaw //Serial.print(rol_16int); } if (rcBuffer[20] >= 0x11 && rcBuffer[20] <= 0x16) // double check yaw range { pit_16int = rcBuffer[20] << 8 | rcBuffer[21]; // 16 bit yaw //Serial.print(pit_16int); } if (rcBuffer[22] >= 0x21 && rcBuffer[22] <= 0x26) // double check gear range { gear_16int = rcBuffer[22] << 8 | rcBuffer[23]; // 16 bit pitch //Serial.print(pit_16int); } // state if (rcBuffer[24] == 0x37 && rcBuffer[25] == 0xE0) // Fmode SW state 1: Auto { STATE = 1; } else if (rcBuffer[24] == 0x34 && rcBuffer[25] == 0x00) // Fmode SW state 2: Manual { STATE = 2; } else if (rcBuffer[24] == 0x31 && rcBuffer[25] == 0xB4) // Fmode SW state 3: Emergency landing { STATE = 3; } } void extract_USB_cmd(void) { if (usbBuffer[0] >= 0x03 && usbBuffer[0] <= 0x07) // double check throttle range { thr_16int_usb = usbBuffer[0] << 8 | usbBuffer[1]; // 16 bit throttle } if (usbBuffer[2] >= 0x0B && usbBuffer[2] <= 0x0F) // double check yaw range { yaw_16int_usb = usbBuffer[2] << 8 | usbBuffer[3]; // 16 bit yaw } if (usbBuffer[4] >= 0x13 && usbBuffer[4] <= 0x17) // double check pit range { pit_16int_usb = usbBuffer[4] << 8 | usbBuffer[5]; // 16 bit pitch } if (usbBuffer[6] >= 0x1B && usbBuffer[6] <= 0x1F) // double check rol range { rol_16int_usb = usbBuffer[6] << 8 | usbBuffer[7]; // 16 bit role } // state if (usbBuffer[10] == 0x2A && usbBuffer[11] == 0xF8) { //state = 1; // auto } else if (usbBuffer[10] == 0x2C && usbBuffer[11] == 0xEC) { STATE = 3; // emergency landing } else if (usbBuffer[10] == 0x2E && usbBuffer[11] == 0xE0) { STATE = 0; // default rc neutral } } void translate_RC_cmd(void) { throttle = (thr_16int - 30752 ) / 2.016; yaw = (9243 - yaw_16int) / 1.382; pitch = (pit_16int - 3047) / 1.378; roll = (5129 - rol_16int) / 1.373; gear = (gear_16int - 7506) / 1.165; throttle = min(2000, max(1000, throttle)); yaw = min(2000, max(1000, yaw)); pitch = min(2000, max(1000, pitch)); roll = min(2000, max(1000, roll)); gear = min(2000, max(1000, gear)); } void translate_USB_cmd(void) { throttle = thr_16int_usb; yaw = yaw_16int_usb - 2000; pitch = pit_16int_usb - 4000; roll = rol_16int_usb - 6000; //Serial.print(thr_16int_usb); throttle = min(2000, max(1000, throttle)); yaw = min(2000, max(1000, yaw)); pitch = min(2000, max(1000, pitch)); roll = min(2000, max(1000, roll)); } void RC_Neutral(void) { throttle = 1000; yaw = 1500; pitch = 1500; roll = 1500; } void landing(void) { throttle = throttle - 1; if (throttle <= 1000) throttle = 1000; yaw = 1500; pitch = 1500; roll = 1500; } void reset_usb(void) { thr_16int_usb = 1000; yaw_16int_usb = 3500; pit_16int_usb = 5500; rol_16int_usb = 7500; } void reset_rc(void) { thr_16int = 0x8000; yaw_16int = 0x1C03; pit_16int = 0x13FD; rol_16int = 0x0C07; }