version 1.1
This commit is contained in:
@@ -20,23 +20,23 @@ MotorGyro motorGyro[] = {
|
|||||||
DRONE::DRONE() {
|
DRONE::DRONE() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DRONE::setPinESC(int pin, MotorPosition mp) {
|
void DRONE::setPinESC(int pin, MotorPosition mp, int speedOffset) {
|
||||||
switch (mp) {
|
switch (mp) {
|
||||||
case BR:
|
case BR:
|
||||||
back_right.setMotorPosition(mp);
|
back_right.setMotorPosition(mp);
|
||||||
back_right.setPinESC(pin);
|
back_right.setPinESC(pin, speedOffset);
|
||||||
break;
|
break;
|
||||||
case BL:
|
case BL:
|
||||||
back_left.setMotorPosition(mp);
|
back_left.setMotorPosition(mp);
|
||||||
back_left.setPinESC(pin);
|
back_left.setPinESC(pin, speedOffset);
|
||||||
break;
|
break;
|
||||||
case FR:
|
case FR:
|
||||||
front_right.setMotorPosition(mp);
|
front_right.setMotorPosition(mp);
|
||||||
front_right.setPinESC(pin);
|
front_right.setPinESC(pin, speedOffset);
|
||||||
break;
|
break;
|
||||||
case FL:
|
case FL:
|
||||||
front_left.setMotorPosition(mp);
|
front_left.setMotorPosition(mp);
|
||||||
front_left.setPinESC(pin);
|
front_left.setPinESC(pin, speedOffset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,10 +73,10 @@ void DRONE::decelerate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DRONE::stop() {
|
void DRONE::stop() {
|
||||||
back_right.setSpeed(1000);
|
back_right.stop();
|
||||||
back_left.setSpeed(1000);
|
back_left.stop();
|
||||||
front_left.setSpeed(1000);
|
front_left.stop();
|
||||||
front_right.setSpeed(1000);
|
front_right.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
String DRONE::getSpeedFromMotor(MotorPosition mp) {
|
String DRONE::getSpeedFromMotor(MotorPosition mp) {
|
||||||
@@ -112,7 +112,7 @@ void DRONE::updateMotors(float* mpuValues) {
|
|||||||
float pitch = mpuValues[0];
|
float pitch = mpuValues[0];
|
||||||
float roll = mpuValues[1];
|
float roll = mpuValues[1];
|
||||||
|
|
||||||
float threshold = 0.3;
|
float threshold = 0.5;
|
||||||
|
|
||||||
PitchRollStates pitchStatus = IDLE;
|
PitchRollStates pitchStatus = IDLE;
|
||||||
if (pitch < -threshold) {
|
if (pitch < -threshold) {
|
||||||
@@ -128,7 +128,7 @@ void DRONE::updateMotors(float* mpuValues) {
|
|||||||
rollStatus = PLUS;
|
rollStatus = PLUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serial.println("PS: " + String(pitchStatus) + " | RS: " + String(rollStatus));
|
Serial.println("PS: " + String(pitchStatus) + " | RS: " + String(rollStatus));
|
||||||
|
|
||||||
int numCond = sizeof(motorGyro) / sizeof(motorGyro[0]);
|
int numCond = sizeof(motorGyro) / sizeof(motorGyro[0]);
|
||||||
for (int i = 0; i < numCond; i++) {
|
for (int i = 0; i < numCond; i++) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class DRONE {
|
|||||||
RadioController radio;
|
RadioController radio;
|
||||||
GYRO gyro;
|
GYRO gyro;
|
||||||
DRONE();
|
DRONE();
|
||||||
void setPinESC(int pin, MotorPosition mp);
|
void setPinESC(int pin, MotorPosition mp, int speedOffset);
|
||||||
void setSpeed(int speed, MotorPosition mp);
|
void setSpeed(int speed, MotorPosition mp);
|
||||||
void accelerate();
|
void accelerate();
|
||||||
void decelerate();
|
void decelerate();
|
||||||
|
|||||||
+9
-9
@@ -29,10 +29,10 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set drone motorPins
|
// set drone motorPins
|
||||||
drone.setPinESC(6, MotorPosition::FR);
|
drone.setPinESC(6, MotorPosition::FR, 70); // 1080
|
||||||
drone.setPinESC(7, MotorPosition::FL);
|
drone.setPinESC(7, MotorPosition::FL, 120); // 1130
|
||||||
drone.setPinESC(5, MotorPosition::BR);
|
drone.setPinESC(5, MotorPosition::BR, 30); // 1040
|
||||||
drone.setPinESC(8, MotorPosition::BL);
|
drone.setPinESC(8, MotorPosition::BL, 190); // 1200
|
||||||
|
|
||||||
|
|
||||||
lastReceivedMessage = millis();
|
lastReceivedMessage = millis();
|
||||||
@@ -93,7 +93,7 @@ void loop() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
drone.update();
|
// drone.update();
|
||||||
|
|
||||||
delay(10);
|
delay(10);
|
||||||
// delay(1000);
|
// delay(1000);
|
||||||
@@ -109,10 +109,10 @@ void manualMotorSpeed() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val < MOTOR().minSpeed)
|
// if (val < MOTOR().getMinSpeed())
|
||||||
val = MOTOR().minSpeed;
|
// val = MOTOR().getMinSpeed();
|
||||||
else if (val > MOTOR().maxSpeed)
|
// else if (val > MOTOR().getMaxSpeed())
|
||||||
val = MOTOR().maxSpeed;
|
// val = MOTOR().getMaxSpeed();
|
||||||
|
|
||||||
if ((millis() - startTime) >= delayTime && gotSerialData == true) {
|
if ((millis() - startTime) >= delayTime && gotSerialData == true) {
|
||||||
drone.setSpeed(val, MotorPosition::FR);
|
drone.setSpeed(val, MotorPosition::FR);
|
||||||
|
|||||||
@@ -5,8 +5,11 @@ void MOTOR::setMotorPosition(MotorPosition mp) {
|
|||||||
motorPosition = mp;
|
motorPosition = mp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MOTOR::setPinESC(int pin) {
|
void MOTOR::setPinESC(int pin, int speedOffset) {
|
||||||
pinESC = pin;
|
pinESC = pin;
|
||||||
|
speedOffset -= 10; // error tolerance
|
||||||
|
minSpeed += speedOffset;
|
||||||
|
maxSpeed += speedOffset;
|
||||||
esc.attach(pinESC, minSpeed, maxSpeed);
|
esc.attach(pinESC, minSpeed, maxSpeed);
|
||||||
setSpeedInternal(minSpeed);
|
setSpeedInternal(minSpeed);
|
||||||
}
|
}
|
||||||
@@ -18,7 +21,7 @@ void MOTOR::setSpeedInternal(int speed) {
|
|||||||
}
|
}
|
||||||
currentSpeed = speed;
|
currentSpeed = speed;
|
||||||
esc.write(currentSpeed);
|
esc.write(currentSpeed);
|
||||||
Serial.println("MP:" + String(motorPosition) + "|Speed:" + String(currentSpeed));
|
Serial.println("MP:" + String(motorPosition) + "|Speed:" + String(getSpeed()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MOTOR::setSpeed(int speed) {
|
void MOTOR::setSpeed(int speed) {
|
||||||
@@ -26,7 +29,7 @@ void MOTOR::setSpeed(int speed) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int MOTOR::getSpeed() {
|
int MOTOR::getSpeed() {
|
||||||
return currentSpeed;
|
return map(currentSpeed, minSpeed, maxSpeed, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MOTOR::accelerate() {
|
void MOTOR::accelerate() {
|
||||||
@@ -38,3 +41,7 @@ void MOTOR::decelerate() {
|
|||||||
int speed = currentSpeed - speedInterval;
|
int speed = currentSpeed - speedInterval;
|
||||||
setSpeedInternal(speed);
|
setSpeedInternal(speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MOTOR::stop() {
|
||||||
|
setSpeedInternal(minSpeed);
|
||||||
|
}
|
||||||
@@ -13,17 +13,18 @@ class MOTOR {
|
|||||||
int currentSpeed;
|
int currentSpeed;
|
||||||
void setSpeedInternal(int speed);
|
void setSpeedInternal(int speed);
|
||||||
MotorPosition motorPosition;
|
MotorPosition motorPosition;
|
||||||
|
int minSpeed = 1000;
|
||||||
|
int maxSpeed = 2000;
|
||||||
|
const int speedInterval = 10;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const int minSpeed = 1000;
|
|
||||||
const int maxSpeed = 2000;
|
|
||||||
const int speedInterval = 10;
|
|
||||||
void setMotorPosition(MotorPosition mp);
|
void setMotorPosition(MotorPosition mp);
|
||||||
void setPinESC(int pin);
|
void setPinESC(int pin, int speedOffset);
|
||||||
void setSpeed(int speed);
|
void setSpeed(int speed);
|
||||||
int getSpeed();
|
int getSpeed();
|
||||||
void accelerate();
|
void accelerate();
|
||||||
void decelerate();
|
void decelerate();
|
||||||
|
void stop();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#DroneReceiver
|
||||||
|
|
||||||
|
|
||||||
|
Is a Arduino Script that controlls the drone body
|
||||||
+2
-12
@@ -8,27 +8,17 @@ void RadioController::setup(int cepin, int cspin) {
|
|||||||
Serial.println("Error initializing radio");
|
Serial.println("Error initializing radio");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Succesfully initializing radio");
|
Serial.println("Succesfully initializing radio");
|
||||||
// radio.openWritingPipe(writePipe);
|
|
||||||
// radio.openReadingPipe(1, readPipe);
|
|
||||||
// radio.setPALevel(RF24_PA_MAX);
|
|
||||||
// radio.disableDynamicPayloads();
|
|
||||||
// radio.setAutoAck(false);
|
|
||||||
// radio.setRetries(5, 15);
|
// radio.setRetries(5, 15);
|
||||||
|
|
||||||
|
|
||||||
// radio.setDataRate( RF24_250KBPS );
|
radio.setDataRate( RF24_250KBPS );
|
||||||
// radio.openReadingPipe(1, readPipe);
|
|
||||||
|
|
||||||
// radio.enableAckPayload();
|
|
||||||
|
|
||||||
// radio.startListening();
|
|
||||||
|
|
||||||
uint8_t address[][6] = { "1Node", "2Node" };
|
uint8_t address[][6] = { "1Node", "2Node" };
|
||||||
|
|
||||||
// Set the PA Level low to try preventing power supply related problems
|
// Set the PA Level low to try preventing power supply related problems
|
||||||
// because these examples are likely run with nodes in close proximity to
|
// because these examples are likely run with nodes in close proximity to
|
||||||
// each other.
|
// each other.
|
||||||
radio.setPALevel(RF24_PA_LOW); // RF24_PA_MAX is default.
|
radio.setPALevel(RF24_PA_HIGH); // RF24_PA_MAX is default.
|
||||||
|
|
||||||
// to use ACK payloads, we need to enable dynamic payload lengths (for all nodes)
|
// to use ACK payloads, we need to enable dynamic payload lengths (for all nodes)
|
||||||
radio.enableDynamicPayloads(); // ACK payloads are dynamically sized
|
radio.enableDynamicPayloads(); // ACK payloads are dynamically sized
|
||||||
|
|||||||
Reference in New Issue
Block a user