Hi Leute, ich habe im Anhang einen voll funktionsfähigen code. Als nächsten Schritt im Projekt will ich einen Servo zu einer bestimmten Zeit ansteuern, jedoch sobald ich die standart Library "Servo.h" in den vorhanden Code inkludiere, gibt der Serielle Monitor nur folgende Zeilen wieder:
"Card ready
Adafruit MPU6050 test!
MP"
Jetzt ist meine Frage ob man entweder diese Library inkludieren kann ohne dieser Probleme , oder ob es einen anderen Weg gibt um einen Servo anzusteuern.
laufen sollte es auf einem Arduino Uno
der Sketch verwendet 75% des Programmspeicherplatzes
Vielen Dank im Voraus!
#include <Arduino.h>
#include <Wire.h>
#include <BMP180I2C.h>//BMP
#define I2C_ADDRESS 0x77//BMP
#include <Adafruit_MPU6050.h>//MPU
#include <Adafruit_Sensor.h>//MPU
#include <SD.h>//Sd Library
#include <SPI.h>//Sd Library
BMP180I2C bmp180(I2C_ADDRESS);//create an BMP180 object using the I2C interface
Adafruit_MPU6050 mpu;//MPU
bool startTimeSet = false;
unsigned long StartTime = 0;
unsigned long elapsedTime = 0;
int started = 0;
const int ChipSelect = 4;
int Lcard = 6;
int Lmpu = 8;
int Lbmp = 9;
int Lfalse = 7;
void setup() {
pinMode(Lcard, OUTPUT);
pinMode(Lmpu, OUTPUT);
pinMode(Lbmp, OUTPUT);
pinMode(Lfalse, OUTPUT);
Wire.begin();
Serial.begin(9600);
if (!SD.begin(ChipSelect)) {
Serial.println("Card failed");
digitalWrite(Lfalse, HIGH);
while (1);
}
Serial.println("Card ready");
digitalWrite(Lcard, HIGH);
while (!Serial);
if (!bmp180.begin()) {
Serial.println("begin() failed. check your BMP180 Interface and I2C Address.");
digitalWrite(Lfalse, HIGH);
while (1);
}
digitalWrite(Lbmp, HIGH);
bmp180.resetToDefaults();
bmp180.setSamplingMode(BMP180MI::MODE_UHR);
Serial.println("Adafruit MPU6050 test!");
if (!mpu.begin()) { // Try to initialize!
Serial.println("Failed to find MPU6050 chip");
digitalWrite(Lfalse, HIGH);
while (1) {}
}
Serial.println("MPU6050 Found!");
digitalWrite(Lmpu, HIGH);
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
Serial.print("Accelerometer range set to: ");
switch (mpu.getAccelerometerRange()) {
case MPU6050_RANGE_16_G:
Serial.println("+-16G");
break;
}
mpu.setGyroRange(MPU6050_RANGE_2000_DEG);
Serial.print("Gyro range set to: ");
switch (mpu.getGyroRange()) {
case MPU6050_RANGE_2000_DEG:
Serial.println("+- 2000 deg/s");
break;
}
mpu.setFilterBandwidth(MPU6050_BAND_44_HZ);
Serial.print(F("Filter bandwidth set to: "));
switch (mpu.getFilterBandwidth()) {
case MPU6050_BAND_44_HZ:
Serial.println("44 Hz");
break;
}
Serial.println("");
SD.begin(ChipSelect);
}
void loop() {
if (!bmp180.measureTemperature())
{
Serial.println(F("could not start temperature measurement, is a measurement already running?"));
return;
}
do { }
while (!bmp180.hasValue());
if (!bmp180.measurePressure()) {
Serial.println(F("could not start perssure measurement, is a measurement already running?"));
return;
}
do { }
while (!bmp180.hasValue());
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
Serial.print("ok ");
delay(10);
File Data = SD.open("TestRII.txt", FILE_WRITE);
if (Data) {
Data.print(a.acceleration.x);
Data.print(" ");
Data.print(a.acceleration.y );
Data.print(" ");
Data.print(a.acceleration.z);
Data.print(" ");
Data.print(g.gyro.x );
Data.print(" ");
Data.print(g.gyro.y);
Data.print(" ");
Data.print(g.gyro.z);
Data.print(" ");
Data.print( bmp180.getPressure() / 100);
Data.print(" ");
Data.println( bmp180.getTemperature());
Data.close();
} else {
Serial.println("SD Fail");
digitalWrite(Lfalse, HIGH);
}
float sens = a.acceleration.x;
Serial.print(a.acceleration.x);
Serial.print(" ");
Serial.print(a.acceleration.y);
Serial.print(" ");
Serial.println(a.acceleration.z);
if (sens > 3 && !startTimeSet) {
started = 1;
StartTime = millis();
startTimeSet = true;
}
if (started == 1) {
Serial.print(" countdown");
elapsedTime = millis() - StartTime;
if (elapsedTime >= 3000) {
Serial.print("ejected");
}
}
}