Beschleunigungssensor + Servo

Hallo zusammen ich brauche Hilfe und war folgende Sache muß ich lösen.

An einen Uno R3 obigen Sensor und einen Servo anschließen so das die Daten vom Sensor den Servo steuern.
Beide Teile haben ich war am Uno angeschlossen einzeln gehen Sie auch nur wie muss ich die Verdrahtung vornehmen das beide zusammen arbeiten oder welches Programm brauche ich.
Da ich auf diesem Gebiet eine Laie bin brauche ich die Hilfe der Gemeinschaft hier.

Ich würde mich freuen wenn jemand sich die Zeit nimmt und mir weiter hilft.

Gruß
Rudi

Dann zeige uns doch mal was Du schon hast.
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.

Gruß Tommy

blitzschnell:
An einen Uno R3 obigen Sensor und einen Servo anschließen so das die Daten vom Sensor den Servo steuern.
Beide Teile haben ich war am Uno angeschlossen einzeln gehen Sie auch nur wie muss ich die Verdrahtung vornehmen das beide zusammen arbeiten oder welches Programm brauche ich.
Da ich auf diesem Gebiet eine Laie bin brauche ich die Hilfe der Gemeinschaft hier.

Ich würde mich freuen wenn jemand sich die Zeit nimmt und mir weiter hilft.

Gruß
Rudi

Herzlich willkommen!

Um Dir besser helfen zu können, wäre es hlfreich:
Link zu den Bauteilen in dem Shop oder von dem Hersteller, woher genau diese Teile sind.

Wenn beide Teile einzeln gehen, dann erklär wo es klemmt.
Beim zusammenführen von einzelnen Sketches oder beim gemeinsamen Betreiben von Sensor und Aktor, weil die sich PINs teilen?

Hast Du Code?
Stell ihn hier ein - solltest Du hier drauf antworten, gehe unten rechts auf “preview” und markiere den eingefügten Code und klick oben links auf das Symbol </>.

Hallo,

wenn sie einzeln funktionieren, dann hast du vom Sensor Rückgabewerte und das Servo benötigt Eingabewerte. Passt doch zusammen, oder nicht? Dann rechnest du ggf. noch die Werte in den benötigten Bereich/Einheit um und fütterst das Servo mit den Sensorwerten. Eigentlich ganz easy.

mit diesem Programm unten kann ich den Sensor auslesen
und mit dem Programm unter Beispiele “servo” sweep kan ich den Servo ansteuern.
Der Sensor ist ein mma8452q 8 Beinchen hat das gut Stück. Der Servo ist Handelsüblich.

#include <Wire.h>
#include <MMA8453_n0m1.h>

MMA8453_n0m1 accel;

void setup()
{
Serial.begin(9600);
accel.setI2CAddr(0x1D); //change your device address if necessary, default is 0x1C
accel.dataMode(true, 2); //enable highRes 10bit, 2g range [2g,4g,8g]
Serial.println(“MMA8453_n0m1 library”);
Serial.println(“XYZ Data Example”);
Serial.println(“n0m1.com & krazatchu.ca”);
}

void loop()
{
accel.update();

Serial.print("x: “);
Serial.print(accel.x());
Serial.print(” y: “);
Serial.print(accel.y());
Serial.print(” z: ");
Serial.println(accel.z());

}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Was meinst Du, wieviele Servos “handelsüblich” sind? Da solltest Du schon genauer werden (genauer Typ, besser Link)

Den 2. Sketch könntest Du auch bereit stellen. Wenn man suchen muss, schauen sich das viele erst überhaupt nicht an.

Gruß Tommy

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}
#include <Wire.h>
#include <MMA8453_n0m1.h>

MMA8453_n0m1 accel;

void setup()
{
  Serial.begin(9600);
  accel.setI2CAddr(0x1D); //change your device address if necessary, default is 0x1C
  accel.dataMode(true, 2); //enable highRes 10bit, 2g range [2g,4g,8g]
  Serial.println("MMA8453_n0m1 library");
  Serial.println("XYZ Data Example");
  Serial.println("n0m1.com & krazatchu.ca");
}

void loop()
{
  accel.update();
  
  Serial.print("x: ");
  Serial.print(accel.x());
  Serial.print(" y: ");
  Serial.print(accel.y());
  Serial.print(" z: ");
  Serial.println(accel.z());

}

der Servo ist conrad MODELCRAFT STANDARD SERVO 410 Nr. 404753

Dein Sensor gibt dir 3 Werte (x,y,z ). Wie soll denn daraus überhaupt der Winkelwert für den Servo entstehen?

Hallo,

statt die Sensorwerte serial auszugeben übergibts du sie einer Formel. roll und pitch sind dann zwei Winkelwerte.
xAxis, yAxis und zAxis kommen von deinem Sensor.
roll oder pitch übergibts du deinen Servo.
Ggf musste die Formel anpassen abhängig der Größenordnung die sein Sensor ausgibt.
Das hier ist für einen ADXL345. Full Resolution, 16g
roll/pitch wird dann nochmal gemappt auf gültigen Serowinkelbereich.

//Roll & Pitch Equations
    float xxAxis = (float)xAxis*16.0/1024;  //  [g]
    float yyAxis = (float)yAxis*16.0/1024;  //  [g]
    float zzAxis = (float)zAxis*16.0/1024;  //  [g]
    roll  = (atan2(-yyAxis,zzAxis)*180.0)/3.14;
    pitch = (atan2(xxAxis,sqrt(yyAxis*yyAxis+zzAxis*zzAxis))*180.0)/3.14;

Hallo zusammen,
erst einmal danke an alle das man hier versucht so einem Unwissenden wie meiner Wenigkeit zu helfen.
Meister Doc Arduino vielen danke für den Code wenn jetzt noch so ein unwissender wie ich wüsste in welches Programm und an welcher Stelle der hin kommt dann wäre wäre mir wohler.
Ich weiß da ich das ohne euere Hilfe nicht schaffe vielleicht können wir den Rest auch noch hinbekommen.

Hi

Irgendwo in Deinem Sketch hast Du die Werte xAxis/yAxis/zAxis.
Was liegt näher, als die Zeilen vom Doc dahinter zu setzen und mit einem Serial.print die berechneten Werte ins Terminal auszugeben?

So ganz ohne Deine Mitarbeit wird’s nämlich kaum besser werden, befürchte ich.

Hallo,

wie postmaster schon sagt, du wirst hoffentlich mit deinen Mini Sketchen wissen welche Werte davon die Sensorwerte sind und welcher Wert ans Servo geht. Falls du hier nicht weißt was was ist, dann gehe bitte zurück auf Start. > Grundlagentraining.

Wenn du es weißt, dann ersetze diese und bau die Formel ein. Einfacher gehts nun wirklich nicht.
Der nächste Schritt wäre dir den Sketch komplett fertig zu machen. Das mache ich hier aber nicht, weil das keine große Sache ist, dass musst du selbst hinbekommen, eben weil die paar Zeilen leicht zu überblicken sind.

Letzter Hinweis.
a) Sensorwerte auslesen
b) diese verrechnen
c) Ergebnis an Servo übergeben