MOZI が 2021年02月27日07時27分51秒 に編集
コメント無し
本文の変更
初めに ==== 皆さんこんにちは!MOZI電子工作です! バーサライトを作成したのでそのことについて書きたいと思います! 急にelchikaに書いた理由 ==== 突然ですが、このelchikaというところに書くのはなぜか。 一つの大きな原因は、ブログのサーバーが(フリーのサーバーを使っているのですが)少し動きが怪しくて、バックアップが取れないだとか、自サイトのリンクが機能しないだとかいろいろ起こっているのでこのelchikaに移行しようとしている、という理由。 それともう一つは、「ハードウェア作品投稿キャンペーン」というキャンペーンをやってるという理由。そのキャンペーンが投稿するたびにプレゼントがもらえるという超太っ腹なものでマジでやばいのです(語彙力)。もれなく全員に賞品がもらえるとは書いてあるのですが、いまだに私は信じられていません。マジで?破産するぞと思ってます(笑)。 これとほぼ同じ内容の記事がMOZI電子工作ブログというブログにありますが、少し時間がたったので文章の見直しをかけ、少ない語彙力で再編集しています。 バーサライトの構想 ==== まずバーサライトとは何なのか。 冒頭から、バーサライタ、バーサライト(以下バーサライト)と連呼していますがバーサライトって何ぞや?? と思っている方も多と思います。 バーサライトというのはLEDなどを一列に並べてそれを回転させ絵や文字などを表すという人間の残像を使ったものです。  例えばこれ(上の写真) このように絵や文字を表示することができるものなのですが、これ実は一本のLEDを高速回転することで表示しています(下の写真参考)。(なんかかっこいい!そう思った私はこれを作ると決意します。)  この時、なんかこんなものがあるんだ、おもしろそうだなと思ってすぐに部品を集めて作り始めます。(この時は構造をどうすればいいとかいう先人たちのブログなどは全く見ずにです。無計画すぎる。) 材料 ==== 材料がこんな感じ↓ ・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って表示したかったけど、文字数的にできなかったので許してください。次作るときは何とかします。) ```arduino:バーサライタで「STAYイエ」と表示するスケッチ #include <misakiUTF16.h> 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); } } ``` なかなかめんどくさいやり方をしていますが、許してください!
あと、動作保証はしません。コンパイルさえ通らないかも。
完成! ==== 完成しました! 一発で難なく動いてくれて、以外と見た目もいいです(裏は...)。 ですが、作ってから気づいたのですが、重心が中心になっていないというのと、縦向きにしたというのが相まって振動がすごいことになりました。 動画では必死で手で押さえているのですが、押さえていないと飛んでいきそうな勢いだったので次作るときは重心には気を付けないといけないと思いました。   @[youtube](https://youtu.be/c-VsfgpaHrg) 最後に ==== いかがだったでしょうか今回はバーサライトを作る過程等を紹介しました。 次回は電池が弱くなるとモーターの回転が遅くなり見えなくなるので、通過型のフォトインタラプタかホールセンサをつかって回転数を把握できるようにしたいと思います。 そして、今回からは使った部品をAkiCartを使って公開することにしました。 最後まで読んでいただきありがとうございました。 ↓akicart http://aki.prioris.jp/list/07083454-53f4-479f-994c-e77c86675e91/