うおーるぼっと用プログラム Wiiリモコンからのダイレクト操作モードのみ BlueUSBをベースに使用しています。

Dependencies:   BD6211F mbed

Committer:
jksoft
Date:
Sun May 01 11:12:52 2011 +0000
Revision:
0:425791fe4b42

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:425791fe4b42 1 /*
jksoft 0:425791fe4b42 2 Copyright (c) 2011 JKSOFT
jksoft 0:425791fe4b42 3
jksoft 0:425791fe4b42 4 Permission is hereby granted, free of charge, to any person obtaining a copy
jksoft 0:425791fe4b42 5 of this software and associated documentation files (the "Software"), to deal
jksoft 0:425791fe4b42 6 in the Software without restriction, including without limitation the rights
jksoft 0:425791fe4b42 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
jksoft 0:425791fe4b42 8 copies of the Software, and to permit persons to whom the Software is
jksoft 0:425791fe4b42 9 furnished to do so, subject to the following conditions:
jksoft 0:425791fe4b42 10
jksoft 0:425791fe4b42 11 The above copyright notice and this permission notice shall be included in
jksoft 0:425791fe4b42 12 all copies or substantial portions of the Software.
jksoft 0:425791fe4b42 13
jksoft 0:425791fe4b42 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
jksoft 0:425791fe4b42 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
jksoft 0:425791fe4b42 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
jksoft 0:425791fe4b42 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
jksoft 0:425791fe4b42 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
jksoft 0:425791fe4b42 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
jksoft 0:425791fe4b42 20 THE SOFTWARE.
jksoft 0:425791fe4b42 21 */
jksoft 0:425791fe4b42 22
jksoft 0:425791fe4b42 23 #include "mbed.h"
jksoft 0:425791fe4b42 24 #include "USBHost.h"
jksoft 0:425791fe4b42 25 #include "Utils.h"
jksoft 0:425791fe4b42 26 #include "BD6211F.h"
jksoft 0:425791fe4b42 27 #include "Wiimote.h"
jksoft 0:425791fe4b42 28
jksoft 0:425791fe4b42 29
jksoft 0:425791fe4b42 30 // ----- Wallbot I/O Setting -----
jksoft 0:425791fe4b42 31 // Motor
jksoft 0:425791fe4b42 32 BD6211F RightMotor(p21,p22);
jksoft 0:425791fe4b42 33 BD6211F LeftMotor(p23,p24);
jksoft 0:425791fe4b42 34
jksoft 0:425791fe4b42 35 // Direct control mode
jksoft 0:425791fe4b42 36 int DirectMode( Wiimote* wii, int stat )
jksoft 0:425791fe4b42 37 {
jksoft 0:425791fe4b42 38 int ret = stat;
jksoft 0:425791fe4b42 39
jksoft 0:425791fe4b42 40 if( wii->left )
jksoft 0:425791fe4b42 41 {
jksoft 0:425791fe4b42 42 RightMotor = 1.0;
jksoft 0:425791fe4b42 43 LeftMotor = -1.0;
jksoft 0:425791fe4b42 44 }
jksoft 0:425791fe4b42 45 else if( wii->right )
jksoft 0:425791fe4b42 46 {
jksoft 0:425791fe4b42 47 RightMotor = -1.0;
jksoft 0:425791fe4b42 48 LeftMotor = 1.0;
jksoft 0:425791fe4b42 49 }
jksoft 0:425791fe4b42 50 else if( wii->up )
jksoft 0:425791fe4b42 51 {
jksoft 0:425791fe4b42 52 RightMotor = 1.0;
jksoft 0:425791fe4b42 53 LeftMotor = 1.0;
jksoft 0:425791fe4b42 54 }
jksoft 0:425791fe4b42 55 else if( wii->down )
jksoft 0:425791fe4b42 56 {
jksoft 0:425791fe4b42 57 RightMotor = -1.0;
jksoft 0:425791fe4b42 58 LeftMotor = -1.0;
jksoft 0:425791fe4b42 59 }
jksoft 0:425791fe4b42 60 else
jksoft 0:425791fe4b42 61 {
jksoft 0:425791fe4b42 62 RightMotor = 0.0;
jksoft 0:425791fe4b42 63 LeftMotor = 0.0;
jksoft 0:425791fe4b42 64 }
jksoft 0:425791fe4b42 65
jksoft 0:425791fe4b42 66 float factor = wii->wheel / 150.0f;
jksoft 0:425791fe4b42 67
jksoft 0:425791fe4b42 68 float left_factor = (factor >= 0.0) ? 1.0 : 1.0 - (-factor);
jksoft 0:425791fe4b42 69 float right_factor = (factor <= 0.0) ? 1.0 : 1.0 - factor;
jksoft 0:425791fe4b42 70
jksoft 0:425791fe4b42 71 if( wii->one )
jksoft 0:425791fe4b42 72 {
jksoft 0:425791fe4b42 73 RightMotor = right_factor;
jksoft 0:425791fe4b42 74 LeftMotor = left_factor;
jksoft 0:425791fe4b42 75 }
jksoft 0:425791fe4b42 76 if( wii->two )
jksoft 0:425791fe4b42 77 {
jksoft 0:425791fe4b42 78 RightMotor = -left_factor;
jksoft 0:425791fe4b42 79 LeftMotor = -right_factor;
jksoft 0:425791fe4b42 80 }
jksoft 0:425791fe4b42 81
jksoft 0:425791fe4b42 82 return(ret);
jksoft 0:425791fe4b42 83 }
jksoft 0:425791fe4b42 84
jksoft 0:425791fe4b42 85 // Processing when receiving it from Wiiremote
jksoft 0:425791fe4b42 86 int wall_bot_remote(char *c,int stat)
jksoft 0:425791fe4b42 87 {
jksoft 0:425791fe4b42 88 Wiimote wii;
jksoft 0:425791fe4b42 89 int ret = stat;
jksoft 0:425791fe4b42 90
jksoft 0:425791fe4b42 91 wii.decode(c);
jksoft 0:425791fe4b42 92
jksoft 0:425791fe4b42 93 ret = DirectMode( &wii ,ret );
jksoft 0:425791fe4b42 94
jksoft 0:425791fe4b42 95 return(ret);
jksoft 0:425791fe4b42 96 }
jksoft 0:425791fe4b42 97
jksoft 0:425791fe4b42 98 int GetConsoleChar()
jksoft 0:425791fe4b42 99 {
jksoft 0:425791fe4b42 100 return(0);
jksoft 0:425791fe4b42 101 }
jksoft 0:425791fe4b42 102
jksoft 0:425791fe4b42 103 int OnDiskInsert(int device)
jksoft 0:425791fe4b42 104 {
jksoft 0:425791fe4b42 105 return(0);
jksoft 0:425791fe4b42 106 }
jksoft 0:425791fe4b42 107
jksoft 0:425791fe4b42 108 int main()
jksoft 0:425791fe4b42 109 {
jksoft 0:425791fe4b42 110 // USB Init is done for Bluetooth
jksoft 0:425791fe4b42 111 USBInit();
jksoft 0:425791fe4b42 112
jksoft 0:425791fe4b42 113 while(1)
jksoft 0:425791fe4b42 114 {
jksoft 0:425791fe4b42 115 // USB Processing is done for Bluetooth
jksoft 0:425791fe4b42 116 USBLoop();
jksoft 0:425791fe4b42 117 }
jksoft 0:425791fe4b42 118 }