projet arduino bac

bonjour à tous,

je suis nouveau dans le domaine de l'arduino bien que j'y touche de temps en temps en cours.
j'ai un projet à faire pour mon bac et j'i choisis un projet que je souhaite faire depuis des années:

une réplique d'arme que virtualise les mouvement. je m'explique:

il y aurait un gyroscope dans la réplique pour capter les mouvement et prendrais le rôle de la souris afin de pouvoir bouger la tête dans des fps;

il y aurait également un joystick afin de se déplacer;

et enfin il y aurait des boutons pour les menus ou autres.

maintenant le problème c'est que malgré des semaines de recherches je n'arrive pas a concrétiser le projet.

j'ai trouvé plusieurs code dans divers vidéo YouTube ( pour le gyroscope, joystick et boutons, lien en bas) mais je ne sais pas comment les assembler en 1 seul code et que tout fonctionne.

donc si des personnes aimables passent par ici, pouvez vous m'aider svp, le début des oraux des projet commence en janvier, je passerai surement fin janvier.

si vous avez des questions posez les je vais être un max actif jusqu'à trouver la solutions

lien vidéos vus:

Déjà bonne introduction tu annonces le projet pour le bac, nous aimerions que tous en fassent autant.

j'ai trouvé plusieurs code dans divers vidéo YouTube ( pour le gyroscope, joystick et boutons, lien en bas) mais je ne sais pas comment les assembler en 1 seul code et que tout fonctionne.

Un programme pour microcontrôleur, arduino ou autres, c'est toujours :

  • une zone de déclaration de variables et de fichiers à inclure pour l'utilisation de bibliothèques
  • une fonction qui fait les initialisations et qui ne s'exécute qu'une seule fois -> fonction setup()
  • une boucle infinie : c'est à dire dont on ne peut pas sortir sauf à faire un reset ou à couper l'alimentation. C'est dans cette boucle que se trouve la fonction loop(). Tout le programme est géré dans la fonction loop

Quand on fusionne des programmes nul question de choses compliquées il faut juste du bon sens :

  • vérifier que les programmes à fusionner n'utilisent pas les mêmes pins.
  • vérifier que les programmes à fusionner n'utilisent pas les mêmes nom de variables.
  • si des timers sont utilisés vérifier que les programmes n'utilise pas les mêmes
  • etc,

Il est préférable de décomposer le programme en plusieurs fonctions.
Plus le code d'une fonction est court, plus la fonction sera simple à mettre au point, sans tomber dans l’excès non plus.
Ces fonctions pourront être appelées à partir de setup ou de loop.

Reste le moins simple : l'organisation générale.
Pour définir l'organisation générale ce qui fonctionne bien c'est feuille de papier, stylo et écrire en français ce que tu veux faire. Quand tu aura défini les actions et l'ordre dans lequel elles sont exécutées le codage sera plus simple.

Note : le meilleur tutoriel est celui d'Eskimon (un moteur de recherche devrait te donner un lien à jour)

Merci pour ton message,

Je vais faire ce que tu m'as dis, je vais noter toute les actions que je souhaite faire, mais il n'y a pas tellement de sens vu que cela dépend du jeux.

Exemple call of duty:

Avancer,
voir un ennemi,
viser et pointer l'ennemi(en bougeant en vrai la réplique),
appuier sur la gachette,
Appuier sur des bouttons assigné à divers choses.

J'espère avoir a peu près éclaircis les actions à réaliser,
Après il faut savoir que je n'ai même pas les bases du codage, donc même un intérupteur avec une led je ne sais pas le coder donc tout ça va être compliqué sans aide (mes profs refusent de m'aider)

Après il faut savoir que je n'ai même pas les bases du codage,

= tuto d'Eskimon

Ici on ne codera pas pour toi.
Si tu fourni un code avec des erreurs tu pourra avoir des explications et des conseils mais il faut d'abord que tu fournisse un début de réalisation, surtout pour un travail scolaire.
N'oublie jamais que ton professeur suit ce forum sans jamais se manifester mais avec les yeux grand ouverts.

cuencakevin:
(mes profs refusent de m'aider)

Quoi ? Et moi je paye mes impôts pourquoi, alors ? Mais où va l'école ?

cuencakevin:
Je vais faire ce que tu m'as dis, je vais noter toute les actions que je souhaite faire, mais il n'y a pas tellement de sens vu que cela dépend du jeux.

Je pense que tu n'as pas bien compris. Ce qu'il faut que tu codes ce n'est pas ce que toi tu fais, mais les tâches que doit exécuter le programme pour être vu comme un périphérique qui envoie des positions, des boutons appuyés, ....
Par exemple:

  • lire les gyro, convertir les valeur en coordonnées écran, envoyer les coordonnées à la console (ou PC)
  • lire les boutons, envoyer leur état à la console
    et ainsi de suite.

Bonjour

remarque sur le titre du fil de discussion :
si tous les candidats au bac qui viennent içi utilisent le même titre il ne sera pas facile de s'y retrouver !!

Il faudrait , cuencakevin, editer le titre pour y mettre quelque chose permettant d'identifier CE projet, peut être "réplique arme"

ok donc j’ai un peu avancé, j’ai trouvé le code et le schéma pour le gyroscope et les boutons de souris gauche et droit (viser et tirer). pour le code j’ai essayé de déchiffrer mais je ne comprend pas tout.

et puis j’ai eu une idée, plutot que de galérer et de prendre un joystick, mettre à la place 4 boutons en croix pour Z avancer, S reculer, Q aller à gauche, D aller a droite. cela me fait rajouter 4 boutons dans mon code plutot que de galérer à mélanger 2 code. maintenant je ne sais pas comment rajouter des boutons car je n’ai pas totalement trouvé les ligne de code lié aux boutons. dites moi ce que vous en pensez de cette idée et comment rajouter 1 bouton.

par la suite si j’ai finis pour les boutons je verrai pour rajouter des moteurs vibrant pour simuler un recule sur la réplique.

image: http://www.mrhobbytronics.com/wp-content/uploads/2017/04/AccelerometerMouse-1024x371.png

code:

[#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int button1 = 6;
int button2 = 7;
int buttonState1 = 0;
int buttonState2 = 0;

void setup() {

Serial.begin(9600);
Wire.begin();
pinMode(button1, INPUT);
pinMode(button2, INPUT);
mpu.initialize();
if (!mpu.testConnection()) { while (1); }
}

void loop() {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

vx = (gx+15)/150;
vy = -(gz-100)/150;

Serial.print("gx = “);
Serial.print(gx);
Serial.print(” | gz = ");
Serial.print(gz);

Serial.print(" | X = “);
Serial.print(vx);
Serial.print(” | Y = ");
Serial.println(vy);

Mouse.move(vx, vy);

buttonState1 = digitalRead(button1);
buttonState2 = digitalRead(button2);

if (buttonState1 == HIGH) {
Mouse.press(MOUSE_LEFT);
delay(100);
Mouse.release(MOUSE_LEFT);
delay(200);
}
else if(buttonState2 == HIGH) {
Mouse.press(MOUSE_RIGHT);
delay(100);
Mouse.release(MOUSE_RIGHT);
delay(200);
}
delay(80);
}]

On te dit : ESKIMON !!!

Et édite ton message pour mettre le code entre balises. ça doit ressembler à ça :

Mon code ici

(pratique les balises dans le quick reply ! :slight_smile: )

Signé : ton prof...

Et lis les messages épinglés "Règles du forum francophone" et "Comment faire un nouveau sujet avec les balises".

Il te manque des bibliothèques :

  • I2Cdev et MPU6050 sont dans un seul package disponible ici. Tu peux le télécharger ici (bouton vert, download zip) et mettre le contenu du répertoire Arduino du zip dans ton répertoire libraries
  • Pour button.h, c'est un peu plus compliqué, car il y a plusieurs bibliothèques qui portent ce nom. Essaye celle-ci...

ça avait pourtant bien commencé....

à la suggestion de modifier ton titre, tu ne réagis même pas....

ensuite tu postes ton code en vrac sans le mettre entre les balises.

Tic tac Tic tac Tic tac >>> poubelle

.