This commit is contained in:
Nebel 2012-08-30 09:06:11 +09:00
parent 2ce392f6f2
commit 7c24307b16

View file

@ -32,7 +32,7 @@ void setup(){
digitalWrite(PIN_PWR, HIGH); digitalWrite(PIN_PWR, HIGH);
digitalWrite(PIN_GND, LOW); digitalWrite(PIN_GND, LOW);
delay(100); delay(100);
Serial.begin(19200); // Serial.begin(19200);
wiiNun.begin(); wiiNun.begin();
base.attach(PIN_SERVO_BASE); base.attach(PIN_SERVO_BASE);
catcher.attach(PIN_SERVO_CATCHER); catcher.attach(PIN_SERVO_CATCHER);
@ -42,6 +42,7 @@ void setup(){
} }
void loop(){ void loop(){
// ヌンチャクを読む
wiiNun.get(); wiiNun.get();
byte joyx = wiiNun.data[0]; byte joyx = wiiNun.data[0];
byte joyy = wiiNun.data[1]; byte joyy = wiiNun.data[1];
@ -50,36 +51,38 @@ void loop(){
byte accz = wiiNun.data[4]; byte accz = wiiNun.data[4];
byte zbut = ((~wiiNun.data[5] >> 0) & 1); byte zbut = ((~wiiNun.data[5] >> 0) & 1);
byte cbut = ((~wiiNun.data[5] >> 1) & 1); byte cbut = ((~wiiNun.data[5] >> 1) & 1);
if ((wiiNun.data[5] >> 2) & 1) accx += 2; if((wiiNun.data[5] >> 2) & 1) accx += 2;
if ((wiiNun.data[5] >> 3) & 1) accx += 1; if((wiiNun.data[5] >> 3) & 1) accx += 1;
if ((wiiNun.data[5] >> 4) & 1) accy += 2; if((wiiNun.data[5] >> 4) & 1) accy += 2;
if ((wiiNun.data[5] >> 5) & 1) accy += 1; if((wiiNun.data[5] >> 5) & 1) accy += 1;
if ((wiiNun.data[5] >> 6) & 1) accz += 2; if((wiiNun.data[5] >> 6) & 1) accz += 2;
if ((wiiNun.data[5] >> 7) & 1) accz += 1; if((wiiNun.data[5] >> 7) & 1) accz += 1;
// ヌンチャクおわり
char x = (char)(joyx-0x7F); char x = (char)(joyx-0x7F); // スティックの中心を0にする
char y = (char)(joyy-0x7F); char y = (char)(joyy-0x7F); // スティックの中心を0にする
// char ax = (char)(accx-0x7F); // char ax = (char)(accx-0x7F);
char ay = (char)(accy-0x7F); char ay = (char)(accy-0x7F); // 水平状態を0にする
digitalWrite(PIN_LED, LOW);
if(zbut){ // zボタン押しながら if(zbut){ // zボタン押しながら
digitalWrite(PIN_LED, HIGH); digitalWrite(PIN_LED, HIGH);
if(y>0x1F) baseDeg = 180 - atan2(y, x)*180/PI; // 台座をスティックの角度にする if(y>0x1F) baseDeg = 180 - atan2(y, x)*180/PI; // 台座をスティックの角度にする
if(baseDeg < 10) baseDeg = 10; if(baseDeg < 10) baseDeg = 10;
else if(baseDeg > 170) baseDeg = 170; else if(baseDeg > 170) baseDeg = 170;
}else{ }else{ // zボタン離すと
digitalWrite(PIN_LED, LOW);
horMotor.speed(y); horMotor.speed(y);
baseDeg += x/32; // 台座をxに応じて相対移動 baseDeg += x/32; // 台座をxに応じて相対移動
} }
if(ay > +0x10) verMotor.speed(+0xCC); if(0);
if(ay < -0x10) verMotor.speed(-0xCC); else if(ay > +0x20) verMotor.mode(GO);
if(ay > +0x20) verMotor.mode(GO); else if(ay > +0x10) verMotor.speed(+0xCC);
if(ay < -0x20) verMotor.mode(BACK); else if(ay < -0x10) verMotor.speed(-0xCC);
else if(ay < -0x20) verMotor.mode(BACK);
catcherDeg = 90; catcherDeg = 90;
if(cbut){ if(cbut){ // cボタン押すとキャッチャーを離す
catcherDeg = 15; catcherDeg = 15;
} }