Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1381 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Arduino] Programme accéléromètre analogique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Arduino] Programme accéléromètre analogique

n°2257224
jusepith
Posté le 03-05-2015 à 00:23:50  profilanswer
 

Bonjour,
 
Actuellement en classe de STI2D SIN (Système information et numérique), je suis, avec mon groupe, en train de réaliser notre projet de fin d’année coefficient 12 (6 par nos professeurs, 6 par le Jury).
 
Notre projet consiste à la réalisation d’un sac à dos connecté pour cycliste.
 
Notre groupe est constitué de 4 personnes, avec 4 tâches réparties :
 
Géolocalisation (GPS/GSM)
 
Mouvement (Accéléromètre direction droite/gauche - afficheur)
 
Mouvement (Accéléromètre freiner - afficheur)
 
Alimentation
 
Composants :
 
54 LED Rouge
 
3 Accéléromètres http://store.arduino.cc/product/T000020
 
Le but est donc que lorsque le cycliste lève sa main à gauche ou droite de 90 à 180°, cela envoie un signal au sac qui affichera une flèche sur l’afficheur LED qui indiquera le sens dans lequel le cycliste tournera.
 
Lorsque le cycliste freinera, un signal sera envoyé à l’afficheur LED pour afficher « STOP ».
 
Voici les deux algorithmes :
http://image.noelshack.com/fichiers/2015/18/1430605372-algorithme-thomas.jpghttp://image.noelshack.com/fichiers/2015/18/1430605371-algorithme-julianne.jpg
 
Nous avions en premier lieu choisi des accéléromètres numériques mais bien trop compliqué à l'utilisation, nous sommes donc passé à l'analogique.
Lorsqu'il ne se passe rien, on a 2,6 V. Lorsque l'on va lever le bras droit, cela va augmenter de 1V (soit 3,6 V) et donc on va activer les LED à partir de 3,6 V.
Pour le bras gauche, on va allumer les LED lorsque la tension sera de moins 1 V donc 1,6 V.
Pour le "stop", il faut voir avec les valeurs constantes et capter la décélération.
 
LE PROBLEME :
 
Nous sommes des élèves de terminale qui n'avons jamais réaliser de programme. Nous avons vu les bases de la programmation, mais cela ne nous permet pas de réaliser un programme entier et surtout, fonctionnel.
Nous avons quand même tenter des brouillons de programme, que voici :
 

Code :
  1. Accéléromètre droite/gauche
  2. void setup()
  3. Lire l’accéléromètre (Read)
  4. Valeur > 676 //Valeur supérieur à 1V au dessus de 3,6 V
  5. Si (If) oui
  6. Allume Led Jaune1 (Tourner à droite → )
  7. Si (if) non
  8. //Ne s’allume pas
  9. void loop() //Faire une boucle
  10. delay(100) //Obtenir une nouvelle valeur toutes les 100ms
  11. Valeur < 266 //Valeur inférieur à 1V en dessous de 3,6 V
  12. Si (If) oui
  13. Allume Led Jaune2 (Tourner à gauche ←)
  14. Si (If) non
  15. //Ne s’allume pas
  16. void loop() //Faire une boucle
  17. delay(100) //Obtenir une nouvelle valeur toutes les 100ms
  18. ____________________________________________________
  19. Accéléromètre "stop" (Premier brouillon)
  20. void setup()
  21. Lire l’accéléromètre (Read)
  22. Valeur
  23. Si (If) oui
  24. Allume Led Rouge (STOP)
  25. Si (iF) non
  26. Ne s’allume pas
  27. void loop() //Faire une boucle
  28. delay(100) //Obtenir une nouvelle valeur toutes les 100ms
  29. ____________________________________________________
  30. Accéléromètre "stop" (Second brouillon)
  31. const int led=13  // déclaration constante de broche
  32. void setup()
  33. pinMod (LED, OUTPUT); // met la led en sortie
  34. analogRead(accelerometer) //lire l’accéléromètre
  35. {
  36. if (valeur > seuil) // si valeur > seuil
  37. else //alors
  38. digitalWrite(LED, HIGH); //met la broche au niveau haut, allume la LED
  39. delay(1000); //pause de 1000ms
  40. }
  41. {
  42. if (valeur< 656 max)  //si valeur < seuil max
  43. else //alors
  44. digitalWrite(LED, OUT); //met la broche à l’état bas, éteins la LED
  45. delay(1000); //pause de 1000ms
  46. }
  47. voidloop() //recommencer, faire une boucle


 
Donc s'il y a une âme généreuse qui peut nous sauver en nous corrigeant/complétant ce n'est pas de refus :(
 
Merci pour votre aide !

mood
Publicité
Posté le 03-05-2015 à 00:23:50  profilanswer
 

n°2264422
jogrey
Posté le 14-08-2015 à 16:31:50  profilanswer
 

Numérique ou pas, il faut intégrer les valeurs reçues par les acceleros, il y aura un peu de calcul matriciel.
 
Sauf si bien sur, vos valeurs reçues sont déjà propres.
 
On couple en général l'accelero a un gyro.  
 
Qu'allez vous faire quand à cause des vibrations, les acceleros vous renverront des données erronées ?
 
Il faudra filtrer le bruit, pour cela, regardez du côté du filtre de Kalman.
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Arduino] Programme accéléromètre analogique

 

Sujets relatifs
Programme sur TI-89URGENT : Pouvez-vous m'aider pour mon programme?
Programme de Conversion base 10 vers 16 et inversement.Probleme amélioration programme
Preuve de programme[Matlab, Arduino] Compétition Robotique « Mission On Mars »
aide pour programme python !Arduino et PHP: La galère!
Programme ASCII85Programme en VB Multicam
Plus de sujets relatifs à : [Arduino] Programme accéléromètre analogique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR