qiita.rb
#include <SwitchControlLibrary.h>
int MAXMONTH = 11; //月最大値(1月から11回更新で12月となるため)
int MAXDAY = 27; //日最大値(1日から27回更新で28日となるため)
// ※このプログラムでは、ひと月を27日とみなす(ひと月の最短日数が28日のため)
int month = MAXMONTH; // 月
int day = MAXDAY; // 日
// 初期処理 マイコン接続後1番に動きます
void setup(){
// LRボタン押下でコントローラーとして認識させる ←初期処理単体だとなぜかうまくいかない
SwitchControlLibrary().PressButtonL();
delay(500);
SwitchControlLibrary().PressButtonR();
delay(500);
SwitchControlLibrary().ReleaseButtonL();
delay(500);
SwitchControlLibrary().ReleaseButtonR();
delay(500);
}
// 繰り返し処理 マイコンの接続をやめるまで{}内を繰り返します
void loop() {
// LRボタン押下でコントローラーとして認識させる ←ここ単体でもなぜかうまくいかない
SwitchControlLibrary().PressButtonL();
delay(50);
SwitchControlLibrary().PressButtonR();
delay(50);
SwitchControlLibrary().ReleaseButtonL();
delay(50);
SwitchControlLibrary().ReleaseButtonR();
delay(50);
// 開始 みんなで挑戦の直前から。
ButtonA();
delay(3000);
// 募集開始
ButtonHome();
delay(1000);
MoveHatDown();
delay(100);
MoveHatRight();
delay(100);
MoveHatRight();
delay(100);
MoveHatRight();
delay(100);
MoveHatRight();
delay(100);
ButtonA();
delay(1500);
// 設定画面
SwitchControlLibrary().MoveHat(4); // down
delay(2000);
SwitchControlLibrary().MoveHat(8); // center
delay(50);
MoveHatRight();
delay(50);
MoveHatDown();
delay(50);
MoveHatDown();
delay(50);
MoveHatDown();
delay(50);
MoveHatDown();
delay(50);
ButtonA();
delay(500);
// 時間設定
MoveHatDown();
delay(50);
MoveHatDown();
delay(50);
ButtonA();
delay(500);
// 時間の変更
// 年の処理 日を27回変更し、月を11回変更していたら
if (month == 0 & day == 0) {
MoveHatUp(); // 年を変更
delay(200);
MoveHatRight(); // 月の項目へ移動
delay(50);
MoveHatUp(); // 月を変更
delay(200);
month = MAXMONTH;// 月をリセット
MoveHatRight(); // 日の項目へ移動
delay(50);
DayReset(); // 日をリセット
delay(200);
}else{
// 月の処理 日を27回変更したいたら
if (day == 0) {
MoveHatRight(); // 月の項目へ移動
delay(50);
MoveHatUp(); // 月を変更
delay(200);
MoveHatRight(); // 日の項目へ移動
delay(50);
DayReset(); // 日をリセット
delay(200);
--month; // 月をカウントダウン
}else{
// 日の処理 日を27回変更していないなら
MoveHatRight(); // 月の項目へ移動
delay(50);
MoveHatRight(); // 日の項目へ移動
delay(50);
MoveHatUp(); // 日を変更
delay(200);
--day; // 日をカウントダウン
}
}
ButtonA();
delay(50);
ButtonA();
delay(50);
ButtonA();
delay(50);
ButtonA();
delay(100);
ButtonHome();
delay(1000);
ButtonA();
delay(1000);
MoveHatDown(); // やめる
delay(500);
ButtonA(); // はい
delay(2000);
ButtonA();
delay(4000);
ButtonA();
delay(2000);
ButtonA();
delay(1000);
ButtonA();
delay(1000);
}
//Aボタンを押下して離すまで
void ButtonA(){
SwitchControlLibrary().PressButtonA();
delay(50);
SwitchControlLibrary().ReleaseButtonA();
}
//ホームボタンを押下して離すまで
void ButtonHome(){
SwitchControlLibrary().PressButtonHome();
delay(50);
SwitchControlLibrary().ReleaseButtonHome();
}
//下を入力して離すまで
void MoveHatDown(){
SwitchControlLibrary().MoveHat(4); // down
delay(50);
SwitchControlLibrary().MoveHat(8); // center
}
//右を入力して離すまで
void MoveHatRight(){
SwitchControlLibrary().MoveHat(2); // right
delay(50);
SwitchControlLibrary().MoveHat(8); // center
}
//上を入力して離すまで
void MoveHatUp(){
SwitchControlLibrary().MoveHat(0); // up
delay(50);
SwitchControlLibrary().MoveHat(8); // center
}
//日をリセット
void DayReset(){
for (day ; day < MAXDAY ; day++){
MoveHatDown();
delay(50);
}
}