Soy nuevo en este foro y espero me podáis ayudar. Me he pasado todo el fin de semana peleándome con el arduino por que me hace cosas raras.
Se supone que metiendo un código debería de aparecerme unos valores lógicos en el monitor del arduino, pero lo que me aparece es esto:
üÈÔÔÊÊÊÄÔÊÊÊÔÊÊÊÔÄÿÿÄäÊÊÔÊÊÊäÊÊÊÊÔÊÊÔÊÊÊÊÄÊÜÄÜÜ
ÄäÊÊÊÄÊÊÔÊùÊÊÄÊ
ÊÔÄÊÄÊÔÊÊÊÊÊÄÊÊÊÔÊÿÊÊÄÊÊÊÊÊ
Me dijeron que cambiara los baudios ya que trabajo en windows y deberia de ser 11200 o algo así, no lo recuerdo bien ahora, pero tampoco, me siguen apareciendo los símbolos de arriba.
Hay alguna manera de solucionar el problema?
Mi arduino es el: Arduino mini PRO ATMEGA 328
Estoy desesperado me he pasado el fin de semana intentando solucionarlo pero no lo he conseguido y ya no se donde buscar ayuda.
Os cuento un poco como tengo el tema en este momento.
Ya he conseguido que se vean los numeros y letras que se tenian que ver lo que pasa es que para ello tengo que tener la velocidad de la programacion por ejemplo a 9600 y la del programa para leer los datos a el doble 19200.
Eso por un lado.
Por otro lado tengo el wii motion plus conectado al arduino y lo que me saca el monitor es lo siguiente.
El codigo que uso para probar los valores es el siguiente.
Alguein podria ayudarme por favor a saber de donde viene el problema de que no me de valores el wii motion?????
#include <Wire.h>
byte data[6]; //six data bytes
int yaw, pitch, roll; //three axes
int yaw0, pitch0, roll0; //calibration zeroes
void wmpOn(){
Wire.beginTransmission(0x53); //WM+ starts out deactivated at address 0x53
Wire.send(0xfe); //send 0x04 to address 0xFE to activate WM+
Wire.send(0x04);
Wire.endTransmission(); //WM+ jumps to address 0x52 and is now active
}
void wmpSendZero(){
Wire.beginTransmission(0x52); //now at address 0x52
Wire.send(0x00); //send zero to signal we want info
Wire.endTransmission();
}
void calibrateZeroes(){
for (int i=0;i<10;i++){
wmpSendZero();
Wire.requestFrom(0x52,6);
for (int i=0;i<6;i++){
data*=Wire.receive();* } yaw0+=(((data[3]>>2)<<8)+data[0])/10; //average 10 readings pitch0+=(((data[4]>>2)<<8)+data[1])/10; roll0+=(((data[5]>>2)<<8)+data[2])/10; } Serial.print("Yaw0:"); Serial.print(yaw0); Serial.print(" Pitch0:"); Serial.print(pitch0); Serial.print(" Roll0:"); Serial.println(roll0); } void receiveData(){ wmpSendZero(); //send zero before each request (same as nunchuck) Wire.requestFrom(0x52,6); //request the six bytes from the WM+ for (int i=0;i<6;i++){ data*=Wire.receive();* } yaw=((data[3]>>2)<<8)+data[0]-yaw0; pitch=((data[4]>>2)<<8)+data[1]-pitch0; roll=((data[5]>>2)<<8)+data[2]-roll0; } //see Wiimote/Extension Controllers - WiiBrew //for info on what each byte represents void setup(){ Serial.begin(115200); Serial.println("WM+ tester"); Wire.begin(); wmpOn(); //turn WM+ on calibrateZeroes(); //calibrate zeroes delay(1000); } void loop(){ receiveData(); //receive data and calculate yaw pitch and roll Serial.print("yaw:");//see diagram on randomhacksofboredom.blogspot.com Serial.print(yaw); //for info on which axis is which Serial.print(" pitch:"); Serial.print(pitch); Serial.print(" roll:"); Serial.println(roll); delay(100); }
_*Sacado de esta pagina web: http://randomhacksofboredom.blogspot.com/2009/06/wii-motion-plus-arduino-love.html*_