Bonjour à tous je me présente un peu avant de vous expliquer mon problème: je m'appelle Alexis, j'habite vers Nantes et je viens de m'inscrire sur le forum car j'ai vraiment besoin d'aide...
On m'a imposé un projet à rendre à la fin de l'année scolaire, ça fait déjà quelques mois que je planche dessus mais malheureusement je n'ai toujours pas abouti à ce que je voulais: c'est-à-dire réussir à stabiliser une caméra légère sur une montgolfière à l'aide d'un servomoteur et qu'un capteur MPU6050, le problème c'est que je n'y connais absolument rien et donc même si je me suis renseigné et que j'ai appris beaucoup de choses je n'ai toujours pas réussi à trouver le code adéquat à ce projet... Il faut donc que quand la caméra penche à cause du balancement de la nacelle, elle se redresse automatiquement pour que les images restes celles du sol ^^.
J'ai googliser comme un malade, suivi des tutos, regarder des vidéos mais vu que je suis complètement néophyte là dedans je n'y arrive pas. J'ai aussi vu un topic semblable à celui là mais je n'ai rien compris
Il faut que tu regardes du côté des nacelles DIY avec servo et capteur
Le truc c'est qu'aujourdh'ui ce type de nacelles utilise plutot des moteurs brushless que des servos car plus précis.
Mais le principe de correction reste le même.
bonjour,
il y a assez de truc sur le net pour ca quand même.
bon c'est vendredi, suis malade, donc ma bonté va prendre le dessus.
un truc que j'ai commencé a faire pour mettre de niveau mon télescope astro, hé oui suis un gros fénéant parfois.
il n'y a qu'un seul moteur dans le code, mais a toi de te démerd....
le but étant d'avoir une mise à niveau automatique avec rattrapage
#include <MPU6050.h>
#include <I2Cdev.h>
#include "Wire.h"
#include <AFMotor.h>
// Connect a stepper motor with 48 steps per revolution (7.5 degree)
// to motor port #2 (M3 and M4)
AF_Stepper motor(200, 2);
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
MPU6050 accelgyro;
int val;
int prevVal;
#define LED_PIN 13
void setup()
{
Wire.begin();
Serial.begin(115200);
Serial.println("Initialize MPU");
mpu.initialize();
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
motor.setSpeed(50); // 10 rpm
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
ax = map(ax, -32767, 32767, -255, 255);
ay = map(ay, -32767, 32767, -255, 255);
az = map(az, -32767, 32767, -255, 255);
Serial.print(ax); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(az); Serial.print("\t");
Serial.print(gx); Serial.print("\t");
Serial.print(gy); Serial.print("\t");
Serial.print(gz); Serial.print("\t\n");
if (ay < -1) motor.step(1, BACKWARD, SINGLE);
if (ay > 1) motor.step(1, FORWARD, SINGLE);
if( ay >= -1 && ay <= 1){digitalWrite(LED_PIN, HIGH);}else{digitalWrite(LED_PIN, LOW);}
delay(100);
}
john_lenfr:
ça al'ir simple comme code je m'attendais à qqch de bien plus compliqué
ben quoi? tu t'attendais à 25000 lignes de codes
j'ai fait ca vite fait un soir avant d'aller à l'astro, mais pas eu le temps de terminer le projet encore.
donc très perfectible.
là, il suffit de rajouter un 2eme moteur pour faire l'autre axe avec le même code en changeant simplement 2 paramètres
Non je veux pas plus compliqué, je veux dire que je pensais pas pouvoir comprendre le code n'y connaissant pas grand chose mais finalement j'ai à peu près compris
Du coup je pense qu'à ma prochaine commande j'intégrerais un MPU6050 pour faire mumuse
Donc, ton code est pour une stabilisation sur 1 axe.
Si je veux une stabilisation sur 3 axes, je suppose qu'il faut copier cette partie 2 fois pour avoir les 3 axes ?
(je suppose qu'il y'a aussi 2-3 modif a faire ?)