c'est un code que j'ai modifié le souci c'est que analogX ,Y ,Z buton et accelX,Y Z ne sont pas reconnu??
(je ne sais pas utiliser les balises)
-----
c'est un code que j'ai modifié le souci c'est que analogX ,Y ,Z buton et accelX,Y Z ne sont pas reconnu??
(je ne sais pas utiliser les balises)
D’où sors-tu analogX, Y et Z ? Ils ne semblent effectivement pas être intégrés à la librairie. Vu que l'on ne sait toujours pas d'où elle vient, ça va être dur d'avancer.
Tu tentes un mélange entre 2 choses qui viennent de provenances différentes... et qui manifestement ne concordent pas. Il est là le problème ! Ou alors, la librairie que tu utilises est trop ancienne.
Balises ? C'est simple ! Dans l'éditeur de message, tu cliques sur "avancé". Là, tu sélectionnes ton code et tu cliques sur le bouton en forme de "#".
Résultat :
Code:Test
je ne vois pas ou se trouve avancé ( l'editeur de message c'est bien là ou t'écris le code )
en effet je crois que analogX, Y et Z ne fais pas parti de la librairie ( il fesait surement parti de la librairie ancienne de arduino 105
je pense qu'il faut utiliser joy X ,Y,Z
Tout dépend d'où vient la librairie... Il y a surement des exemples indiqués... Mais vu que l'on ne sait toujours pas d'où elle provient...
(Oui c'est ça, le bouton, c'est "aller en mode avancé", tout à droite.)
j'utilise arduino IDE 1.0.6 et la librairie WiiChuck
Qui vient d'où ?la librairie WiiChuck
Si je dois mettre mes questions en taille 6 pour que tu comprennes, les modos vont me taper dessus !
j'ai fais un copier coller de ce code dans une feuille que j'ai mis dans le dossier librairie dans le dossier arduino
dans ce site http://playground.arduino.cc/Main/WiiChuckClass
sachez q la librairie Wiichuck que j'utilise marche bien
Enfin !
Car si tu observes la page, tu constates qu'il y a des exemples en bas...
La voilà la syntaxe qu'il faut utiliser :
Code:Serial.print(chuck.readJoyX()); Serial.print(", "); Serial.print(chuck.readJoyY()); Serial.print(", ");
Oui, je vois ça...sachez q la librairie Wiichuck que j'utilise marche bien
Met à jour ton code ! Tu devrais t'en sortir !
merci je vais tester ça
j'ai trouvé ça dans un livre
l.print("\t");
Serial.print("joy:");
Serial.print(joy_x_axis,DEC)
je vais vous dire ce que j'obtient
Ne mélange pas les exemples du site et un livre qui n'ont aucun rapport entre eux ! Utilise les exemples donnés avec la librairie, point barre !
j'obtient ca
#include <math.h>
#include "Wire.h"
#include "WiiChuck.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define MAXANGLE 90
#define MINANGLE -90
WiiChuck chuck = WiiChuck();
int angleStart, currentAngle;
void setup() {
//nunchuck_init();
Serial.begin(115200);
chuck.begin();
chuck.update();
//chuck.calibrateJoy();
void loop()
{
Serial.print(chuck.zPressed()? "z_on ":"z_off");
Serial.print(", ");
Serial.print(chuck.cPressed()? "c_on ":"c_off");
Serial.print(", ");
Serial.print(chuck.readJoyX()) ;
Serial.print(", ");
Serial.print(chuck.readJoyY()) ;
Serial.print(", ");
Serial.print(chuck.readRoll()) ;
Serial.print(", ");
Serial.print(chuck.readPitch() );
Serial.print(", ");
Serial.print((int)chuck.readAc celX());
Serial.print(", ");
Serial.print((int)chuck.readAc celY());
Serial.print(", ");
Serial.print((int)chuck.readAc celZ());
Serial.println();
j'obtient ca comme message d'erreur
core.a(main.cpp.o): In function `main':
C:\Program Files (x86)\Arduino\hardware\arduino \cores\arduino/main.cpp:43: undefined reference to `loop'
T'as pas oublié un "}" ? (EDIT : Même deux ? Checke tes fins de boucle.)
Vraiment aucune chance d'avoir du code lisible ?
j'ai ca selon toi c'est coherent??
Code PHP:
#include <math.h>
#include "Wire.h"
#include "WiiChuck.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define MAXANGLE 90
#define MINANGLE -90
int pos = 0;
int posX = 0;
WiiChuck chuck = WiiChuck();
int angleStart, currentAngle;
int tillerStart = 0;
double angle;
void setup() {
//nunchuck_init();
Serial.begin(115200);
chuck.begin();
chuck.update();
//chuck.calibrateJoy();
}
void chuck2servo(){
delay(50);
chuck.update();
pos = chuck.readJoyY();
posX = chuck.readJoyX();
Serial.print("y:");
Serial.print(pos);
Serial.print(" x:");
Serial.print(posX);
Serial.print(" z:");
Serial.print(chuck.zPressed()?"z_on ":"z_off");
Serial.print(" c:");
Serial.print(chuck.cPressed()?"c_on ":"c_off");
Serial.println();
}
void loop() {
}
AHHHH du joli code !
Il n'y a rien dans ta boucle loop(). Il ne va pas se passer grand chose...
Tu as tenté de tester tel quel le code proposé par le site arduino ?
voila ce que je rajoute dans le loop sa te va ??
Code PHP:
Serial.print(chuck.zPressed()?"z_on ":"z_off");
Serial.print(", ");
Serial.print(chuck.cPressed()?"c_on ":"c_off");
Serial.print(", ");
Serial.print(chuck.readJoyX());
Serial.print(", ");
Serial.print(chuck.readJoyY());
Serial.print(", ");
Serial.print(chuck.readRoll());
Serial.print(", ");
Serial.print(chuck.readPitch());
Serial.print(", ");
Serial.print((int)chuck.readAccelX());
Serial.print(", ");
Serial.print((int)chuck.readAccelY());
Serial.print(", ");
Serial.print((int)chuck.readAccelZ());
Serial.println();
pour information
le code a été vérifie mais une fois téleversé on obtient pratiquement rien (toutes les cases de la 1 ère ligne sont illuminées s'est tout)
Que puis-je faire ??
Normal, tu ne diriges rien sur le LCD.
Fait déjà, avec ton code actuel, Outils -> Moniteur série dans l'IDE arduino et fait marcher ta manette. Tu devrais voir des choses apparaitre.
ENSUITE, tu changes les serial.print en lcd.print(), et tu rajoutes en tête de la loop : lcd.setCursor(0, 0);
Et tu re-testes.
oui en faite avant que tu me reponde j'avais déja changé le serial en lcd et j'obtient la 1 ere ligne de la lcd qui prend sans cesse des valeurs ( soit beaucoup de chiffre apparaissent sur toute la 1ere ligne sans que tu ais le temps de comprendre quoi que ce soit
)
Fait déjà, avec ton code actuel, Outils -> Moniteur série dans l'IDE arduino et fait marcher ta manette. Tu devrais voir des choses apparaitra
RIEN N APPARAIT !!
quand je met lcd.setCursor(0,0) après le loop()
j'obtient une 1ere ligne toujours identique : z_on ,c_on , -12
j'obtiens les informations que je souhaité
Le PROBLEME c'est que l'orsque je bouge la nunckuck les informations affichés ne varies pas
en effet, déja pour les boutons C et Z ,ils restent toujours sur OFF sur la lcd meme si j'appui sur ces boutons de la nunchuck
je bouge le joyestiq et la manette les valeurs restent identiques
J'ai besoin d'aide pour savoir que faire ,pour que ces valeurs varies sur la nunchuck ??
merci d'avance
voila ce que j'obtient sur la nunchuck 1ere ligne 4 4 z_off c_off
2eme 5 24 272
Code PHP:
#include <math.h>
#include "Wire.h"
#include "WiiChuck.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(11, 10, 5, 4, 3, 2);
#define MAXANGLE 90
#define MINANGLE -90
int pos = 0;
int posX = 0;
WiiChuck chuck = WiiChuck();
int angleStart, currentAngle;
int tillerStart = 0;
double angle;
void setup() {
//nunchuck_init();
lcd.begin(16, 2);
Serial.begin(115200);
chuck.begin();
chuck.update();
//chuck.calibrateJoy();
}
void chuck2servo(){
delay(50);
chuck.update();
pos = chuck.readJoyY();
posX = chuck.readJoyX();
lcd.print("x:");
lcd.print(posX);
lcd.print("y:");
lcd.print(pos);
lcd.print("z:");
lcd.print(chuck.zPressed()?"z_on ":"z_off");
lcd.print(" c:");
lcd.print(chuck.cPressed()?"c_on ":"c_off");
lcd.println();
}
void loop()
{
//nunchuk.update();
lcd.print(chuck.readJoyX());
lcd.print(' ');
lcd.print(chuck.readJoyY());
lcd.print(' ');
lcd.print(chuck.readRoll());
lcd.print(' ');
lcd.print(chuck.readPitch());
lcd.print(' ');
lcd.print((int)chuck.readAccelX());
lcd.print(' ');
lcd.print((int)chuck.readAccelY());
lcd.print(' ');
lcd.print((int)chuck.readAccelZ());
lcd.println();
lcd.print(chuck.zPressed()?"z_on ":"z_off");
lcd.print(' ');
lcd.print(chuck.cPressed()?"c_on ":"c_off");
lcd.print(' ');
//nunchuk.update();
lcd.setCursor(0, 0);
lcd.print(chuck.readJoyX());
lcd.print(' ');
lcd.print(chuck.readJoyY());
lcd.print(' ');
lcd.print(chuck.zPressed()?"z_on ":"z_off");
lcd.print(' ');
lcd.print(chuck.cPressed()?"c_on ":"c_off");
lcd.print(' ');
lcd.setCursor(0, 1);
lcd.print((int)chuck.readAccelX());
lcd.print(' ');
lcd.print((int)chuck.readAccelY());
lcd.print(' ');
lcd.print((int)chuck.readAccelZ());
lcd.print(' ');
delay(150);
lcd.clear();
}
Retente avec les serial.print (tu peux mettre les 2 : lcd et serial)
Pour le problème des valeurs qui apparaissent trop vite, c'est normal, il faut que tu ajoutes une temporisation dans ta boucle loop, genre delay(500);
Les valeurs qui ne varient pas, difficile à dire. Tu es sûr de ton câblage ? Je trouve assez déroutant que le câblage ne soit pas indiqué sur la page du site arduino... A mon avis le problème vient de là.
Ta library nunchuck (http://playground.arduino.cc/Main/WiiChuckClass) utilise une fonction Wire !
regarde si tu as connecté le nunchuk au bonne endroit;
Connexions Wire trouvées sur ce site;
http://arduino.cc/en/reference/wire
En plus il est alimenté par 2 pin I/O d'un portboards.
Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1
Assez étrange comme méthode, en espérant que le courant fourni est suffisant...//Set power pinds
DDRC |= _BV(pwrpin) | _BV(gndpin);
PORTC &=~ _BV(gndpin);
PORTC |= _BV(pwrpin);
delay(100); // wait for things to stabilize
faudra chercher gndpin et pwrpin pour savoir de quelles pins il s'agit.
surement dans un ".H"
salut
merci pour vos réponse
en faite, il s'affiche sur la lcd se que je souhaitais .Le souci c'est que ces valeurs sur la lcd ne varient pas lorsque je bouge le joyestique , la télecomande ou appui sur les bouton c et z
j'ai vérifié que la nunchuck est bien alimenté en utilisant un serve et elle permet de le bouger
j'ai replacer les lcd par serial sauf pour lcd.setCursor(0, 0); et lcd.clear et plus rien ne s'affiche (cases foncées dans le 1ere ligne)??
j ai repri le code prècedent avec les lcd et j'ai changé le delay(150) par delay(500) pareil rien ne varie ??
la télécomande est bien alllumé voici ses branchements
GND(nunchuck)--------GND(arduino)
3.3v (nun )-------- 3;3V (arduino)
SDA(nun )--------pin 4 analogique
SCL(nun )---------pin 5 analoqique
j'utilise une arduino uno
Normal, tu dois avoir les infos dans la console série (outils -> Moniteur série).
Le fait que tu reçoives des valeurs ne signifie pas que ça fonctionne... Tente par exemple de débrancher ta manette et relance ton essai. Si les valeurs "qui ne bougent pas" restent les même malgré l'absence de la manette, c'est qu'il y a une erreur de câblage. Pour lever le problème, il faut, comme indiqué par freepicbasic, éplucher les bibliothèques pour déterminer les pins à utiliser.
Je ne connais pas du tout ces manettes, mais les brancher sur des entrées analogiques, ça me choque... SDA et SCL, c'est de l'I2C. (EDIT : c'est effectivement ce qui est marqué sur ta page... J'ai du mal à comprendre...?)
j'ai débranchée la manette et je l'ai remplacée par une autre et les valeurs indiqués ne sont pas les mêmes pour les bouton C et Z j'ai ON ce qui est bizarre mais rien ne varie
lorsque j'utilise ce code une 1ere ligne défile et les valeurs prises varie mais on ne les voit pas varié vu que la ligne défile
je comprend pas porquoi sa varie pour ce code et pas dans le code précedent ??
#include "Wire.h"
#include "WiiChuck.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
WiiChuck chuck = WiiChuck();
void setup() {
Serial.begin(115200);
chuck.begin();
chuck.update();
}
void loop()
{
chuck.update();
lcd.print("EX:");
lcd.print((int)chuck.readAccel X());
lcd.println();
lcd.print("EY:");
lcd.print((int)chuck.readAccel Y());
lcd.println();
lcd.print("EZ:");
lcd.print((int)chuck.readAccel Z());
lcd.println();
lcd.print("JX: ");
lcd.print((int)chuck.readJoyX( ));
lcd.println();
lcd.print("JY: ");
lcd.print((int)chuck.readJoyY( ));
lcd.println();
lcd.print("BZ:");
lcd.print((int)chuck.zPressed( ));
lcd.println();
lcd.print("BC: ");
Serial.print((int)chuck.cPress ed());
lcd.println();
delay(2000);
}
ps :au niveau de l'allimentation j'ai pu voir que pour certains il falait faire 3.3V (nunchuck) vers ------5V (arduino) or le 5V est déja occupé et de plus on me la déconseillé car je risue de griller quelque chose ??
d'après YURUK
Normal, tu dois avoir les infos dans la console série (outils -> Moniteur série).
ce n'est pas le cas
de + , j'ai du mal à éplucher les bibliothèques pour déterminer les pins à utiliser
veuillez s'il vs plait m'aider
merci
C'est moi ou tu tentes d'afficher 7 lignes de texte sur un écran qui n'en comporte que 2 ?
Ton 5v est déjà occupé ? ça se dédouble une pin d'alimentation... Ton arduino est alimentée comment ? Si ça se trouve, l'écran + la manette sont trop gourmands en courant.
PS : Tente de faire un petit effort sur ton orthographe, svp.