検索:
ペットにタイマーで餌をあげるフィーダーを自作してみた

日帰り旅行で帰りが遅くなる時など「ペットの餌やりをどうしよう?」ってなりますよね。

そんな時に役に立つ、タイマーでペットに自動で餌をあげる「餌自動フィーダー」を自作してみました。夏休みの自由研究などにもおススメです。

完成イメージ図

用意するもの

制御基板Arduino UNO
モータドライバSU-1201(株式会社イーケイジャパン)
モータMG-12V-1:380(Olimex LTD)

シャッタ制御部をつくる

まずは一番重要なシャッタをタイマーで開閉する制御部分を作ります

モータドライバ(SU-1201)
制御基板(Arduino UNO)

モータ

https://www.digikey.jp/ja/products/detail/olimex-ltd/MG-12V-1-380/21662184

まずはじめに制御基板とモータドライバをドッキングします。

・ArduinoのDIGITAL 0番ピンとモータドライバ基板のJ2-0 番ピンの位置
・ArduinoのANALOG A5番ピンとモータドライバ基板のJ4-A5 番ピンの位置
が合うようにして、しっかりと奥まで差し込みます。

プログラミングをするための、Arduinoの開発環境「Arduino SDK」をインストールします。
参考サイト:https://www.kkaneko.jp/tools/win/arduinoide.html

COMポートの指定

Arduino SDKを立ち上げて、COMポートを指定します。
ArduinoとPCをUSBケーブルで接続すると、該当するCOMポート番号に(Arduino UNO)が表示されるので、それを選択します。

Arduinoタイプの指定

ArduinoのタイプをTools -> Boad: > ●Arduino AVR Boards > から、「Arduino UNO」を選択してください

サンプルプログラムの実行

以下のサンプルコードを実行し、開発環境が構築できていることを確認します

void setup() {
  // put your setup code here, to run once:
  pinMode(8, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop() 
{
  // put your main code here, to run repeatedly:
  digitalWrite(8, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(8, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
}

Upload(右矢印マーク)ボタンを押して、プログラムを転送・実行します。

モータドライバ基板の2つのLEDが赤く1秒ずつ交互に点灯したらOKです。

実際にモータを動かしてみる

下記のコードを入力すると、モータが正転(1秒)⇒停止(1秒)⇒逆転(1秒)⇒停止(1秒)と動作します。

void setup() {
  // put your setup code here, to run once:
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() 
{
  // put your main code here, to run repeatedly:
  analogWrite(9, 160); //回転スピードの設定
  digitalWrite(4, LOW); //回転方向の設定
  digitalWrite(5, HIGH);
  delay(1000);

  analogWrite(9, 0); //回転スピードの設定
  delay(1000);

  analogWrite(9, 160); //回転スピードの設定
  digitalWrite(4, HIGH); //回転方向の設定
  digitalWrite(5, LOW);
  delay(1000);

  analogWrite(9, 0); //回転スピードの設定
  delay(1000);
}

次にタイマーを入れます

  analogWrite(9, 0); //回転スピードの設定
  delay(3600000); //設定したいタイマー値 [ms]

このコードを14行目の前に入れれば、タイマーが作動します。delayの()に入る数字がミリ秒単位のタイマー値なので、目的に合わせて数値を入れてください。

1時間なら、60×60×1,000で3,600,000となります。

装置を作る

百均で以下の材料を購入

段ボールなどで各パーツを作り、組み立て

・土台(フレーム)は、百均で購入した木を木工用ボンドで接着

・餌を入れるホッパは、トイレットペーパーの芯がぴったりだったので、それを段ボールにはめて使用

・滑り台の部分はプラダンを折り曲げて固定して使用

完成した装置の外観

お宝ホリダー

今回はお宝ホリダーの作成方法をご紹介します。

参考書籍「Scratchでゲームをつくって楽しく学ぼう」(技術評論社)

①ステージにコードを書きます

「ゲーム準備」「ゲームスタート」「ゲームクリア」等のメッセージや、「スコア」「ハイスコア」「パネル番号」などの変数を作成しながらコーディングしてください。

②パネルにコードを書きます

リスト「てもちのパネル」を作成してください

変数「i」も作成してください

続けて下記をコーディングします

ここまでできたら「ゲーム準備を受け取ったとき」の部分をクリックしてみてください。

このとき、画面に1~25のブロックがランダムに配置されれば、正しくコーディングできています。

効果音

続けて効果音の部分をコーディングします

正解ブロックを押したら「pop」音が鳴り、ブロックが消えるようになります。

不正解のブロックを押したら、「boing」音が鳴り、ブロックは消えません。

テロップ

文字のスプライトに以下のコードを書きます

ゲームクリア時の処理

背景に下記のコードを追加

お宝ゲージを追加

お宝ゲージに下記のコードを追加します。

「お宝ゲージ」変数も追加してください

素早くパネルを消せたらゲージが増えるようにする

変数に「まえの時間」を追加して、ステージにあるコードに画像にあるコードを追加します。

「まえの時間」1つ前のパネルをクリックした時刻を記憶するための変数です。

次に「パネル」のコードに以下を追加します。

前のパネルを消してから次のパネルを消すまで、1秒未満でできればパネルゲージを1つずつ増やします。

またクリックされるたびにまえの時間をタイマー値にリセットします。

ゲージに合わせてお宝を表示する

現在はランダムで表示を切り替えているので、これをお宝ゲージに合わせて変えるように変更します

以下のように条件に合わせて変更するようにします

ホリダくんを動かす

ホリダ君を動かしてみましょう

速く消せたときの音を変える

ネプリーグみたいなクイズをScrachで作る①

ネプリーグみたいな漢字の読み方を当てるクイズをScrachで作る方法を紹介します。

正解のリストを作る

「変数」タブの「リストを作る」をクリックして、リストを作ります

左下の「+」ボタンを押して、問題の答え(この場合は漢字の読み方)のリストを作ります。

ネコのスプライトのコードに下記を入力します。

出題する漢字を作る

漢字用のスプライトを作成し、コスチュームを問題分だけ追加して作成します。

漢字用のスプライトに下記のコードを入力します

音楽も入れてみます。

好きなBGMをフリー素材でダウンロードして、それがランダムで流れるようにします。

ネコのスプライトのコードに得点の加算を追加します

Scrachでブロック崩しゲームを作る②

前回に引き続き、Scrachでブロック崩しゲームを作る方法を紹介します。

今回は、新しい種類のブロック(跳ね返らないブロック・2回当てないと壊れないブロック)の作り方を紹介します。

1.通過するブロック

Button3を選択して右クリックして「複製」を選択します。

新しく複製されたButtonのスプライトコードから「ブロック接触を送る」を削除します。

これで透過するブロックは完成です。

ただ、このままでは複製する前のブロックと同じ場所に表示されてしまい、どちらかが見えなくなってしまうので、表示する場所をずらします。

ずらしたいButtonスプライトの位置を定義している箇所を直せば、場所を変更できます。

↑こちらは高さ方向(y座標)の位置を変更する時に変える場所です。

2.二回当てないと消えないブロック

先ほどと同じように、Button3を複製して新たなブロックを作ります。

コスチュームを追加して

コスチューム1:最初の状態

コスチューム2:一回当たった状態

の見た目を作ります。

そして、ブロックを消している条件のところに「もし・でなければ」を追加し、

・コスチューム番号が1なら:次のコスチュームにする

・でなければ(つまりコスチューム番号が2なら):このクローンを削除する

を追加します。

これで2回当てないと消せないブロックを追加できます。

透過ブロックと同じように、このブロックを配置する座標も普通のブロックとずらせば完成です。

Scrachでブロック崩しゲームを作る①

今回は、Scrachで↑このようなブロック崩しゲームの作り方を紹介します。

スプライトには「Paddle」「Ball」「Button3」の3つを使います。

1.受け皿(Paddle)の操作部分の作成

最初に受け皿をキー操作で動かす部分を作ります。
「Paddle」のスプライトを選択し、以下のコードを作ります。

こうすると、左右キーで受け皿を動かせるようになります。

また、ボールと接触した時に「メッセージ1」を送るようにしています。

2. ボールの制御

次にボールを動かすところを作ります。

まずは音を選びます。

「音」タブの画面の左下の「+」マークを押して、好きな音を追加します。

以下の時に鳴らす音を、自由に選んでみてください。

 ① ボールが受け皿に当たって跳ね返るとき

 ② ボールがブロックに当たってブロックが壊れるとき

 ③ ボールが落ちてゲームオーバーになったとき

ここでは、①「Wobble」、②「Suction Cup」③「Alien Creak2」としてみました。

「Ball」のスプライトに以下のコードを作ります。

・ボールの落下とゲームオーバーの処理

・ボールが受け皿に当たったときの処理

・ボールとブロックが接触した時の処理

※ イベントの「新しいメッセージ」から「ブロック接触」というメッセージを追加しました

3. ブロックの処理

「Button3」のスプライトに以下のコードを追加します

・ブロックの配置処理

・ブロックの接触(消去)処理

以上で以下のような、ブロック崩しゲームの完成です。

ぜひ改良して、自分だけのオリジナルステージなど作ってみてください!