RCサーボで動かすモグラたたきゲームの7台版を製作中
RCサーボで動かすモグラたたきゲームの7台版をRaspberry Pi Pico を使って製作中です。Seeeduino XIAO で3台版のプロトタイプは作っているので,コントロールするサーボを増やし,プログラムをPico用に少し変更しただけです(^^;;;;;。せっかくPin数の多いPicoを使っているので,できるだけ部品点数を少なくしようと直結しました。さすがに7台をつなぐと配線が混雑します(^^)。動作確認はOKでしたので,一安心です。今の状態でもI2CやUARTのPinなどは十分確保できているので,表示やケースの制作にかかれますね(^^)。arduino/picoでは特にサーボに指定Pinはなく,最大8台まではコントロールできます。ただデフォオルトでは動作角度が小さいのでArduino標準値に設定して使っています。3台版からPicoの7台版用に変更したサーボ関係の設定部分です。もっとスマートな書き方があるのでしょうが,,ベタに設定してcase文で呼び出しています。/* Pico mogura test1 Servo Pin 6,7,8,9,10,11,12; LED Pin 13 Hit switch Pin 14,15,16,17,18,19,20 Start Pin 21; Sound Pin 22*/#include <Servo.h>#define servo_Max 7Servo myservo0;Servo myservo1;Servo myservo2;Servo myservo3;Servo myservo4;Servo myservo5;Servo myservo6;const int L_Pos=65; // default servo positionconst int M_Pos=95;const int H_Pos=125;void set_allservo(int ang){ for (int i=0; i < servo_Max; i++){ set_1servo(i, ang); }}void set_1servo(int svn, int ang){ switch (svn) { case 0: myservo0.write(ang); break; case 1: myservo1.write(ang); break; case 2: myservo2.write(ang); break; case 3: myservo3.write(ang); break; case 4: myservo4.write(ang); break; case 5: myservo5.write(ang); break; case 6: myservo6.write(ang); }}const int game_loop=30; // Init. game_basic_val int hit_Max=0;#define sePin 22void setup() { myservo0.attach(6,544,2400); // Servo Pin 6,7,8,9,10,11,12 myservo1.attach(7,544,2400); myservo2.attach(8,544,2400); myservo3.attach(9,544,2400); myservo4.attach(10,544,2400); myservo5.attach(11,544,2400); myservo6.attach(12,544,2400); set_allservo(L_Pos); for (byte i=14; i<21; i++){ //hit_switch: Pin 14,15,16,17,18,19,20 pinMode(i, INPUT); } pinMode(13, OUTPUT); // LED: Pin13 digitalWrite(13, LOW); pinMode(21, INPUT); // start_button: Pin 21 Serial.begin(9600); // Use UART} arduino/picoのサーボライブラリではPIO(Programmable I/O)を使っているので8台までという制限がありますが,動かしてみるとサーボはカチャつきなどなくスムースに動作しますね。また3台版と同様にフェイク動作を入れています。7台になるとさすがに騙されやすくなります。ゲームのプログラムはスピードや音の変化など,いろいろと考えられて楽しいのでぼちぼちとやっていきましょう(^^)。