Pages: [1] 2   Go Down
Author Topic: ARDUINO UNO YNUNCHUK  (Read 1363 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola que tal, he estado trabajando con la placa de arduino UNO y  me pidieorn un proyecto que lea el valor de un acelerometro, para no gastar de más simplemente decidí utilizar el nunchuk del wii, en una página (http://www.windmeadow.com/node/42) encontré la forma de conectarlo, el código y hasta el hackeo que se le debe de hacer, peroparece que nomas esto no se me da porque no puedo ahcerlo funcionar, tengo dos problemas:

1) en las instrucciones me dice que en la carpeta wire se encontrará un archivo twi.o , yo sólo tengo el archivo twi.c y el twi.h , (el software lod escargué de la página de arduino) como lo tengo el .o decidí borrar el .c y realizar el hackeo com dicen en la página del .h, cuando compilo el programa me aparecen muchos errores concernientes a la transmisión.

2) si no borro el twi.c, y hackeo el twi.h, el programa se compila y todo pero al correr el programa cuando abro la ventana de la transmisions serial sólo me aparece  "setup finished", si reseteo el arduino vuelve a aprecer setup finished y es todo,  no sé que más hacer ya que en casi todos los foros se referencian al codigo de la página que puse y a mi simplemente no me funciona estoy haciendo algo muy mal?

AGRADECERÍA SU PRONTA RESPUESTA
« Last Edit: November 25, 2011, 07:02:50 pm by MELPOMENE86 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

JA!, el problema ya se solucionó, la configuración de los cables estaba mal, ya recibo datos pero ahora el problema es que  los datos no cambian, sigo utilizando el código que viene en la págna que anteriormente encioné, alguien tendrá alguna idea de cual sea el problema?
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no te ciñas a una sola página, como te dije por privado hay miles de paginas donde te dicen como hacerlo.

en el playground tienes una librería ya hecha para esto, con su código de ejemplo y con código también para Processing, no tienes mas que copiar, pegar y probar. si no te funciona es porque tienes al montaje al hecho. prueba primero con los ejemplos mencionados.

http://www.arduino.cc/playground/Main/WiiChuckClass

un saludo


« Last Edit: November 26, 2011, 08:12:47 am by SrDonGato » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De hecho en este momento estoy haciendo lo que mencionan en el enlace que  pegaste  y de nuevo no sé que rayos hago mal, solo cree la carpeta en la ubicación de  librerías que se llamara WiiChuck, y le agregue el código que allí proponen, en .h, y una vez que abro el sketch y pego el codigo de mostrar los datos por el puerto serie me aparece estos errores:

wii123.cpp:4:22: error: WiiChuck.h: No such file or directory
wii123:10: error: 'WiiChuck' does not name a type
wii123.cpp: In function 'void setup()':
wii123:18: error: 'chuck' was not declared in this scope
wii123.cpp: In function 'void loop()':
wii123:26: error: 'chuck' was not declared in this scope
 y el primer renglon después de las definiciones se subraya en amarillo

Leí en el apartado de librerías http://arduino.cc/es/Hacking/LibraryTutorial que otra forma para cargar una librería es desde el sketch pero de hecho cuando elijo esa opción no me aprece la librería que yo cree es decir WiiChuk como en el tutorial dice debería aparecer, hice extactamente eso sólo copie y pegue y no sé ahora que puede ser el problema.
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

te has descargado la librería y la has puesto en la carpeta adecuada ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, he logrado obtener los datos, el problema era simplemente que tenía la carpeta de arduino duplicada y escondida , y el ejecutable jalaba datos de una carpeta sin la librería wiichuck, decidí entonces desintalar todo reinstalarlo y listo, segui las instrucciones para poder procesar los datos y  pues aparentemente se leen en mi puerto serie, lo siguiente que trate de hacer es el programa que interactue con el cubo, ya descargué el processing y ya hice los cambios necesarios para que la librería de java sea la misma con la que corre,me auxilié con este sitio web: http://www.sundh.com/blog/2011/05/get-processing-and-arduino-to-talk/   AHORA... surge un nuevo problema, el cubo debería supuestamente de rotar como lo haría el nunchuk, pero no hace absolutamente nada, el cubo no se mueve, ahora sí no sé de donde venga el problema, el programa en el processing no me marca error alguno, alguna idea? copie el código de http://www.arduino.cc/playground/Main/WiiChuckClass
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la respuesta puede ser simple o no.
lo que pasa que el code del arduino que bajastes no tiene delim, es decir un sinbolo metido en medio de cada
dato para que el processing interprete las lecturas, por cierto, el cubo solo te deja
moverlo con los jostkck , si deceas moverlo en funcion Acelerómetros, deber cambie el numero de array que lee
es decir:
datos del nuchack:
datos[0]----jostikX
datos[1]----jostikY
datos[2]---- AcelerómetroX
datos[3]----AcelerómetroY
datos[4]---AcelerómetroZ
datos[5]---BOTON A
datos[6]---BOTON B
--------------------------------------
RESUMNIDO CAMBIA ESTO:
Quote
Serial.print (joy_x_axis, DEC);
  Serial.print ("\t");

  Serial.print (joy_y_axis, DEC);
  Serial.print ("\t");

  Serial.print (accel_x_axis, DEC);
  Serial.print ("\t");

  Serial.print (accel_y_axis, DEC);
  Serial.print ("\t");

  Serial.print (accel_z_axis, DEC);
  Serial.print ("\t");

  Serial.print (z_button, DEC);
  Serial.print ("\t");

  Serial.print (c_button, DEC);
  Serial.print ("\t");

  Serial.print ("\r\n");


POR ESTO:

Quote
Serial.print (joy_x_axis, DEC);
  Serial.print(",");

  Serial.print (joy_y_axis, DEC);
  Serial.print(",");

  Serial.print (accel_x_axis, DEC);
  Serial.print(",");

  Serial.print (accel_y_axis, DEC);
  Serial.print(",");

  Serial.print (accel_z_axis, DEC);
  Serial.print(",");

  Serial.print (z_button, DEC);
  Serial.print(",");

  Serial.println (c_button, DEC);



Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

tienes que modificar el codigo de processing y poner el puerto COM que te detecte tu ordenador

creo recordar esta puesto como si fuera linux, quita eso y pon el puerto serie que te detecte en el IDE

con eso ya rula
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

por cierto, la velociad del puerto del arduino y el processing estan diferentes, caanbia eso
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Cómo cambio el puerto, yo recibo datos por el COM4, no sé si te refieras a esta parte de la instrucción import processing.serial.*;
Serial myPort;                // The serial port

int BAUDRATE = 115200;
char DELIM = ','; // the delimeter for parsing incoming data


void setup()
{
  size(200, 200, P3D);
  noStroke();
  colorMode(RGB, 1);
  myPort = new Serial(this, Serial.list()[0], BAUDRATE);
  // clear the serial buffer:
  myPort.clear();

 smiley-eek
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

int BAUDRATE = 115200; -------velociad del puerto--este debe ser=a la velocidad en el arduino

arduino velociad= Serial.begin(9600);  --cambia

-----------
puerto  q puerto???
-------
myPort = new Serial(this, Serial.list()[0], BAUDRATE);

---la lista de puertos estan enumerados en un array, es decir debe cambia o sustiri el cero por su pouerto, supomgo que es el tres
Serial.list()[0]---
Serial.list()[1]---
Serial.list()[2]---
Serial.list()[3]--
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entiendo que la velocidad de transmisión del puerto, sea en el programa que sea  debe ser la misma, eso ya lo había cambiado, ahora en el programa que yo copié efectivamente está el caracter (","), en lugar del ("\t"); así que ese no era el problema, entonces supongo que lo que procede es la respuesta de DonGato que me dice : tienes que modificar el codigo de processing y poner el puerto COM que te detecte tu ordenador creo recordar esta puesto como si fuera linux.

He allí mi respuesta a que yo utilizo el COM4, lo que no entiendo es cual es la parte que hay que modificar por eso pegue esa parte del código que es en donde se declara.

Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

D:\processing-1.5.1\modes\java\reference\libraries\serial\Serial.html

yo cambiaria algo de esta linea

  myPort = new Serial(this, Serial.list()[0], BAUDRATE);

en vez de serial list pondria directamente el COM que utilizo

o prueba a cambiar el indice, si no tienes mucho puertos COM ve cambiando a 1 y prueba, si no con 2...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pfffff, no he probado la interfaz con el processing porque un problema que pensé había resuelto   ha surgido de nuevo, resulta que utilizando el código que está en la página de arduino: http://www.arduino.cc/playground/Main/WiiChuckClass  al correr mi programa en el SERIAL BOARD sólo leo los datos -132,0,-510,-490,-460, miré el código y esos son los valores que se definen al inicio:

#define ZEROX 510 
#define ZEROY 490
#define ZEROZ 460
#define RADIUS 210  // probably pretty universal

#define DEFAULT_ZERO_JOY_X 124
#define DEFAULT_ZERO_JOY_Y 132

Por más que yo mueva o presione los botones en el nunchuk, los valores no cambian, he probado con otros programas que he encontrado en la red como el de esta persona :
http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/

En este caso los valores me salen 0 , si presiono reset y muevo el joystick los valores cambian a 255 pero ningún otro valor cambia a medida que muevo el nunchuk, yo pele los cables del nunchuk no utilice el adaptador, la conexión ya es la correcta la he checado múltiples veces, quiero saber si es el control o estoy haciendo algo mal en los programas.
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

saca una foto para ver como tienes hecho el montaje

un saludo
Logged

Pages: [1] 2   Go Up
Jump to: