- Registriert
- 16.12.2014
- Beiträge
- 2.182
Hallo zusammen ich hab mal was versucht zu basteln, leider komm ich da nicht weiter. Bräuchte mal Eure Hilfe.
Hier der Code
Also wenn ich den ch4 ( einen Schalter auf der Funke nach oben schalte, also 2000ms) dann soll die Schild Automatik angeschaltet werden, sonst kann man nur mit dem Knüppel das Schild in der Neigung verstellen.
Das geht mit einer if else Anweisung, nur bekomm ich das nicht hin. Steh da etwas auf dem Schlauch.
Grüsse Markus
Hier der Code
Code:
//Automatische Schildsteuerung mit Adruino Nano und MPU6050
#include <Servo.h>
#include <Wire.h>
#include <MPU6050.h>
int ch4=9; // Switch turn on Automatic
int ch1=6; // Schild up or down on the RC controller
int ch3=10;//Schild tilt on the RC controller
const int servoBasePin = 3; //Servo Schild up or down
const int servoTeaArmPin = 5; //Servo Schild tilt
Servo servoBase;
Servo servoTeaArm;
int servoValRoll, servoValPitch;
MPU6050 sensor ;
int16_t ax, ay, az ;
int16_t gx, gy, gz ;
void setup() {
Serial.begin(9600);
pinMode(ch1, INPUT);
pinMode(ch3, INPUT);
servoBase.attach(servoBasePin);
servoTeaArm.attach(servoTeaArmPin);
Serial.println ( "Initializing the sensor" );
sensor.initialize ( );
Serial.println (sensor.testConnection ( ) ? "Successfully Connected" : "Connection failed");
delay (1000);
Serial.println ( "Taking Values from the sensor" );
delay (500);
}
void loop() {
int ch3Pitch = pulseIn(ch3,HIGH,25000);
int ch1Roll = pulseIn(ch1,HIGH,25000);
int Auto = pulseIn(ch4,HIGH,25000);
Serial.print(" Schild heben_senken : ");
Serial.print( ch3Pitch );
Serial.print(" Schild tillt: ");
Serial.print( ch1Roll );
Serial.print(" Winkel Schild_auto: ");
Serial.print ( ay );
Serial.print (" Auto On_OFF : ");
Serial.println (Auto);
//Mapping the postions to the servos
servoValPitch = map(ch3Pitch, 1000, 2000, 0, 180);
servoBase.write(servoValPitch);
servoValRoll = map(ch1Roll, 1000, 2000, 0, 180);
// Mapping the position to the MPU6050 Sensor
sensor.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz);
ay = map (ay, -17000, 17000, 0, 180) ;
//servoTeaArm.write(servoValRoll);
servoTeaArm.write(ay);
delay(100);// increase/decrease the delay to match the movement on the gimbal of the RC controller.
}
Also wenn ich den ch4 ( einen Schalter auf der Funke nach oben schalte, also 2000ms) dann soll die Schild Automatik angeschaltet werden, sonst kann man nur mit dem Knüppel das Schild in der Neigung verstellen.
Das geht mit einer if else Anweisung, nur bekomm ich das nicht hin. Steh da etwas auf dem Schlauch.
Grüsse Markus
Zuletzt bearbeitet: