Update zum o.g. Fehlercode: Habe die BMP280 Adresse von 0x76 auf 0x77 und in Klammern gesetzt konnte den Sketch hochladen allerdings wird nur weiße Pixel auf dem Display gezeigt und nur ein Servo dreht sich
(hab mich gefreut wie ein Kleinkind als der erfolgreich hochgeladen wurde :D)
hier ist der Code:
#include "U8glib.h"
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <Servo.h>
#include <SimpleKalmanFilter.h>
#include <Adafruit_BMP280.h>
#define BMP280_ADDRESS (0x77)
Adafruit_BMP280 bmp;
SimpleKalmanFilter pressureKalmanFilterx(1, 0.2, 0.3);
SimpleKalmanFilter pressureKalmanFiltery(1, 0.2, 0.3);
SimpleKalmanFilter pressureKalmanFilter(1, 0.2, 0.3);
Adafruit_MPU6050 mpu;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);
int x1 = 0;
int y1 = 0;
int z1 = 0;
int x = 0;
int y = 0;
int z = 0;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
int value = 0;
void setup(void) {
Serial.begin(115200);
Serial.println("altitude, estimated_altitude");
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
mpu.begin();
// set accelerometer range to +-8G
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
// set gyro range to +- 500 deg/s
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
// set filter bandwidth to 21 Hz
mpu.setFilterBandwidth(MPU6050_BAND_260_HZ);
//delay(10);
servo1.attach(7);
servo2.attach(6);
servo3.attach(5);
servo4.attach(4);
servo1.write(90);
servo2.write(90);
servo3.write(90);
servo4.write(90);
if (u8g.getMode() == U8G_MODE_R3G3B2)
{
u8g.setColorIndex(255); // white
}
else if (u8g.getMode() == U8G_MODE_GRAY2BIT)
{
u8g.setColorIndex(3); // max intensity
}
else if (u8g.getMode() == U8G_MODE_BW)
{
u8g.setColorIndex(1); // pixel on
}
else if (u8g.getMode() == U8G_MODE_HICOLOR)
{
u8g.setHiColorByRGB(255, 255, 255);
}
for (int a = 0; a < 30; a++)
{
u8g.firstPage();
do
{
u8g.setFont(u8g_font_fub11);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
u8g.drawStr(4, a, "BMP280 Sensor");
}
while (u8g.nextPage());
}
if (!bmp.begin())
{
u8g.firstPage();
do
{
u8g.setFont(u8g_font_fub11);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
u8g.drawStr(4, 0, "BMP085 Sensor");
u8g.drawStr(4, 20, " ERROR!");
}
while (u8g.nextPage());
Serial.println("BMP085 sensor, ERROR!");
while (1) {}
}
}
void loop() {
float altitude = bmp.readAltitude(1012.2);
float estimated_altitude = pressureKalmanFilter.updateEstimate(altitude);
u8g.firstPage();
do
{
u8g.setFont(u8g_font_fub11);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
u8g.drawStr(2, 0, "Altitude(m)");
u8g.setPrintPos(75, 0);
u8g.drawStr(4, 20, "Sensed:");
u8g.setPrintPos(75, 20);
u8g.print(altitude);
u8g.drawStr(4, 40, "Filtered:");
u8g.setPrintPos(75, 40);
u8g.print(estimated_altitude);
}
while (u8g.nextPage());
// Serial.print(altitude); // this should be adjusted to your local forcase
// Serial.print(" ");
// Serial.println(estimated_altitude);
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
x1 = a.acceleration.x;
y1 = a.acceleration.y;
z1 = a.acceleration.z;
float x = pressureKalmanFilterx.updateEstimate(x1);
float y = pressureKalmanFiltery.updateEstimate(y1);
Serial.print(x);Serial.print(" ");Serial.println(y);
if (x < 10 && x > 0 && y < 4 && y > -4){ //זה טוב
Serial.println("up");
int value1 = map(x, 0, 10, 90, 180);
servo1.write(value1);
int value2 = map(x, 0, 10, 90, 0);
servo2.write(value2);
Serial.print(value);
}
else if (x > -10 && x < 0 && y < 4 && y > -4){
Serial.println("down");
int value3 = map(x, -10, 0,0, 90);
servo1.write(value3);
int value4 = map(x, -10, 0, 180, 90);
servo2.write(value4);
Serial.print(value);
}
if (y < 10 && y > 0 && x < 4 && x > -4){ //זה טוב
Serial.println("Right");
int value5 = map(y, 0, 10, 90, 180);
servo3.write(value5);
int value6 = map(y, 0, 10, 90, 0);
servo4.write(value6);
Serial.print(value);
}
else if (y > -10 && y < 0 && x < 4 && x > -4){
Serial.println("left");
int value7 = map(y, -10, 0, 0, 90);
servo3.write(value7);
int value8 = map(y, -10, 0, 180, 90);
servo4.write(value8);
Serial.print(value);
}
}