Étape 6: Ordinateur trucs
Pour ce faire vous aurez besoin de la dernière version de GlovePIE (ici), le logiciel arduino si vous avez choisi l’option 1 (ici) et un jeu à utiliser le programme d’installation avec.
Tout d’abord, connecter une wiimote à l’ordinateur en utilisant soit construit en bluetooth ou un dongle bluetooth.
Ensuite, Télécharger GlovePIE et créez un nouveau fichier appelé IRloc.PIE
Entrez le code suivant :
si var.loopUntil=0 {}
var.startX=wiimote1. PointerX
var.startY=wiimote1. PointerY
var.SBD=wiimote1.z
var. ButtonFreezeTime = 250 ms
var. PointerBump = KeepDown (Pressed (wiimote1. A), var. ButtonFreezeTime) ou KeepDown (Pressed (wiimote1. B), var. ButtonFreezeTime)
Wiimote1.LED1 = true
Wiimote1.LED2 = true
Wiimote1.Led3 = true
Wiimote1.Led4 = true
Wait(10ms)
var.difX= (wiimote1. PointerX-var.startX)
var.difY= (wiimote1. PointerY-var.startY)
var.err = 15
Si wiimote.dot1vis et wiimote.dot2vis et pas de var. {IgnoreSensorBar}
Si var. UsedIR = {faux
[var. Hold_x, var. Hold_y] = [0, 0]
[var. Recenter_x, var. Recenter_y] = [0, 0]
var. UsedIR = true
}
var.irDot1_xy = [(512 - wiimote.dot1x) / 1024, (wiimote.dot1y - 384) / 768]
var.irDot2_xy = [(512 - wiimote.dot2x) / 1024, (wiimote.dot2y - 384) / 768]
[var.irMid_x, var.irMid_y] = (var.irDot1_xy + var.irDot2_xy) / 2
var.irMid_angle = atan2 (var.irMid_x, var.irMid_y)
var.irMid_length = [var.irMid_x, var.irMid_y]
var.irNew_angle = var.irMid_angle - var. Rouleau
var.irNew_xy = [sin(var.irNew_angle), cos(var.irNew_angle)] * |var.irMid_length|
[var.ir_x, var.ir_y] = var.irNew_xy + [.5,.5]
var.irSpeed_x = var.irSpeed_x * 8 + abs(delta(var.ir_x)) * 1000
var.irSpeed_y = var.irSpeed_y * 8 + abs(delta(var.ir_y)) * 1000
var.irSpeed_xy = [var.irSpeed_x, var.irSpeed_y]
Si (var.irSpeed_x < 40 et var.wmSpeed_x < 40) {}
Si ((var.ir_x < var.irMin_x) ou (var. MinMax_x = 2 et (var.irMax_x - var.ir_x) > = 15.)) et ((var.wmMax_x-var.wm_x) >.075) {}
[var.wmMin_x, var.irMin_x] = [var.wm_x, var.ir_x]
var. MinMax_x = 1
}
Si ((var.ir_x > var.irMax_x) ou (var. MinMax_x = 1 et (var.ir_x - var.irMin_x) > = 15.)) et ((var.wm_x-var.wmMin_x) >.075) {}
[var.wmMax_x, var.irMax_x] = [var.wm_x, var.ir_x]
var. MinMax_x = 2
}
}
Si (var.irSpeed_y < 40 et var.wmSpeed_y < 40) {}
Si ((var.ir_y < var.irMin_y) ou (var. MinMax_y = 2 et (var.irMax_y - var.ir_y) > = 15.)) et ((var.wmMax_y-var.wm_y) >.075) {}
[var.wmMin_y, var.irMin_y] = [var.wm_y, var.ir_y]
var. MinMax_y = 1
}
Si ((var.ir_y > var.irMax_y) ou (var. MinMax_y = 1 et (var.ir_y - var.irMin_y) > = 15.)) et ((var.wm_y-var.wmMin_y) >.075) {}
[var.wmMax_y, var.irMax_y] = [var.wm_y, var.ir_y]
var. MinMax_y = 2
}
}
Si var. WMIR_switch = {1}
[var. IR_adj_x, var. IR_adj_y] = [var. Old_WM_x, var. Old_WM_y] - [var.ir_x, var.ir_y]
var. WMIR_switch = 0
}
Si var. WMIR_switch = {0}
[var. Rough_x, var. Rough_y] = ([var.ir_x, var.ir_y] + [var. IR_adj_x, var. IR_adj_y] - [.5,.5]) * var. NewZoom + [.5,.5]
[var. WMIR_x, var. WMIR_y] = [var.wmNew_x, var.wmNew_y] - [var.ir_x, var.ir_y]
var. WMIR_xy = [var. WMIR_x, var. WMIR_y]
var. IR_adj_c = 1 - EnsureRange (|var. WMIR_xy|, 0, 5) / 5
[var. IR_adj_x, var. IR_adj_y] = [var. IR_adj_x, var. IR_adj_y] * var. IR_adj_c
}
[var. WMIR_cal_x, var. WMIR_cal_y] = [var.wm_x, var.wm_y] - [var.ir_x, var.ir_y]
d’autre
[var. Rough_x, var. Rough_y] = ([var.wmNew_x, var.wmNew_y] - [var. WMIR_x, var. WMIR_y] + [var. IR_adj_x, var. IR_adj_y] - [.5,.5]) * var. NewZoom + [.5,.5]
[var. Old_WM_x, var. Old_WM_y] = ([var. Rough_x, var. Rough_y] - [.5,.5]) / var. NewZoom + [.5,.5]
var. WMIR_switch = 1
var. WMIR_xy = [0, 0]
Si var.started = true et var.wmCalON = false alors [var.ir_x, var.ir_y] = ([var. Smooth_x, var. Smooth_y] - [.5,.5]) / var. NewZoom + [.5,.5]
}
if(var.LoopCount<10) {}
var.XS=var. StartX
var.ys=var. StartY
}
var.totalDistX=(var.xs-var.StartX) * 10
var.totalDistY=(var.ys-var.StartY) * 10
var. TDXS = 0
var. TDYS = 0
var.TX=var. TDXS-var.totalDistX
var.Ty=var. TDYS-var.totalDistY
Debug = "XDist: « + var.tx+ » YDist: « + var.ty+ » BDist:" + wiimote. PointerVisible
var.loopCount=var.loopCount+1
Si wiimote. PointerVisible = {0}
var.inC=var.inC+1
}
Si var.inC > {30
var.loopUntil=.01
}
}
}
var.LR=0
Si var.tx > {1,75
var.LR=1
}
Si var.tx <-1.75 {}
var.LR=-1
}
var.ud=-1
Si var.ty > 1.6
var.ud=0
}
Si var.ty > 2.6
var.ud=1
}
Si {var.loopUntil!=0}
Debug = "LR: « + var.lr+ » UD: » +var.ud
var.loopUntil=0
}
Si {var.inC=31}
Si var.lr=-1 et var.ud=1 {}
Pavnum1 de presse
attendre 1 ms
Communiqué de Pavnum1
}
Si var.lr=-1 et var.ud=0 {}
Pavnum2 de presse
attendre 1 ms
Communiqué de Pavnum2
}
Si {var.lr=-1 et var.ud=-1
numpad3 de presse
attendre 1 ms
Communiqué de numpad3
}
Si var.lr=0 et var.ud=1 {}
numpad4 de presse
attendre 1 ms
Communiqué de numpad4
}
Si var.lr=0 et var.ud=0 {}
numpad5 de presse
attendre 1 ms
Communiqué de numpad5
}
Si var.lr=0 et var.ud=-1 {}
numpad6 de presse
attendre 1 ms
numpad6 de libération
}
Si var.lr=1 et var.ud=1 {}
numpad7 de presse
attendre 1 ms
Communiqué de numpad7
}
Si var.lr=1 et var.ud=0 {}
numpad8 de presse
attendre 1 ms
Communiqué de numpad8
}
Si var.lr=1 et var.ud=-1 {}
numpad9 de presse
attendre 1 ms
Communiqué de numpad9
Appuyez sur Maj
}
}
Si {pressed(key.enter)}
var.loopUntil=0
var.inC=0
}
Voici une explication rapide du programme et comment l’utiliser :
Lorsque vous exécutez tout d’abord le programme, assurez-vous que le capteur infrarouge peut « voir » les LEDs infrarouges émettant de la lumière. Il commence par un affichage dans le panneau de débogage ci-dessus qui lit "XDist : 0.00 YDist : 0.00 BDist : 1.00"
Si la valeur double 1,00 pour BDist montre 0,00 le capteur infrarouge ne peut pas détecter la source de lumière infrarouge. Après que qu’une source est détectée, il sera calibrer le mouvement de la balle et sortie clavier valeurs 1-9 selon positionnement 3D calculée. Lorsque la source de lumière ne peut plus être vu par le capteur infrarouge, le débogage s’affichera « LR: valeur UD : valeur » où la valeur est remplacée par un entier compris entre -1 et 1.
Cela montre le positionnement global de la « boule » dans une grille carrée de 3 x 3 comme celui montré dans le diagramme.
Après cela, il est facile de contrôler le logiciel glovePIE. Lorsque vous exécutez le logiciel, attendre que le BDist est à 1 et puis frappez le ballon passé le capteur infrarouge. Cela se déclenche un positionnement de débogage et puis à son tour déclencher une sortie de clavier numérique de 1 à 9 selon la position calculée. Vous pouvez maintenant intégrer cela dans un environnement de jeu en créant un jeu qui utilise une entrée de 9 valeur, ou vous pouvez m’envoyer un message pour un jeu que j’ai créé spécialement pour ce projet en cliquant ici.