Aller au contenu


Photo
- - - - -

Les entrées analogiques


30 réponses à ce sujet

#21 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 16 août 2016 - 03:00

Ah ok :D

 

Ce changement High/Low ça le fait automatiquement ? Je n'ai rien à coder pour changer l'état des MPU ?

 

Et donc du coup pour le branchement, je branche les pins SCL au pin SCL de l'atemega, pareil pour les pins SDA.

Ensuite le Vcc je le branche au régulateur 3.3v et le gnd au gnd.

Et ensuite c'est les pin ADO que je branche à une sortie analogique pour chaque MPU ?

(ça mais en branchant le pin ADO à une sortie analogique ? http://gilles.thebault.free.fr/IMG/jpg/mpu6050_bb.jpg)

 

Pour le wifi, l'ESP 8266 n'a que 15 m de portée tandis que le dongle que j'ai actuellement en a 100m.


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#22 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 16 août 2016 - 03:11

Le changement high/low ne se fait pas tout seul, c'est ce que fait le programme du pdf.
Pour les branchements c'est tout bon, sauf que tu n'as pas besoin d'entrée analogique pour les AD0, le numérique fait très bien l'affaire.

#23 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 16 août 2016 - 03:21

Le programme du pdf ? càd ?

 

Merci pour le branchement :)


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#24 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 16 août 2016 - 03:45

Le programme du pdf... Mon cerveau est quelque peu deconnant... .
Je voulais parler du programme sur le site arduino dont tu as donné le lien.

#25 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 17 août 2016 - 02:54

Donc voila le code que je propose :

 

#include<Wire.h>

 

// The names uses I2C Master Clock Speed in kHz.

#define MPU6050_I2C_MST_CLK_348KHZ MPU6050_I2C_MST_CLK_0
#define MPU6050_I2C_MST_CLK_333KHZ MPU6050_I2C_MST_CLK_1
#define MPU6050_I2C_MST_CLK_320KHZ MPU6050_I2C_MST_CLK_2
#define MPU6050_I2C_MST_CLK_308KHZ MPU6050_I2C_MST_CLK_3
#define MPU6050_I2C_MST_CLK_296KHZ MPU6050_I2C_MST_CLK_4
#define MPU6050_I2C_MST_CLK_286KHZ MPU6050_I2C_MST_CLK_5

 

int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

 

void setup(){
  Wire.begin();
  Wire.beginTransmission(La je sais pas quelle adresse mettre);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(pareil);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(pareil,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  Tmp=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.println(GyZ);
  delay(333);
}
 

En fait le truc c'est que je ne sais pas quelle adresse mettre ... peut être MPU6050 ? peut être pas ... je sais vraiment pas :/


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#26 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 17 août 2016 - 07:19

L'adresse c'est 0x68 si tu mets AD0 à 0, 0x69 si tu mets AD0 à 1. Du coup, dans ton code, tu n'en utilises qu'un, mais quand tu en utiliseras plusieurs, tu devras pour chaque MPU mettre AD0 à 0, lire de 0x68, puis le remettre à 1, avant de passer au MPU suivant.

 

Par contre je pense que les define sont inutiles vu que tu ne les appelle pas.



#27 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 17 août 2016 - 09:44

Ok donc ça donnerai ca, j'hésite juste car je sais pas si le délai sera bon :

#include<Wire.h>

int16_t AcX,AcY,AcZ,GyX,GyY,GyZ;

#define MPU1 0;
#define MPU2 1;
#define MPU3 2;
#define MPU4 3;
#define MPU5 4;

void setup(){

  pinMode(MPU1,OUTPUT);
  pinMode(MPU2,OUTPUT);
  pinMode(MPU3,OUTPUT);
  pinMode(MPU4,OUTPUT);
  pinMode(MPU5,OUTPUT);

  Wire.begin();
  Wire.beginTransmission(0x68);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}

void loop(){

  digitalWrite(MPU1,HIGH); // Normalement si je ne définis pas l'état les autres il est Low par défaut non ?
  Wire.beginTransmission(0x68);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(0x68,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("MPU1 :");
  Serial.print(" | AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.print(GyZ);
  delay(333);

  digitalWrite(MPU1,LOW);

  digitalWrite(MPU2,HIGH);

  Wire.beginTransmission(0x68);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(0x68,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("MPU2 :");
  Serial.print(" | AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.print(GyZ);
  delay(333);

  digitalWrite(MPU2,LOW);

  digitalWrite(MPU3,HIGH);

  Wire.beginTransmission(0x68);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(0x68,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("MPU3 :");
  Serial.print(" | AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.print(GyZ);
  delay(333);


  digitalWrite(MPU3,LOW);

  digitalWrite(MPU4,HIGH);

  Wire.beginTransmission(0x68);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(0x68,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("MPU4 :");
  Serial.print(" | AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.print(GyZ);
  delay(333);

  digitalWrite(MPU4,LOW);

  digitalWrite(MPU5,HIGH);

  Wire.beginTransmission(0x68);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(0x68,14,true);

  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();

  Serial.print("MPU5 :");
  Serial.print(" | AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.print(GyZ);
  delay(333);

  digitalWrite(MPU5,LOW);

}

Modifié par Mr Max, 18 août 2016 - 01:56 .

"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#28 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 17 août 2016 - 10:17

Si je peux te donner un conseil, utilises les balises spoiler pour ce genre de post. Les post de 150 lignes de code, ça pique.
Pour ce qui est du code en lui même, je n'ai pas de PC sous la main, je te répondrais quand j'en aurai un. Mais à ce que j'ai vu pour l'instant, remplace est variables MPUX par des define. C'est géré par le compilo et ça évite de consommer de la RAM pour rien.

#29 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 17 août 2016 - 10:25

J'avais pas vu le "insérer un extrait de code" dsl ;)

 

Pour les #define je l'ai aussi modifié sur le post précédent (merci pour l'info par rapport à la RAM :D)

 

Ps : dans le code que j'ai copié collé et modifié, j'ai remarqué qu'il y avait une variable appelé "tmp", et je me demandais à quoi ça correspondait (température peut être ?)


Modifié par Mr Max, 18 août 2016 - 01:57 .

"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote


#30 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 25 août 2016 - 08:33

Généralement quand une variable s'appelle tmp, c'est une variable temporaire.

#31 Mr Max

Mr Max

    Membre

  • Membres
  • 28 messages
  • Gender:Male
  • Location:Bordeaux

Posté 25 août 2016 - 08:13

La variable est la :  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)

 

Et quand tu dis une variable temporaire tu veux dire dans le sens "ça va être enlevé" ?

 

 

Du coté du programme, je vais commander les mpu et je le testerai quand je les aurais.


"L’ignorant affirme, le savant doute, le sage réfléchit."

                                        

                                                                                  Aristote




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users