ORTP-L_WiiRemoteTest

Dependencies:   Motordriver mbed FatFileSystem

Fork of WallbotTypeN by Junichi Katsu

Committer:
passionvirus
Date:
Fri Mar 29 09:05:28 2013 +0000
Revision:
1:df4118878dc4
Parent:
0:425791fe4b42
init

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 "Wiimote.h"
passionvirus 1:df4118878dc4 27 #include "motordriver.h"
jksoft 0:425791fe4b42 28
passionvirus 1:df4118878dc4 29 AnalogIn L_IR1(p15); // Analog In Pin
passionvirus 1:df4118878dc4 30 AnalogIn L_IR2(p16); // Analog In Pin
passionvirus 1:df4118878dc4 31 AnalogIn L_IR3(p17); // Analog In Pin
passionvirus 1:df4118878dc4 32 AnalogIn R_IR3(p18); // Analog In Pin
passionvirus 1:df4118878dc4 33 AnalogIn R_IR2(p19); // Analog In Pin
passionvirus 1:df4118878dc4 34 AnalogIn R_IR1(p20); // Analog In Pin
jksoft 0:425791fe4b42 35
passionvirus 1:df4118878dc4 36 DigitalOut LLED(p7); // Digital Out Pin
passionvirus 1:df4118878dc4 37 DigitalOut RLED(p8);
passionvirus 1:df4118878dc4 38
passionvirus 1:df4118878dc4 39 DigitalOut L_IRLED1(p9); // Digital Out Pin
passionvirus 1:df4118878dc4 40 DigitalOut L_IRLED2(p10); // Digital Out Pin
passionvirus 1:df4118878dc4 41 DigitalOut L_IRLED3(p11); // Digital Out Pin
passionvirus 1:df4118878dc4 42 DigitalOut R_IRLED3(p12); // Digital Out Pin
passionvirus 1:df4118878dc4 43 DigitalOut R_IRLED2(p13); // Digital Out Pin
passionvirus 1:df4118878dc4 44 DigitalOut R_IRLED1(p14); // Digital Out Pin
passionvirus 1:df4118878dc4 45
passionvirus 1:df4118878dc4 46 Motor L_Motor(p25, p22, p21, 1); // pwm, fwd, rev, can break
passionvirus 1:df4118878dc4 47 Motor R_Motor(p26, p24, p23, 1); // pwm, fwd, rev, can break
passionvirus 1:df4118878dc4 48
jksoft 0:425791fe4b42 49
jksoft 0:425791fe4b42 50 // Direct control mode
jksoft 0:425791fe4b42 51 int DirectMode( Wiimote* wii, int stat )
jksoft 0:425791fe4b42 52 {
passionvirus 1:df4118878dc4 53 LLED=1;
passionvirus 1:df4118878dc4 54 RLED=1; // LED Init
passionvirus 1:df4118878dc4 55
jksoft 0:425791fe4b42 56 int ret = stat;
jksoft 0:425791fe4b42 57
jksoft 0:425791fe4b42 58 if( wii->left )
jksoft 0:425791fe4b42 59 {
passionvirus 1:df4118878dc4 60 L_Motor.speed(-1.0);
passionvirus 1:df4118878dc4 61 R_Motor.speed(1.0);
passionvirus 1:df4118878dc4 62 LLED = 1; RLED = 0;
jksoft 0:425791fe4b42 63 }
jksoft 0:425791fe4b42 64 else if( wii->right )
jksoft 0:425791fe4b42 65 {
passionvirus 1:df4118878dc4 66 L_Motor.speed(1.0);
passionvirus 1:df4118878dc4 67 R_Motor.speed(-1.0);
passionvirus 1:df4118878dc4 68 LLED = 0; RLED = 1;
jksoft 0:425791fe4b42 69 }
jksoft 0:425791fe4b42 70 else if( wii->up )
jksoft 0:425791fe4b42 71 {
passionvirus 1:df4118878dc4 72 L_Motor.speed(1.0);
passionvirus 1:df4118878dc4 73 R_Motor.speed(1.0);
passionvirus 1:df4118878dc4 74 LLED = 1; RLED = 1;
jksoft 0:425791fe4b42 75 }
jksoft 0:425791fe4b42 76 else if( wii->down )
jksoft 0:425791fe4b42 77 {
passionvirus 1:df4118878dc4 78 L_Motor.speed(-1.0);
passionvirus 1:df4118878dc4 79 R_Motor.speed(-1.0);
passionvirus 1:df4118878dc4 80 LLED = 0; RLED = 0;
jksoft 0:425791fe4b42 81 }
jksoft 0:425791fe4b42 82 else
jksoft 0:425791fe4b42 83 {
passionvirus 1:df4118878dc4 84 L_Motor.stop(0);
passionvirus 1:df4118878dc4 85 R_Motor.stop(0);
jksoft 0:425791fe4b42 86 }
jksoft 0:425791fe4b42 87
jksoft 0:425791fe4b42 88 float factor = wii->wheel / 150.0f;
jksoft 0:425791fe4b42 89
jksoft 0:425791fe4b42 90 float left_factor = (factor >= 0.0) ? 1.0 : 1.0 - (-factor);
jksoft 0:425791fe4b42 91 float right_factor = (factor <= 0.0) ? 1.0 : 1.0 - factor;
jksoft 0:425791fe4b42 92
jksoft 0:425791fe4b42 93 if( wii->one )
jksoft 0:425791fe4b42 94 {
passionvirus 1:df4118878dc4 95 L_Motor.speed(left_factor);
passionvirus 1:df4118878dc4 96 R_Motor.speed(right_factor);
jksoft 0:425791fe4b42 97 }
jksoft 0:425791fe4b42 98 if( wii->two )
jksoft 0:425791fe4b42 99 {
passionvirus 1:df4118878dc4 100 L_Motor.speed(-right_factor);
passionvirus 1:df4118878dc4 101 R_Motor.speed(-left_factor);
jksoft 0:425791fe4b42 102 }
jksoft 0:425791fe4b42 103
jksoft 0:425791fe4b42 104 return(ret);
jksoft 0:425791fe4b42 105 }
jksoft 0:425791fe4b42 106
jksoft 0:425791fe4b42 107 // Processing when receiving it from Wiiremote
jksoft 0:425791fe4b42 108 int wall_bot_remote(char *c,int stat)
jksoft 0:425791fe4b42 109 {
jksoft 0:425791fe4b42 110 Wiimote wii;
jksoft 0:425791fe4b42 111 int ret = stat;
jksoft 0:425791fe4b42 112
jksoft 0:425791fe4b42 113 wii.decode(c);
jksoft 0:425791fe4b42 114
jksoft 0:425791fe4b42 115 ret = DirectMode( &wii ,ret );
jksoft 0:425791fe4b42 116
jksoft 0:425791fe4b42 117 return(ret);
jksoft 0:425791fe4b42 118 }
jksoft 0:425791fe4b42 119
jksoft 0:425791fe4b42 120 int GetConsoleChar()
jksoft 0:425791fe4b42 121 {
jksoft 0:425791fe4b42 122 return(0);
jksoft 0:425791fe4b42 123 }
jksoft 0:425791fe4b42 124
jksoft 0:425791fe4b42 125 int OnDiskInsert(int device)
jksoft 0:425791fe4b42 126 {
jksoft 0:425791fe4b42 127 return(0);
jksoft 0:425791fe4b42 128 }
jksoft 0:425791fe4b42 129
jksoft 0:425791fe4b42 130 int main()
jksoft 0:425791fe4b42 131 {
jksoft 0:425791fe4b42 132 // USB Init is done for Bluetooth
jksoft 0:425791fe4b42 133 USBInit();
jksoft 0:425791fe4b42 134
jksoft 0:425791fe4b42 135 while(1)
jksoft 0:425791fe4b42 136 {
jksoft 0:425791fe4b42 137 // USB Processing is done for Bluetooth
jksoft 0:425791fe4b42 138 USBLoop();
jksoft 0:425791fe4b42 139 }
jksoft 0:425791fe4b42 140 }