(→Explication) |
(→Liste du matériel) |
||
(9 versions intermédiaires masquées) | |||
Ligne 12 : | Ligne 12 : | ||
* [[Image:Résistance.jpg|50px]] trois [[résistance]] de 1 KOhm | * [[Image:Résistance.jpg|50px]] trois [[résistance]] de 1 KOhm | ||
* [[Image:Ordi.jpg|50px]] Un [[ordinateur]] pour programmer | * [[Image:Ordi.jpg|50px]] Un [[ordinateur]] pour programmer | ||
- | * [[Image: | + | * [[Image:Matos.jpg|50px]] Un [[Afficheur LCD]] |
==réalisation du projet== | ==réalisation du projet== | ||
Ligne 20 : | Ligne 20 : | ||
==Schéma Fritzing=== | ==Schéma Fritzing=== | ||
+ | [[Image:accelerometre.png|500px]] | ||
===Code=== | ===Code=== | ||
<pre> | <pre> | ||
- | + | ///////////////////////////////////////// | |
- | // | + | //bibliothèque LCD et Indication////////// |
+ | //du branchement///////////////////////// | ||
+ | #include <LiquidCrystal.h> | ||
+ | LiquidCrystal lcd(7, 8, 9, 10, 11, 12); | ||
+ | ///////////////////////////////////////// | ||
+ | //adresse des entrés entrées //////////// | ||
+ | //analogiques de l'accéléromètre//////// | ||
+ | const int X= 0; | ||
+ | const int Y= 1; | ||
+ | const int Z= 2; | ||
+ | ///////////////////////////////////////// | ||
+ | //variable pour traiter les donnés/////// | ||
+ | float V_X = 0; | ||
+ | float V_Y = 0; | ||
+ | float V_Z = 0; | ||
+ | ///////////////////////////////////////// | ||
+ | //constante d'accélération du à la gravité | ||
+ | const float g=9.81; | ||
+ | ///////////////////////////////////////// | ||
+ | //Ces valeurs ont été récupéré grâce au port série (voir Serial.print()) | ||
+ | //constante pour la mise à l'échelle des relevés en X | ||
+ | const float pos_g_X=419.5; // position avec g(gravité) positif | ||
+ | (orianté dans le même sens du capteur) | ||
+ | const int Zero_X=350; // position du 0 | ||
+ | const float neg_g_X=276.7; // position avec g négatif | ||
+ | float Coef_a_X=0; | ||
+ | float Coef_b_X=0; | ||
+ | //constante pour la mise à l'échelle des relevé en Y | ||
+ | const float pos_g_Y=420.0; | ||
+ | const int Zero_Y=350; | ||
+ | const float neg_g_Y=275.5; | ||
+ | float Coef_a_Y=0; | ||
+ | float Coef_b_Y=0; | ||
+ | //constante pour la mise à l'échelle des relevés en Z | ||
+ | const float pos_g_Z=426.5; | ||
+ | const int Zero_Z=355; | ||
+ | const float neg_g_Z=285.5; | ||
+ | float Coef_a_Z=0; | ||
+ | float Coef_b_Z=0; | ||
+ | ///////////////////////////////////////// | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | //configuration du lcd et mise en route// | ||
+ | lcd.begin(16,2); | ||
+ | //configuration port entré/sortie ///// | ||
+ | pinMode(X, INPUT); | ||
+ | pinMode(Y, INPUT); | ||
+ | pinMode(Z, INPUT); | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | //calcule de mise à l'échelle//////////// | ||
+ | //en X | ||
+ | Coef_a_X=(2*g)/(pos_g_X-neg_g_X); // calcule du coefficient | ||
+ | directeur de la correction a | ||
+ | Coef_b_X=-(Coef_a_X*Zero_X); // calcule du coefficient b | ||
+ | V_X = Coef_a_X*analogRead(X))+Coef_b_X; // solution=ax+b avec x la | ||
+ | valeur en sortie de l'accéléromètre | ||
+ | //en Y | ||
+ | Coef_a_Y=(2*g)/(pos_g_Y-neg_g_Y); | ||
+ | Coef_b_Y=-(Coef_a_Y*Zero_Y); | ||
+ | V_Y = Coef_a_Y*analogRead(Y))+Coef_b_Y; | ||
+ | //en Z | ||
+ | Coef_a_Z=(2*g)/(pos_g_Z-neg_g_Z); | ||
+ | Coef_b_Z=-(Coef_a_Z*Zero_Z); | ||
+ | V_Z = Coef_a_Z*analogRead(Z))+Coef_b_Z; | ||
+ | //affichage sur écran lcd//////////////// | ||
+ | //écriture de l'accélération X | ||
+ | lcd.setCursor(0, 0); // positionner le curseur de l'écran sur la | ||
+ | position 0(colonne),0(ligne) | ||
+ | lcd.print("X"); // écriture de X | ||
+ | lcd.print(V_X); // écriture de la va leur d'accélération en X | ||
+ | //écriture de l'accélération Y | ||
+ | lcd.setCursor(8, 0); | ||
+ | lcd.print(",Y"); | ||
+ | lcd.print(V_Y); | ||
+ | //écriture de l'accélération Z | ||
+ | lcd.setCursor(0, 1); | ||
+ | lcd.print("Z"); | ||
+ | lcd.print(V_Z); | ||
+ | ///////////////////////////////////////// | ||
+ | //Temporisation afin d'avoir un bon affichage | ||
+ | delay(100); | ||
+ | } | ||
</pre> | </pre> | ||
Sommaire |
Voici le super projet de l'accéléromètre !!
Le but de ce montage est de nous donner la vitesse à laquelle se déplace notre montage. Nous allons aussi avoir un montage de LED qui nous indiquera en temps réel la direction dans laquelle nous allons ! Enfin, un écran LCD nous apportera plus d'informations concernant nos acquisitions
///////////////////////////////////////// //bibliothèque LCD et Indication////////// //du branchement///////////////////////// #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); ///////////////////////////////////////// //adresse des entrés entrées //////////// //analogiques de l'accéléromètre//////// const int X= 0; const int Y= 1; const int Z= 2; ///////////////////////////////////////// //variable pour traiter les donnés/////// float V_X = 0; float V_Y = 0; float V_Z = 0; ///////////////////////////////////////// //constante d'accélération du à la gravité const float g=9.81; ///////////////////////////////////////// //Ces valeurs ont été récupéré grâce au port série (voir Serial.print()) //constante pour la mise à l'échelle des relevés en X const float pos_g_X=419.5; // position avec g(gravité) positif (orianté dans le même sens du capteur) const int Zero_X=350; // position du 0 const float neg_g_X=276.7; // position avec g négatif float Coef_a_X=0; float Coef_b_X=0; //constante pour la mise à l'échelle des relevé en Y const float pos_g_Y=420.0; const int Zero_Y=350; const float neg_g_Y=275.5; float Coef_a_Y=0; float Coef_b_Y=0; //constante pour la mise à l'échelle des relevés en Z const float pos_g_Z=426.5; const int Zero_Z=355; const float neg_g_Z=285.5; float Coef_a_Z=0; float Coef_b_Z=0; ///////////////////////////////////////// void setup() { //configuration du lcd et mise en route// lcd.begin(16,2); //configuration port entré/sortie ///// pinMode(X, INPUT); pinMode(Y, INPUT); pinMode(Z, INPUT); } void loop() { //calcule de mise à l'échelle//////////// //en X Coef_a_X=(2*g)/(pos_g_X-neg_g_X); // calcule du coefficient directeur de la correction a Coef_b_X=-(Coef_a_X*Zero_X); // calcule du coefficient b V_X = Coef_a_X*analogRead(X))+Coef_b_X; // solution=ax+b avec x la valeur en sortie de l'accéléromètre //en Y Coef_a_Y=(2*g)/(pos_g_Y-neg_g_Y); Coef_b_Y=-(Coef_a_Y*Zero_Y); V_Y = Coef_a_Y*analogRead(Y))+Coef_b_Y; //en Z Coef_a_Z=(2*g)/(pos_g_Z-neg_g_Z); Coef_b_Z=-(Coef_a_Z*Zero_Z); V_Z = Coef_a_Z*analogRead(Z))+Coef_b_Z; //affichage sur écran lcd//////////////// //écriture de l'accélération X lcd.setCursor(0, 0); // positionner le curseur de l'écran sur la position 0(colonne),0(ligne) lcd.print("X"); // écriture de X lcd.print(V_X); // écriture de la va leur d'accélération en X //écriture de l'accélération Y lcd.setCursor(8, 0); lcd.print(",Y"); lcd.print(V_Y); //écriture de l'accélération Z lcd.setCursor(0, 1); lcd.print("Z"); lcd.print(V_Z); ///////////////////////////////////////// //Temporisation afin d'avoir un bon affichage delay(100); }
chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino
quelles peuvent être les applications technologiques de ce montage, ou est-ce qu'on retrouve des programmes qui y ressemble ?
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique