hola amigos del foro.
bueno, les cuento que estoy tratando de leer un wiimotion utilizando pbp y un pic16f628 para ello. he estado investigando un poco para ver si encontraba algun programilla de ejmplo escrito en pbp pero no he tenido suerte, todo lo que hay es en ccs o arduino... pude encontrar en cambio, 2 ejemplos de lectura de el nunchuk (lease nunchak) escritos en pbp, uno para leer los datos en la pc y otro para leer los datos en un lcd. lo que yo estoy intentando hacer con el wiimotion, es leer uno de sus 3 ejes, cualquiera sea, y pasar esos datos a un servomotor. se como leer mediante i2c y como manejar servos en base a una variable pero no se como leer el wiimotion, hice un ejemplo tratando de utilizar el ejemplo nunchack para mover el servo, pero sin resultados. ¿alguno de uds podra darme una mano con esto? solo necesito saber cuales son las direcciones correctas en la lectura y escritura del wiimotion, por favor, ¿me ayudan?
aca dejo el codigo que hice, se que obviamente no esta bien escrito porque no funciona
saludos
@ DEVICE MCLR_OFF, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
include "modedefs.bas"
DEFINE OSC 4
DEFINE I2C_HOLD 1
trisa=%000000
trisb=%00000000
porta=%000000
portb=%00000000
DEFINE LCD_DREG PORTA 'lcd pins
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 7
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5
SDA VAR PORTB.1
SCL VAR PORTB.2
a1 var byte
a2 var byte
a3 var byte
a4 var byte
a5 var byte
a6 var byte
b1 var byte
b2 var byte
b3 var byte
b4 var byte
b5 var byte
b6 var byte
LCDOUT $fe, 1
lcdout "prova i2c = "
pause 2000
XX: 'read nunchuk
i2cwrite sda,scl,$A6,$FE,[$04]
pause 10
i2cwrite sda,scl,$A4,[00]
pause 10
i2cread sda,scl,$A5,[a1,a2,a3,a4,a5,a6]
pause 10
a1=(a1 ^ $17)+ $17 'decoder
a2=(a2 ^ $17)+ $17
a3=(a3 ^ $17)+ $17
a4=(a4 ^ $17)+ $17
a5=(a5 ^ $17)+ $17
a6=(a6 ^ $17)+ $17
if (a1<>b1)or(a2<>b2)or(a3<>b3)or(a4<>b4)or(a5<>b5)or(a6<>b6)then
pulsout portb.0,a4
LCDOUT $fe, 1
lcdout "d: ",#a1," ",#a2," ",#a3,$FE,$C0,#a4," ",#a5," ",bin a6
b1=a1
b2=a2
b3=a3
b4=a4
b5=a5
b6=a6
endif
pause 200
goto XX
END