WIIMOTE
This is the a sample python script that use serial to send command to the arduino board. it's still not complete but should help you study the wiimote and specialy the #bot.write command. pressind A+B quit the script. Those motions are based on OGA arduino sketch that add a command to turn off the servos.
import time
import sys
import serial
import os
import time
import datetime
import cwiid
#Serial connection for interfacting with Arduino board on Rapiro
rapiro = serial.Serial('/dev/ttyAMA0', 57600, timeout = 10)
#Container for joystik input
data = []
#Define colors codes and maximum intensity for the RGB LED
MAXRED = 255
MAXGREEN = 225
MAXBLUE = 255
MAXTIME = 010
RED = MAXRED
GREEN = MAXGREEN
BLUE = MAXBLUE
TIME = MAXTIME
###################################################
def timeSleep(t):
if t>0:
time.sleep(t)
def a_calc(x, c):
x = 255 & (x + 128)
y = (int(x/c[0]) + c[1] ) * c[2]
z = int((y + c[3]) * c[4] + c[5])
if z >= c[6]:
z = c[6]
elif z <= c[7]:
z = c[7]
return(z)
################################################
#RGB COLOR program with timing.
def led(RED,GREEN,BLUE,TIME):
s = "#PR" + str(RED).zfill(3) + "G" + str(GREEN).zfill(3) + "B" + str(BLUE).zfill(3) + "T" + str(TIME).zfill(3)
return (s)
#Print Max values, and Changing colors. All max= White.
#TIME is the fading speed 000 change the color instantaneously, 255 very slowly.
rapiro.write(led(RED,GREEN,BLUE,TIME))
print(led(RED,GREEN,BLUE,TIME))
time.sleep(0.2)
rapiro.write(led(147,023,239,020))
print rapiro.write('#H')
print 'now we play with the Wiimote..\n'
time.sleep(0.5)
#connecting to the wiimote. This allows several attempts
# as first few often fail.
print 'Press 1 + 2 on your Wii Remote now ...'
time.sleep(1)
wm = None
i=2
while not wm:
try:
wm=cwiid.Wiimote()
except RuntimeError:
if (i>5):
print("cannot create connection")
quit()
print "Error opening wiimote connection"
print "attempt " + str(i)
i +=1
print 'Wii Remote connected...\n'
print 'Press PLUS and MINUS together to disconnect and quit.\n'
wm.rumble = 1
time.sleep(0.5)
wm.rumble = 0
#set wiimote to report button presses and accelerometer state
wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC #| cwiid.RPT_CLASSIC | cwiid.RPT_NUNCHUK
#turn on led to show connection has been established
wm.led = 1
button_delay = 0.3
#PS3 joystik input code, adapt it for the wiimote..
'''
while 1:
for character in file.read(1):
data += ['%02X' % ord(character)]
if len(data) == 8:
if mode6[data[6]] == 'button':
#print(data)
mode = mode6[data[6]]
state = state4[data[4]]
type = button7[data[7]]['type']
act = button7[data[7]][state]
actWait = button7[data[7]][tconv[state]]
sys.stdout.write('You %s the %s %s. action=%s\n' % (state, type, mode, act))
timeSleep(actWait)
com.write(act)
elif mode6[data[6]] == 'analog':
now = datetime.datetime.now()
now_time = now.minute * 60000 + now.second * 1000 + now.microsecond/1000
a_data = int(data[5],16)
if data[7] == '00': #Left stick L-R PS06
LLR = a_calc(a_data, stick7[data[7]])
joy = True
RED = a_calc(a_data, wiiaccdata[0])
'''
print 'connected, starting the loop........'
while True:
#wiimote
wiibuttons = wm.state['buttons']
buttons = wiibuttons
wiiacc = wm.state['acc']
if (buttons & cwiid.BTN_1):
print (wm.state)
time.sleep(0.8)
if (buttons & cwiid.BTN_2):
print (wm.state)
time.sleep(0.2)
if (buttons - cwiid.BTN_PLUS - cwiid.BTN_MINUS == 0):
print '\nClosing connection ...'
wm.rumble = 1
time.sleep(0.4)
wm.rumble = 0
rapiro.write('#M08')
time.sleep(5)
rapiro.write('#M00')
time.sleep(3)
print '\nExiting program ...'
rapiro.write('#H')
exit(wm)
if (buttons - cwiid.BTN_A - cwiid.BTN_B == 0):
print '\nExtra rapiro movement STOP'
time.sleep(1)
rapiro.write('#H')
if (buttons & cwiid.BTN_HOME):
print 'Home Button pressed'
time.sleep(button_delay)
rapiro.write("#H")
if (buttons & cwiid.BTN_LEFT):
print 'Left pressed'
time.sleep(button_delay)
if(buttons & cwiid.BTN_RIGHT):
print 'Right pressed'
time.sleep(button_delay)
if (buttons & cwiid.BTN_UP):
print 'Up pressed'
time.sleep(button_delay)
if (buttons & cwiid.BTN_DOWN):
print 'Down pressed'
time.sleep(button_delay)
if (buttons & cwiid.BTN_A):
print 'Button A pressed'
time.sleep(button_delay)
if (buttons & cwiid.BTN_B):
print 'INFORMATION YOU NEED TO HACK'
print(wm.state)
time.sleep(button_delay)
print('\nThis is nupposed to change the ligh so adjust the colors to match 0 to 255\n'+"#PR" + str(RED) + "G" + str(GREEN) + "B" + str(BLUE) + 'T' + str(TIME))
print str(wiiacc) + 'wii ACC data in str format\n'
rapiro.write(led(wiiacc[0],wiiacc[1],wiiacc[2],'010'))
if (buttons & cwiid.BTN_MINUS):
print 'Minus Button pressed'
time.sleep(button_delay)
if (buttons & cwiid.BTN_PLUS):
print 'Plus Button pressed'
time.sleep(button_delay)
Login with google-oauth2
Login with facebook
Help