Projet potentiomètres Astéroid

Bonjour a tous,
Les vacances de noel approchant a grand pas je cherche des petit projets a faires.
En fouillant dans mon grenier j'ai trouver une "vielle" manette de ps2.
En recupérant les deux joysticks j'ai reflechis sur ce que je pourrais en faire.
Il m'est venu a l'idee de faire un petit jeu a l'exemple du fameu jeu que tout le monde connais "Asteroids".
Plusieurs jours ont passé et petit a petit je me suis rendu compte que ce "projet de jeu" devien de plus en plus compliqué.
De plus j'ai un mathos limité :
-1 arduino UNO
-1 joystick X Y Z (le bouton R3 pour les connaisseur)
-fils, led, potentiomètres, resistances, fer a souder ....
J'ai différentes taches a accomplir :

  • Toute la phase soudage, cablage ... c'est pas très sorcier :smiley:
  • Recupérer l'information des potentiomètres entre la carte microcontroleur et les potentiomètres (bouton), ca ce n'est pas le plus compliqué.
  • Récupérer les informations de la carte microcontroleur et les envoiller sur un logiciel tierce qui fera fonctionner mon jeu. Ces informations permettrerons de faire tourner / bouger mon vaisseau et aussi de le faire tirer a travers le bouton, la ca deviens un peut chaud :confused:
  • Coder le jeu en lui même ... et ca je ne m'y connais pas du tout.

Si vous penser que ce projet est réalisable/possible et que vous pouvez m'aider, repondez moi.
Merci.

Bonjour,
l’idée est donc d’utiliser l’arduino comme “interface” entre un PC et la manette c’est bien ça ?

Du coup, selon le modèle d’arduino dont tu dispose, il peut être interessant de creuser les fonctions “Keyboard
Ça permet de présenter l’arduino à l’ordinateur comme s’il s’agissait d’un clavier, ce qui simplifie beaucoup la façon de dialoguer entre le jeu et l’arduino.

Pour ce qui est du jeu lui même, tu parles de celui là ?

C’est carrément pas immédiat à coder en fait :o
Tu comptes le faire avec quel genre de langage de programmation ?

Bonjour.

Pour coder ton jeu, je pense qu'il faudrait utiliser Processing (un langage dérivé du Java et simple à comprendre) et utiliser un programme déjà existant (par exemple sur ce site http://www.openprocessing.org/).
L'acquisition des données pourra se faire avec la librairie Serial ou Firmata.

Tu pourra ensuite de modifier le code du jeu (je t'aiderai si tu veux).

Réponse à piif : il utilise un Arduino UNO et cette carte ne peut pas être reconnue comme un clavier ou une souris.

En espèrant t'avoir aidé.

Bonjour,
Tout d’abord merci de vos reponces,
Je vais commencer par repondre a tes questions piif

piif:
l’idée est donc d’utiliser l’arduino comme “interface” entre un PC et la manette c’est bien ça ?

Ouai c’est tout a fais ca :smiley:
Voici un petit schéma que j’ai confectionné par mes soins :smiley: ( voir en bas du post)

piif:
Pour ce qui est du jeu lui même, tu parles de celui là ?

Oui je pensais a ce jeu la … après si ce jeu est trop dur a coder je laisserais tomber et je reflechirais a un autre je du genre ( pong par exemple) …

piif:
Tu comptes le faire avec quel genre de langage de programmation ?

Pour le language de programation du jeu, je n’en ais absolument aucune idee … Je suis ouvert a toutes vos propositions dont celle de personne30003 :smiley:

personne30003:
Pour coder ton jeu, je pense qu’il faudrait utiliser Processing (un langage dérivé du Java et simple à comprendre) et utiliser un programme déjà existant (par exemple sur ce site http://www.openprocessing.org/).
L’acquisition des données pourra se faire avec la librairie Serial ou Firmata.

Je vien de regarder un peut le site d’ont tu vien de me parler et la ou est tout le chalenge : comment faire pour passer les informations récupéré par le serial, vers le programme codé avecOpenProcessing …

personne30003:
Tu pourra ensuite de modifier le code du jeu (je t’aiderai si tu veux).

J’aurais bien besoin d’aide oui :smiley:

Merci d’avances pour les personnes qui auront repondu a ce post :smiley:
Bonne journée a tous :smiley:

Bonjour.

Pour te simplifier (un peu) la vie, tu peux utiliser le protocole Firmata (qui permet d'interfacer des logiciels avec des micro-contrôleurs) . Tu téléverse le programme "Standard Firmata" (Fichiers/examples/Firmata/StandardFirmata) dans ta carte et c'est bon...
Processing peut être interfacé avec Arduino avec cette bibliothèque http://playground.arduino.cc/Interfacing/Processing.
Dans le code écrit en Processing, tu modifie la (les) variable(s) (ou l'objet) qui permettent au vaisseau d'avancer ou de tirer.
La difficulté, c'est de savoir quoi modifier dans un programme très conséquent.

Au revoir.

Tout d’abord je m’excuse si je ne suis pas très actif sur ce poste même si je le suis de très près :stuck_out_tongue:

J’ai travailler su peut sur ce projet cette semaine (soudure et un bout de programmation).
J’ai poster quelques photos en bas de post.
Maintenant, je voudrais m’atteler au Firmata, mais je n’y comprend pas grand chose ( pas beaucoup de tuto sur le net mis a part sur YT mais ils sont en Italien xD )

J’ai essayer les exemples que propose Arduino mais ils ne fonctionnent pas, même e debranchant le LCD …

I need you !
Merci :smiley:
Tennez mon google drive :
https://drive.google.com/folderview?id=0B3J3MzmDbbaEQVJfTnBLNmd0UG8&usp=sharing
Le commentaire est activé je met tout ce que j’ai fais.

Bonjour

Super le jeu que tu a trouvé ^^. Vu que c’est divisé en pleins de fichiers, ça va être plus simple pour
modifier.
Je vois que tu n’a pas trop compris le but de Firmata.
En fait, le gros intérêt, c’est que ça fonctionne sur tous les microcontrôleurs, dans beaucoup de langages de programmation sur PC (par exemple Python avec pyfirmata, JAVA/Processing …).
Une fois que tu as mis l’exemple StandardFirmata sur ton Arduino, t’as plus qu’à t’occuper du logiciel PC et de ton montage. et ce sans s’occuper du programme du microcontrôleur.

Maintenant, je voudrais m’atteler au Firmata, mais je n’y comprend pas grand chose ( pas beaucoup de tuto sur le net mis a part sur YT mais ils sont en Italien xD )

J’ai trouvé quelques liens :

Je fais un autre post pour te mettre les fonctions pour lire un potentiomètre (avec éventuellement un exemple d’utilisation).

J’ai essayer les exemples que propose Arduino mais ils ne fonctionnent pas, même e debranchant le LCD …

Tu as ce problème car (dis si je me trompe) car tu n’as pas mis de logiciel côté PC.
Firmata n’est apparemment incapable de piloter des écrans LCD (Je met cette modification sur ma longue liste de projets …).

Au revoir.

Voilà, c’est encore moi …

Comme j’ai dit dans mon précédent message, je vais présenter quelques fonctions :

Pour initialiser l’Arduino, on utilise cette fonction:

// a placer avant setup()
Arduino arduino; // declaration d'un objet Arduino

// dans setup
ardujno = new Arduino(this, "COM1", 57600); // remplace par le nom
                                                                   // de ton port série

L’instruction pinMode s’écrit de cette façon:

int monPin = 8;
arduino.pinMode(monPin, Ardujno.INPUT);// pour une sortie, Arduino.OUTPUT

Pour lire une entrée numérique :

boolean etat = arduino.digitalRead(monPin);

Pour lire une entrée analogique :

int valeur = ardujno.analogRead(Arduino.A0);

Après, il y a d’autres fonctions mais je ne vais pas toutes les présenter …

Exemple d’utilisation:

/*
Ce programme allume une DEL si un bouton est pressé et lis la
valeur d'un capteur. Si elle est supérieure au seuil, une autre DEL s'allume.
câblage :
 LED branchée à D3
 LED branchée à D4
 bouton branché à D2
 potentiometre branché à A0.    
*/

// inclusion des librairies.
import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
 
int mySwitch = 2;// pin du bouton
int myLEDSwitch = 3;// pin de la LED pour le bouton
int myLEDpotar = 4;// pin de la LED pour le potentiometre.
int potarValue = 0;// valeur lue.
final int seuil = 100; // final <=> const
void setup() {// initialisation.

 arduino = new Arduino(this, "COM1", 57600);// remplaçe par ton port série
 // réglage des broches
 arduino.pinMode(mySwitch, Arduino.INPUT);
 arduino.pinMode(myLEDSwitch, Arduino.OUTPUT);
 arduino.pinMode(myLEDpotar, Arduino.OUTPUT);
}
 
void draw() {// infini
	potarValue = arduino.analogRead(Arduino.A0);// lecture de la valeur du capteur
// détection du bouton
 if (arduino.digitalRead(mySwitch) == Arduino.HIGH) {
 arduino.digitalWrite(myLEDSwitch, Arduino.HIGH);// LED à l'état haut
 println("bouton pressé");
 }
 else {
 arduino.digitalWrite(myLEDSwitch, Arduino.LOW);
 }
// détection de seuil
if(potarValue >= seuil){
	arduino.digitalWrite(myLEDpotar, Arduino.HIGH);
	println("valeur critique atteinte");
}
else{
	arduino.digitalWrite(myLEDpotar, Arduino.LOW);
}

}

Je commence à analyser le code que tu as trouvé (ah, le java et la programmation orienté objet :slight_smile: …).

Au revoir.