/* //2021年ライブラリ #include //2022年ライブラリ #include */ //#include #include //上記どちらかのライブラリを用いる #include "Arduino.h" #include "Wire.h" #include #include const int DIN_PIN = 7; const int LED_PIN = 17; int GOAL = 0;//func2用 int box_count = 0;//func2用 int dipnum; int mode; int value1; int value2; int value3; int lateralcount = 0; // ディスプレイ変数の宣言 Adafruit_SSD1306 display(-1); // マイコンのセット時に1度だけ行われる処理 void setup(){ // pinMode( DIN_PIN, INPUT_PULLUP ); pinMode( 8, INPUT_PULLUP ); pinMode( 9, INPUT_PULLUP ); pinMode( 10, INPUT_PULLUP ); pinMode( 4, INPUT_PULLUP ); pinMode( 5, INPUT_PULLUP ); pinMode( 6, INPUT_PULLUP ); pinMode( 7, INPUT_PULLUP ); pinMode( 16, INPUT_PULLUP ); pinMode( 14, INPUT_PULLUP ); pinMode( 15, INPUT_PULLUP ); pinMode( LED_PIN, OUTPUT ); pinMode( 30, OUTPUT ); // ディスプレイの初期化 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // ディスプレイをクリア display.clearDisplay(); // 出力する文字の大きさ display.setTextSize(2); // 出力する文字の色 display.setTextColor(WHITE); // 文字の一番端の位置 display.setCursor(0, 0); // 出力する文字列 display.println("Mamami-Con"); display.setTextSize(1); display.println("Setting up ..."); display.println("Wait a sec."); // ディスプレイへの表示 display.display(); // Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく //delay(2500); pushButton(Button::B, 300, 12); //delay(2500); get_dip(); } // ここに記述した内容がループされ続ける void loop(){ value3 = digitalRead( 10 );//button3 value2 = digitalRead( 9 );//button2 value1 = digitalRead( 8 );//button1 get_dip(); get_mode(); digitalWrite( 30, HIGH ); digitalWrite( LED_PIN, HIGH ); // ディスプレイをクリア display.clearDisplay(); // 出力する文字の大きさ display.setTextSize(1); // 出力する文字の色 display.setTextColor(WHITE); // 文字の一番端の位置 display.setCursor(0, 0); // 出力する文字列 display.print("Mode:"); display.println(mode); display.print("Value:"); display.println(dipnum); display.println("OK Mami-Con is ready."); display.println("Push the button!!"); // ディスプレイへの表示 display.display(); ////////////////////////////////////////////////////////// if(value1 == LOW){//1押されたとき digitalWrite( LED_PIN, LOW ); digitalWrite( 30, LOW ); if(dipnum == 0){ test(); //ディップ0の特別ファンクション }else if(mode==0){//ファンクション1///// dispfunc(1); }else if(mode==1){//ファンクション4 dispfunc(4); }else if(mode==2){//ファンクション7///// dispfunc(7); while(1){ autoExp(); } }else if(mode==3){//ファンクション10///// dispfunc(10); for(int counti = 0; counti < dipnum; counti ++){ display.clearDisplay(); display.setCursor(0, 0); display.println("F10:GetEgg"); display.print(counti + 1); display.println("Times now"); display.println("To"); display.print(dipnum); display.println(" loop"); display.display(); getegg(); } } } ////////////////////////////////////////////////////////// if(value2 == LOW){//2押されたとき digitalWrite( LED_PIN, LOW ); digitalWrite( 30, LOW ); if(dipnum==0){// test2(); }else if(mode==0){//ファンクション2 dispfunc(2); }else if(mode==1){//ファンクション5 dispfunc(5); }else if(mode==2){//ファンクション8 dispfunc(8); while(1){ autoEve(); } }else if(mode==3){//ファンクション11 dispfunc(11); svhatchbox(); } } ////////////////////////////////////////////////////////// if(value3 == LOW){//3押されたとき digitalWrite( LED_PIN, LOW ); digitalWrite( 30, LOW ); if(dipnum == 0){//A連打 display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println("F0-3: RepeatA"); display.display(); while(1){ pushButton(Button::A, 500, 4); } }else if(mode==0){//ファンクション3 dispfunc(3); }else if(mode==1){//ファンクション6 dispfunc(6); }else if(mode==2){//ファンクション9 dispfunc(9); while(1){ autoRmdraid(); } }else if(mode==3){//ファンクション12 dispfunc(12); svopenbox(); svreleasebox(); } } } ////////////////////////////////////////////////////////// //Valueディップスイッチを取得する void get_dip(){ dipnum = 0; if(digitalRead( 4 ) == LOW){ dipnum = dipnum + 1; } if(digitalRead( 5 ) == LOW){ dipnum = dipnum + 2; } if(digitalRead( 6 ) == LOW){ dipnum = dipnum + 4; } if(digitalRead( 7 ) == LOW){ dipnum = dipnum + 8; } if(digitalRead( 14 ) == LOW){ dipnum = dipnum + 16; } } //modeディップスイッチを取得する void get_mode(){ mode = 0; if(digitalRead( 15 ) == LOW){ mode = mode + 1; } if(digitalRead( 16 ) == LOW){ mode = mode + 2; } } //ファンクションディスプレイ void dispfunc(int fnvl){ // ディスプレイをクリア display.clearDisplay(); // 出力する文字の大きさ display.setTextSize(1); // 出力する文字の色 display.setTextColor(WHITE); // 文字の一番端の位置 display.setCursor(0, 0); // 出力する文字列 display.print("Mode:"); display.println(mode); display.print("Value:"); display.println(dipnum); display.print("Func:"); display.print(fnvl); display.print(" started"); // ディスプレイへの表示 display.display(); } /////////////////////////////////////////F7SV自動金稼ぎ学園戦ループ void autoExp(){ pushButton(Button::B, 1800); pushButton(Button::A, 1800); pushButton(Button::A, 1800); pushButton(Button::A, 1800); } /////////////////////////////////////////F8SV自動レイド void autoEve(){ pushButton(Button::X, 1800); pushButton(Button::A, 1800); pushButton(Button::A, 1800); } /////////////////////////////////////////F9SV自動ランダムレイド void autoRmdraid(){ pushButton(Button::X, 2000); pushButton(Button::A, 9000); pushButton(Button::A, 9000); pushHatButton(Hat::LEFT, 500); pushHatButton(Hat::DOWN, 500); for(int loopi = 0; loopi < 400; loopi ++){ pushButton(Button::A, 1000); } } /////////////////////////////////svピクニック開いてジャムサンド作る void getegg(){ tiltJoystick(0, -100, 0, 0, 300);//上向くため pushButton(Button::X, 1800); //メニュー初期位置右上にする tiltJoystick(100, 0, 0, 0, 400);//右 tiltJoystick(0, -100, 0, 0, 2000);//上 //ピクニック開く pushHatButton(Hat::DOWN, 300, 2); pushButton(Button::A, 8000); //未来ドンしまう pushButton(Button::PLUS, 1500); //テーブルに向かう tiltJoystick(0, -100, 0, 0, 500);//上 //料理開いてジャムサンド選択まで pushButton(Button::A, 1000); delay(2000); pushButton(Button::A, 5000); delay(2000); pushHatButton(Hat::DOWN, 500,5); pushHatButton(Hat::RIGHT, 500); delay(100); pushButton(Button::A, 500); delay(1000); pushButton(Button::A, 8000); delay(1000); //ここから料理 tiltJoystick(0, -100, 0, 0, 650);//上 SwitchController().pressButton(Button::A); delay(500); tiltJoystick(0, 100, 0, 0, 630);//下 SwitchController().releaseButton(Button::A); delay(700); //具材二つ目 tiltJoystick(0, -100, 0, 0, 640);//上 SwitchController().pressButton(Button::A); delay(500); tiltJoystick(0, 100, 0, 0, 630);//下 tiltJoystick(100, 0, 0, 0, 180);//右 SwitchController().releaseButton(Button::A); delay(700); tiltJoystick(-100, 0, 0, 0, 180);//左 //具材三つ目 tiltJoystick(0, -100, 0, 0, 630);//上 SwitchController().pressButton(Button::A); delay(500); tiltJoystick(0, 100, 0, 0, 630);//下 tiltJoystick(-100, 0, 0, 0, 180);//左 SwitchController().releaseButton(Button::A); delay(700); //パンとピック delay(1500); tiltJoystick(100, 0, 0, 0, 180);//右 tiltJoystick(0, -100, 0, 0, 50);//上 pushButton(Button::A, 3500); pushButton(Button::A, 3000); //食べるところ delay(10000); pushButton(Button::A, 2000); delay(22000); pushButton(Button::A, 2000, 1); //バスケットまで tiltJoystick(100, 0, 0, 0, 300);//右 tiltJoystick(0, -100, 0, 0, 350);//上 tiltJoystick(-100, 0, 0, 0, 240);//左 delay(500); pushButton(Button::A, 1000); //5分おきに30分タマゴ受け取り for (int i = 0; i < 6; i ++){ pushButton(Button::B, 1000, 240); pushButton(Button::A, 1000, 60); } //ピクニック終了 pushButton(Button::B, 1000, 3); pushButton(Button::Y, 2000); pushButton(Button::A, 4000, 1); pushButton(Button::B, 1000, 3); } //////////////////////////////svopenbox void svopenbox(){ pushButton(Button::X, 1800); //メニュー初期位置右上にする tiltJoystick(100, 0, 0, 0, 400);//右 tiltJoystick(0, -100, 0, 0, 2000);//上 //box開く pushHatButton(Hat::DOWN, 300, 1); pushButton(Button::A, 5000); } //////////////////////////////svreopenbox二度目以降ボックス開く関数 void svreopenbox(){ delay(1000); pushButton(Button::X, 2500); //box開く pushButton(Button::A, 5000); } //////////////////////////////F12svリリースbox void svreleasebox(){ for(int counti = 0; counti < dipnum; counti ++){ for(int gyo = 0; gyo < 5; gyo ++){ for(int retsu = 0; retsu < 6; retsu ++){ //表示部 display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println("F12 ReleaseBox"); display.print("For:"); display.print(dipnum); display.println("Bx"); display.print(counti + 1); display.println("Box ,"); display.print(gyo * 6 + retsu + 1); display.println("Poke now."); display.display(); //逃がして右 pushButton(Button::A, 1000); /* pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); */ tiltJoystick(0, 100, 0, 0, 1500);//下 delay(500); pushHatButton(Hat::UP, 200, 1); //tiltJoystick(0, -100, 0, 0, 300);//上 delay(400); /* tiltJoystick(0, 100, 0, 0, 300);//下 tiltJoystick(0, 100, 0, 0, 300);//下 tiltJoystick(0, 100, 0, 0, 300);//下 tiltJoystick(0, 100, 0, 0, 300);//下 */ pushButton(Button::A, 1000, 1); delay(400); tiltJoystick(0, -100, 0, 0, 300);//上 delay(400); //pushHatButton(Hat::DOWN, 200, 1); pushButton(Button::A, 1300, 1); pushButton(Button::A, 500, 1); pushHatButton(Hat::RIGHT, 500); //tiltJoystick(100, 0, 0, 0, 300);//右 } pushHatButton(Hat::RIGHT, 200); delay(800); //tiltJoystick(100, 0, 0, 0, 300);//右 pushHatButton(Hat::DOWN, 200); //tiltJoystick(0, 100, 0, 0, 300);//下 delay(800); } pushButton(Button::R, 5000); pushHatButton(Hat::DOWN, 200, 1); delay(500); pushHatButton(Hat::DOWN, 200, 1); delay(500); //tiltJoystick(0, 100, 0, 0, 300);//下 //tiltJoystick(0, 100, 0, 0, 300);//下 } } ///////////////////////F11SVHatchBox void svhatchbox(){ //box開く svopenbox(); for(int counti = 0; counti < dipnum; counti ++){ for(int retsu = 0; retsu < 6; retsu ++){ //表示部 display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println("F11 HatchBox"); display.print("For:"); display.print(dipnum); display.println("Bx"); display.print(counti + 1); display.println("Box , "); display.print(retsu + 1); display.println(" Cols now."); display.display(); //ボックスひらく //svopenbox(); /* //今の列にふる for(int getretsu = 0; getretsu < retsu; getretsu ++){ pushHatButton(Hat::RIGHT, 400); } */ //まとめてつかむ pushButton(Button::MINUS, 400); /* tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 */ //pushHatButton(Hat::DOWN, 300, 4); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushButton(Button::A, 400, 1); delay(400); pushHatButton(Hat::LEFT, 200, 1); delay(400); //今の列分左にふる for(int getretsu = 0; getretsu < retsu; getretsu ++){ pushHatButton(Hat::LEFT, 200); //tiltJoystick(-100, 0, 0, 0, 200);//左 delay(400); } pushHatButton(Hat::DOWN, 200, 1); delay(400); //tiltJoystick(0, 100, 0, 0, 200);//下 pushButton(Button::A, 300, 1); delay(1000); //ボックス閉じる pushButton(Button::B, 3500, 2); //5匹孵化A1secおきに押しながら SwitchController().setStickTiltRatio(-100, 0, -100, 0); //走り回る時間、10000歩基準 pushButton(Button::A, 1000, 270); SwitchController().setStickTiltRatio(0, 0, 0, 0); delay(1000); //再度ボックスオープン svreopenbox(); //手持ち預ける pushHatButton(Hat::LEFT, 200); delay(400); //tiltJoystick(-100, 0, 0, 0, 200);//左 pushHatButton(Hat::DOWN, 200, 1); delay(400); //tiltJoystick(0, 100, 0, 0, 200);//下 //つかむ pushButton(Button::MINUS, 400); //pushHatButton(Hat::DOWN, 300, 4); /* tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 tiltJoystick(0, 100, 0, 0, 200);//下 */ pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushHatButton(Hat::DOWN, 200, 1); delay(400); pushButton(Button::A, 300, 1); delay(400); pushHatButton(Hat::UP, 300, 1); delay(400); //tiltJoystick(0, -100, 0, 0, 200);//上 pushHatButton(Hat::RIGHT, 200, 1); delay(400); //tiltJoystick(100, 0, 0, 0, 200);//右 //今の列分右にふる for(int getretsu = 0; getretsu < retsu; getretsu ++){ pushHatButton(Hat::RIGHT, 200); delay(400); //tiltJoystick(100, 0, 0, 0, 200);//右 } //おろす pushButton(Button::A, 300, 1); delay(1000); //次の列にカーソル持っていく pushHatButton(Hat::RIGHT, 200); delay(400); //tiltJoystick(100, 0, 0, 0, 200);//右 if(retsu == 5){ //次のボックスにうつる pushButton(Button::R, 3000); pushHatButton(Hat::RIGHT, 200); delay(400); //tiltJoystick(100, 0, 0, 0, 200);//右 } //ボックス閉じる //pushButton(Button::B, 3500, 2); } /* //次のボックスにうつる svopenbox(); pushButton(Button::R, 3000); pushButton(Button::B, 2700, 2); */ } } //////////////////////////////////////////////////////// void test(){ svopenbox(); pushHatButton(Hat::DOWN, 300, 1); pushButton(Button::A, 300, 1); pushHatButton(Hat::DOWN, 300, 1); for(int i = 0; i < 10000; i ++){ pushHatButton(Hat::DOWN, 300, 1); tiltJoystick(0, 100, 0, 0, 200);//下 delay(100); pushHatButton(Hat::UP, 300, 1); tiltJoystick(0, -100, 0, 0, 200);//上 delay(100); } //iltJoystick(-100, 0, -100, 0, 10000); } void test2(){ for(int i = 0; i < 10000; i ++){ pushHatButton(Hat::RIGHT, 300, 3); pushHatButton(Hat::LEFT, 300, 3); } //iltJoystick(-100, 0, -100, 0, 10000); }