Hey everyone!
Im trying to make landing gear for my rc airplane. Front gear is retracked by servos and main gear is pulled down by shaft rotated by dc motor. Im using L298N, Limit switches(for motor shaft). I want it to work like that: In default position everything to be open. When i start my transmitter, arduino starts recieving PWM signal. If signal is <1100 then all doors are opening and langing gear is going down(main landing gear checks if limit switch is activated) and if signal >1100 and height is more than 3m gear is going up. This is my first project and can you check if everything is right? Also when im trying lto upload it to ATMega 2560 Pro it tells me "exit status 1"; Error while compiling for Mega 2560.
Thank you so much!
Code: (LGU means Landing Gear UP)
#include <Servo.h>
int ch1; // приемник
#define in1 3 // мотор ляво
#define in2 4 // мотор ляво
#define in3 5 // мотор дясно
#define in4 6 // мотор дясно
int MotorSpeedA = 0; // мотори
int MotorSpeedB = 0; // мотори
Servo front_left; // преден колесник
Servo front_right;
Servo door_all; // капаци
Servo door_lock;
const int mosfetPin = 7; // LED
const int trigPin = 8; // ултразвук
const int echoPin = 9;
long duration;
int distance;
bool LGU = false;
bool LGUL = false;
bool LGUR = false;
void setup() {
pinMode(trigPin, OUTPUT); // ultrasonic
pinMode(echoPin, INPUT); // ultrasonic
pinMode(2, INPUT); // приемник
pinMode(10, INPUT); //LS-Ляво долу
pinMode(11, INPUT); //LS-Ляво горе
pinMode(12, INPUT); //LS-Дясно долу
pinMode(13, INPUT); //LS-Дясно горе
pinMode(in1, OUTPUT); // мотори
pinMode(in2, OUTPUT); // мотори
pinMode(in3, OUTPUT); // мотори
pinMode(in4, OUTPUT); // мотори
pinMode(mosfetPin, OUTPUT); // ЛЕД
front_left.attach(14,600,2300); // жълт кабел
front_right.attach(15,600,2300); // сив кабел
door_all.attach(16,600,2300); // всички капаци
door_lock.attach(17,600,2300); // капаци колесник и ключалка
door_lock.write(40); // default отвортени ключалки и капаци
door_all.write(140); // default отворени всички врати
front_left.write(60); // default свален преден колесник
front_right.write(120); // default свален преден колесник
digitalWrite(in1, LOW); // default спрени задни колесници
digitalWrite(in2, LOW); // default спрени задни колесници
digitalWrite(in3, LOW); // default спрени задни колесници
digitalWrite(in4, LOW); // default спрени задни колесници
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034/2; // разстояние на самолета от земята
ch1 = pulseIn(2, HIGH, 25000);
if (LGU && (ch1<1100)){
door_lock.write(40); // отваря капак преден колесник и ключалка
door_all.write(140); // отваря всички капаци
digitalWrite(mosfetPin, HIGH); // включва лампи
delay(1500); //изчаква
front_left.write(60); // сваля преден колесник
front_right.write(120);
if (LGUL){
digitalWrite(in1, HIGH); // сваля ляв заден колесник
digitalWrite(in2, HIGH);
}
if (LGUR){
digitalWrite(in3, HIGH); // сваля десен заден колесник
digitalWrite(in4, HIGH);
}
door_lock.write(140); // затваря капак предпазител преден колесник
LGU = false;
}
if (!LGU && (ch1>1100) && (distance>=300)){
door_lock.write(40); // отваря капак преден колесник и ключалка
delay(1500); //изчаква
front_left.write(180); // качен преден колесник
front_right.write(0);
if (!LGUL){
digitalWrite(in1, HIGH); // вдига ляв заден колесник
digitalWrite(in2, LOW);
}
if (!LGUR){
digitalWrite(in3, HIGH); // вдига десен заден колесник
digitalWrite(in4, LOW);
}
door_lock.write(140); // затваря капак предпазител преден колесник
door_all.write(40); // затваря всички капаци
digitalWrite(mosfetPin, LOW); // изключва лампи
LGU = true;
}
if(digitalRead(10) = LOW){
LGUL = true;
}
if(digitalRead(11) = LOW){
LGUL = false;
}
if(digitalRead(12) = LOW){
LGUR = true;
}
if(digitalRead(13) = LOW){
LGUR = false;
}
}