MOZIのアイコン画像
MOZI 2021年01月15日作成 (2021年12月07日更新) © MIT
製作品 製作品 閲覧数 28716
MOZI 2021年01月15日作成 (2021年12月07日更新) © MIT 製作品 製作品 閲覧数 28716

【綺麗】Arduinoでバーサライタ(バーサライト)を作ってみた!

【綺麗】Arduinoでバーサライタ(バーサライト)を作ってみた!

初めに

皆さんこんにちは!MOZI電子工作です!
バーサライトを作成したのでそのことについて書きたいと思います!

急にelchikaに書いた理由

突然ですが、このelchikaというところに書くのはなぜか。
一つの大きな原因は、ブログのサーバーが(フリーのサーバーを使っているのですが)少し動きが怪しくて、バックアップが取れないだとか、自サイトのリンクが機能しないだとかいろいろ起こっているのでこのelchikaに移行しようとしている、という理由。
それともう一つは、「ハードウェア作品投稿キャンペーン」というキャンペーンをやってるという理由。そのキャンペーンが投稿するたびにプレゼントがもらえるという超太っ腹なものでマジでやばいのです(語彙力)。もれなく全員に賞品がもらえるとは書いてあるのですが、いまだに私は信じられていません。マジで?破産するぞと思ってます(笑)。

これとほぼ同じ内容の記事がMOZI電子工作ブログというブログにありますが、少し時間がたったので文章の見直しをかけ、少ない語彙力で再編集しています。

バーサライトの構想

まずバーサライトとは何なのか。
冒頭から、バーサライタ、バーサライト(以下バーサライト)と連呼していますがバーサライトって何ぞや??
と思っている方も多と思います。
バーサライトというのはLEDなどを一列に並べてそれを回転させ絵や文字などを表すという人間の残像を使ったものです。

http://www.ze.em-net.ne.jp/~kenken/versawriter/index.htmlから引用
例えばこれ(上の写真)
このように絵や文字を表示することができるものなのですが、これ実は一本のLEDを高速回転することで表示しています(下の写真参考)。(なんかかっこいい!そう思った私はこれを作ると決意します。)
http://www.ze.em-net.ne.jp/~kenken/versawriter/index.htmlから引用
この時、なんかこんなものがあるんだ、おもしろそうだなと思ってすぐに部品を集めて作り始めます。(この時は構造をどうすればいいとかいう先人たちのブログなどは全く見ずにです。無計画すぎる。)

材料

材料がこんな感じ↓
・Arduino nano
 PICとか使えればよかったんだけどプログラミングが全く理解できない(PICKit4買ったのにもったいない)ので慣れているArduino使いました。
・赤色のLED(3mm)×8
 8個にしたのはarduinoで使えるドットフォントというものを先人が作っておられた方がいて、そのフォントを使う関係で8個にしました。
・LED用の抵抗器
 抵抗も8個用意
・その他
 基板とかネジとかモーターとか土台とか色々

回路

回路自体はシンプルです。ですが、回転するのでマイコンや電池をすべて回転部に納めないといけません。スワップリングという回転部に電源を供給するものもあるのですが、値段が高いです。またワイヤレス給電でもいいのですが回転で使用している例が見つからないので不安定になる可能性があったので電池を内部に仕込んで無難な構造にしました。電池はできるだけ軽くしてモーターへの負荷を軽くするために単5電池を使用しています。ですが、モーターのトルクが大きいようであれば単4電池でも十分動作すると思います。一本で昇圧して5Vにして使用しています。

マイコンはできるだけ軽くしたかったのでPICマイコンを使いたかったのですが、まだプログラムが書けませんでしたので慣れているArduinoNanoを使っています。

回路は以下の感じです。(ブレッドボードのほうLEDの抵抗を忘れていました。)

回路図

ブレッドボード図

図の中にある78xxlは秋月電子のこの昇圧モジュールです。http://akizukidenshi.com/catalog/g/gK-13065/
(このモジュールは値は張りますが、便利なので一個はもっておくと便利です。)

あと、これを2つのユニバーサル基板に分けて実装しました。そして3Dプリンターで作ったお手製の取り付け具に基板と「FA-130RA」という小型マブチモータを取り付けました。

モーターを単3電池2本で動かします。トグルスイッチもつけておきました。

モーターはモーターについてきた金具を使って木で作った台に取り付けしました。

プログラム

ArduinoNanoのプログラムです

今回はフォントをを使ってすぐに変更できるようにしたかったので、Arduino用の美咲フォントというドットフォントを無料で配布している「猫にコ・ン・バ・ン・ハ」さんのライブラリを使いました。
↓「猫にコ・ン・バ・ン・ハ」さんのライブラリ
http://nuneno.cocolog-nifty.com/blog/2019/01/arduino-f426.html

そしてプログラムですがこちらになります。
調整するような回転数をカウントするようなものは技術的にできなかったので、delayでごり押ししました。モーターの回転の回転数的にdelay(1)ぐらいがちょうどよかったです。(モーターにもよりますが)そして文字数は7文字がちょうどよかったです。前にもツイートしましたが、ここでは「STAYイエ」と表示しています。(STAYHOMEって表示したかったけど、文字数的にできなかったので許してください。次作るときは何とかします。)

バーサライタで「STAYイエ」と表示するスケッチ

#include <misakiUTF16.h> const int LED_pin[7] = {2,3,4,5,6,7,8}; char font[8]; // フォント格納バッファ char fon; void setup() { Serial.begin(115200); for(int i=0;i<7;i++){ pinMode(LED_pin[i],OUTPUT); } } void loop() { getFontData(font, "S"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, "T"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, "A"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, "Y"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, "イ"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, "エ"); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } getFontData(font, " "); // フォントを取得 for (uint8_t col=0; col<8; col++) { for (uint8_t row=0; row<8; row++) { fon = (0x80>>col) & font[row] ? '1':'0'; if( fon == '1'){ digitalWrite(LED_pin[row],HIGH); }else{ digitalWrite(LED_pin[row],LOW); } } delay(1); } }

なかなかめんどくさいやり方をしていますが、許してください!

完成!

完成しました!
一発で難なく動いてくれて、以外と見た目もいいです(裏は...)。
ですが、作ってから気づいたのですが、重心が中心になっていないというのと、縦向きにしたというのが相まって振動がすごいことになりました。
動画では必死で手で押さえているのですが、押さえていないと飛んでいきそうな勢いだったので次作るときは重心には気を付けないといけないと思いました。

キャプションを入力できます

キャプションを入力できます

ここに動画が表示されます

最後に

いかがだったでしょうか今回はバーサライトを作る過程等を紹介しました。

次回は電池が弱くなるとモーターの回転が遅くなり見えなくなるので、通過型のフォトインタラプタかホールセンサをつかって回転数を把握できるようにしたいと思います。

そして、今回からは使った部品をAkiCartを使って公開することにしました。

最後まで読んでいただきありがとうございました。

↓akicart
http://aki.prioris.jp/list/07083454-53f4-479f-994c-e77c86675e91/

MOZIのアイコン画像
電子工作してます。 主にArduinoやRaspberry piや3Dプリンターなどでいろいろ作ってます。 いろいろ書いていく予定です。よろしくお願いします!
  • MOZI さんが 2021/01/15 に 編集 をしました。 (メッセージ: 初版)
  • MOZI さんが 2021/01/15 に 編集 をしました。 (メッセージ: タイトルを修正。画像の修正。)
  • MOZI さんが 2021/01/15 に 編集 をしました。
  • MOZI さんが 2021/01/15 に 編集 をしました。
  • MOZI さんが 2021/01/15 に 編集 をしました。
  • Opening
    3duilabのアイコン画像 3duilab 2021/01/16

    バランスを取るためバーを入れるといいと思います。LEDを追加すればなお良し😄

    MOZIのアイコン画像 MOZI 2021/01/26

    いま、新しいのを作り直しているのですが、そこではそうしようと思ってます!

    1 件の返信が折りたたまれています
  • MOZI さんが 2021/02/27 に 編集 をしました。
  • MOZI さんが 2021/02/27 に 編集 をしました。
  • Opening
    KUROROのアイコン画像 KURORO 2021/09/10

    私は今、高校生です。
    私の高校では課題研究といって何か作品を作らないといけません。
    そこでこのバーサライタを作ろうとしているのですが、ブレッドボード図の抵抗を表示されていなかったり、組立ての方法などが全然わからないので、もしよろしければ記入をお願いしてもよろしいでしょうか。
    下手な文章ですみません。お願いします。

    0 件の返信が折りたたまれています
  • MOZI さんが 2021/12/07 に 編集 をしました。 (メッセージ: 記事の種類・ライセンスを設定しました。)
ログインしてコメントを投稿する