version 1.1
This commit is contained in:
@@ -20,23 +20,23 @@ MotorGyro motorGyro[] = {
|
||||
DRONE::DRONE() {
|
||||
}
|
||||
|
||||
void DRONE::setPinESC(int pin, MotorPosition mp) {
|
||||
void DRONE::setPinESC(int pin, MotorPosition mp, int speedOffset) {
|
||||
switch (mp) {
|
||||
case BR:
|
||||
back_right.setMotorPosition(mp);
|
||||
back_right.setPinESC(pin);
|
||||
back_right.setPinESC(pin, speedOffset);
|
||||
break;
|
||||
case BL:
|
||||
back_left.setMotorPosition(mp);
|
||||
back_left.setPinESC(pin);
|
||||
back_left.setPinESC(pin, speedOffset);
|
||||
break;
|
||||
case FR:
|
||||
front_right.setMotorPosition(mp);
|
||||
front_right.setPinESC(pin);
|
||||
front_right.setPinESC(pin, speedOffset);
|
||||
break;
|
||||
case FL:
|
||||
front_left.setMotorPosition(mp);
|
||||
front_left.setPinESC(pin);
|
||||
front_left.setPinESC(pin, speedOffset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -73,10 +73,10 @@ void DRONE::decelerate() {
|
||||
}
|
||||
|
||||
void DRONE::stop() {
|
||||
back_right.setSpeed(1000);
|
||||
back_left.setSpeed(1000);
|
||||
front_left.setSpeed(1000);
|
||||
front_right.setSpeed(1000);
|
||||
back_right.stop();
|
||||
back_left.stop();
|
||||
front_left.stop();
|
||||
front_right.stop();
|
||||
}
|
||||
|
||||
String DRONE::getSpeedFromMotor(MotorPosition mp) {
|
||||
@@ -112,7 +112,7 @@ void DRONE::updateMotors(float* mpuValues) {
|
||||
float pitch = mpuValues[0];
|
||||
float roll = mpuValues[1];
|
||||
|
||||
float threshold = 0.3;
|
||||
float threshold = 0.5;
|
||||
|
||||
PitchRollStates pitchStatus = IDLE;
|
||||
if (pitch < -threshold) {
|
||||
@@ -128,7 +128,7 @@ void DRONE::updateMotors(float* mpuValues) {
|
||||
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]);
|
||||
for (int i = 0; i < numCond; i++) {
|
||||
|
||||
@@ -21,7 +21,7 @@ class DRONE {
|
||||
RadioController radio;
|
||||
GYRO gyro;
|
||||
DRONE();
|
||||
void setPinESC(int pin, MotorPosition mp);
|
||||
void setPinESC(int pin, MotorPosition mp, int speedOffset);
|
||||
void setSpeed(int speed, MotorPosition mp);
|
||||
void accelerate();
|
||||
void decelerate();
|
||||
|
||||
+9
-9
@@ -29,10 +29,10 @@ void setup() {
|
||||
}
|
||||
|
||||
// set drone motorPins
|
||||
drone.setPinESC(6, MotorPosition::FR);
|
||||
drone.setPinESC(7, MotorPosition::FL);
|
||||
drone.setPinESC(5, MotorPosition::BR);
|
||||
drone.setPinESC(8, MotorPosition::BL);
|
||||
drone.setPinESC(6, MotorPosition::FR, 70); // 1080
|
||||
drone.setPinESC(7, MotorPosition::FL, 120); // 1130
|
||||
drone.setPinESC(5, MotorPosition::BR, 30); // 1040
|
||||
drone.setPinESC(8, MotorPosition::BL, 190); // 1200
|
||||
|
||||
|
||||
lastReceivedMessage = millis();
|
||||
@@ -93,7 +93,7 @@ void loop() {
|
||||
|
||||
|
||||
|
||||
drone.update();
|
||||
// drone.update();
|
||||
|
||||
delay(10);
|
||||
// delay(1000);
|
||||
@@ -109,10 +109,10 @@ void manualMotorSpeed() {
|
||||
}
|
||||
}
|
||||
|
||||
if (val < MOTOR().minSpeed)
|
||||
val = MOTOR().minSpeed;
|
||||
else if (val > MOTOR().maxSpeed)
|
||||
val = MOTOR().maxSpeed;
|
||||
// if (val < MOTOR().getMinSpeed())
|
||||
// val = MOTOR().getMinSpeed();
|
||||
// else if (val > MOTOR().getMaxSpeed())
|
||||
// val = MOTOR().getMaxSpeed();
|
||||
|
||||
if ((millis() - startTime) >= delayTime && gotSerialData == true) {
|
||||
drone.setSpeed(val, MotorPosition::FR);
|
||||
|
||||
@@ -5,8 +5,11 @@ void MOTOR::setMotorPosition(MotorPosition mp) {
|
||||
motorPosition = mp;
|
||||
}
|
||||
|
||||
void MOTOR::setPinESC(int pin) {
|
||||
void MOTOR::setPinESC(int pin, int speedOffset) {
|
||||
pinESC = pin;
|
||||
speedOffset -= 10; // error tolerance
|
||||
minSpeed += speedOffset;
|
||||
maxSpeed += speedOffset;
|
||||
esc.attach(pinESC, minSpeed, maxSpeed);
|
||||
setSpeedInternal(minSpeed);
|
||||
}
|
||||
@@ -18,7 +21,7 @@ void MOTOR::setSpeedInternal(int speed) {
|
||||
}
|
||||
currentSpeed = speed;
|
||||
esc.write(currentSpeed);
|
||||
Serial.println("MP:" + String(motorPosition) + "|Speed:" + String(currentSpeed));
|
||||
Serial.println("MP:" + String(motorPosition) + "|Speed:" + String(getSpeed()));
|
||||
}
|
||||
|
||||
void MOTOR::setSpeed(int speed) {
|
||||
@@ -26,7 +29,7 @@ void MOTOR::setSpeed(int speed) {
|
||||
}
|
||||
|
||||
int MOTOR::getSpeed() {
|
||||
return currentSpeed;
|
||||
return map(currentSpeed, minSpeed, maxSpeed, 0, 255);
|
||||
}
|
||||
|
||||
void MOTOR::accelerate() {
|
||||
@@ -37,4 +40,8 @@ void MOTOR::accelerate() {
|
||||
void MOTOR::decelerate() {
|
||||
int speed = currentSpeed - speedInterval;
|
||||
setSpeedInternal(speed);
|
||||
}
|
||||
|
||||
void MOTOR::stop() {
|
||||
setSpeedInternal(minSpeed);
|
||||
}
|
||||
@@ -13,17 +13,18 @@ class MOTOR {
|
||||
int currentSpeed;
|
||||
void setSpeedInternal(int speed);
|
||||
MotorPosition motorPosition;
|
||||
int minSpeed = 1000;
|
||||
int maxSpeed = 2000;
|
||||
const int speedInterval = 10;
|
||||
|
||||
public:
|
||||
const int minSpeed = 1000;
|
||||
const int maxSpeed = 2000;
|
||||
const int speedInterval = 10;
|
||||
void setMotorPosition(MotorPosition mp);
|
||||
void setPinESC(int pin);
|
||||
void setPinESC(int pin, int speedOffset);
|
||||
void setSpeed(int speed);
|
||||
int getSpeed();
|
||||
void accelerate();
|
||||
void decelerate();
|
||||
void stop();
|
||||
};
|
||||
|
||||
#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");
|
||||
} else {
|
||||
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.setDataRate( RF24_250KBPS );
|
||||
// radio.openReadingPipe(1, readPipe);
|
||||
|
||||
// radio.enableAckPayload();
|
||||
|
||||
// radio.startListening();
|
||||
radio.setDataRate( RF24_250KBPS );
|
||||
|
||||
uint8_t address[][6] = { "1Node", "2Node" };
|
||||
|
||||
// Set the PA Level low to try preventing power supply related problems
|
||||
// because these examples are likely run with nodes in close proximity to
|
||||
// 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)
|
||||
radio.enableDynamicPayloads(); // ACK payloads are dynamically sized
|
||||
|
||||
Reference in New Issue
Block a user