12セグメント カナフォントをハード化する
写真で見ると文字が白とびしちゃうので露出補正で暗くしていますが、実際は明るい部屋でも綺麗に表示されます。
3ヶ月前ぐらいに見かけたとあるツイート
突然脳がなんかを受信して、こんな12セグメントのカタカナのフォントを思いつきました
— ByNEET (@ByNEET) 2019年1月7日
読めるか読めないかギリギリのライン。 pic.twitter.com/WN5AAEAu7z
やってみよう
回路図
当初、8ビットシフトレジスタ 74HC595 を2個使い、各セグメントを2個のLEDで点灯するよう回路図とアートワークを作ったのですが、どうせこれカラー表示したくなるよね、ということで WS2812B に変更。
基板1枚に WS2812B を24個(各セグメント2個×12セグメント)。数珠つなぎになった信号線の両端にコネクタを配置し、基板同士を連結できるようにします。
基板アートワーク
基板外形
基板が安く作れる最大寸法 100mm×100mm に収めます。
A面
B面
部品が15°単位で傾いているのでグリッドをかなり細かくしないと思い通りのところに置けません。
基板入荷
A面
B面
この12セグメントの表示形式に名前は付いていないようなので、基板名は SnowCrystal としました。
部品実装
スペーサー
各セグメントの形状を出すためのスリット兼LEDの光を均一にするスペーサーです。
高さは 10mm, 15mm, 20mm の3種類を試したところ、15mmが良さそうでした。
3Dプリンタで出力。基板に重ねてネジどめ。
Arduino で点灯させる
スケッチの一部
#define NUM_DIG 5 // 接続した文字数 #define NUM_SEG 12 // ディジットあたりのセグメント数 #define NUM_PPS 2 // 各セグメントに使用するWS2812Bの数 Pixels Per Segment #include <Adafruit_NeoPixel.h> Adafruit_NeoPixel pix = Adafruit_NeoPixel(NUM_PPS * NUM_SEG * NUM_DIG, PIN_PIX, NEO_GRB + NEO_KHZ800);
dig番の文字の seg番のセグメントを rgb色 にセット
void set_seg(uint8_t dig, uint8_t seg, uint32_t rgb) { for (uint8_t i = 0; i < NUM_PPS; i++) { pix.setPixelColor(NUM_PPS * NUM_SEG * dig + NUM_PPS * seg + i, rgb); } }
dig番の文字に patternの文字を rgb色 にセット
void set_dig(uint8_t dig, uint16_t pattern, uint32_t rgb) { for (uint8_t seg = 0; seg < NUM_SEG / 2; seg++) { set_seg(dig, seg, pattern >> (13 - seg) & 1 ? rgb : 0); } for (uint8_t seg = NUM_SEG / 2; seg < NUM_SEG; seg++) { set_seg(dig, seg, pattern >> (11 - seg) & 1 ? rgb : 0); } }
フォントを作る
const PROGMEM uint16_t font_map[256] = { 0, // 0 0, // 1 /* 中略 */ 0, // 46 0, // 47 B000111 << 8 | B100100, // 48 0 B000001 << 8 | B100100, // 49 1 B101101 << 8 | B010010, // 50 2 B101101 << 8 | B011000, // 51 3 B000010 << 8 | B100110, // 52 4 B101100 << 8 | B101000, // 53 5 B101111 << 8 | B001010, // 54 6 B000011 << 8 | B100100, // 55 7 B101101 << 8 | B011011, // 56 8 B111101 << 8 | B010001, // 57 9 /* 中略 */ 0, // 175 0, // 176 B100001 << 8 | B110100, // 177 ア B000000 << 8 | B010110, // 178 イ B011010 << 8 | B110001, // 179 ウ B001100 << 8 | B010101, // 180 エ B000000 << 8 | B110111, // 181 オ B010000 << 8 | B110110, // 182 カ B100001 << 8 | B101110, // 183 キ B100001 << 8 | B010010, // 184 ク B000011 << 8 | B001101, // 185 ケ B000100 << 8 | B000101, // 186 コ B000010 << 8 | B110110, // 187 サ B101100 << 8 | B000001, // 188 シ B000001 << 8 | B101100, // 189 ス B001000 << 8 | B110110, // 190 セ B011000 << 8 | B000001, // 191 ソ 0, // 192 0, // 193 /* 中略 */ 0, // 254 0, // 255 };
1バイトカナ文字(半角カナ)を Serial.println()
すると戻りは3バイトなので、下位1バイトを使って font_map
の配列からパターンを取り出す
uint16_t font(byte ascii) { return pgm_read_word(&font_map[ascii]); }
byte code = 'ア'
としたときに、「ア」の下位1バイトだけ取り出して変数 code に代入してくれれば良いのですが、narrowing conversion
のエラーが出るPCとコンパイルが通るPCがあります。キャスト面倒だから通して欲しいんだけど何が違うんだろう?
紙を被せて完成
2mmの白いアクリルでは、滲んでピンボケみたいになってしまいました。
アクリルをコピー用紙に変えたらシャキッと表示できました。
まとめ
while 文の無限ループが含まれているのでスケッチの全文公開はやめとこ(笑)
フォントのパターンは、こちらのブログで紹介されているものを再現しています。
12セグメントカタカナフォント|ニートが頑張るブログ
リモコンホルダーを柱に穴をあけずに固定したい
こちらは純正のリモコンホルダーです。2×4材を天井まで突っ張って棚を作ってあるのですが、そこに室内照明のリモコンを取り付けています。しかし、位置的に赤外線が届きにくいらしく反応が悪いです。
操作しやすく反応も安定する場所に移動したいけど、柱とか壁紙に穴を開けたくない。というわけで、ネジで柱にクランプするホルダーを作ります。
モデリング
造形
ネジ孔の内側にあけた六角形の凹みに
ナットを入れて
コネジを通す
取り付け
柱に取り付け
リモコンも取り付け
反対側
ネジで挟んでいるので多少の凹みはついてしまいますが、木ネジ打ち込まずに済みました。軽く締めただけですがガッチリ固定されています。
ネジが飛び出しているので、見た目は悪いですね。ポリカの透明なネジを使うと良さそうでしょうか。
[追記 2019.03.02]
ネジをポリカのイモネジに交換しました。
https://www.amazon.co.jp/gp/product/B01DNC89BS/
ネジ頭の出っ張りもなくなり
これなら服とか引っかける心配もないし見た目も良いです。
ホルダーの色が白に変わっているのは、リモコンの着脱がキツかったので寸法を修正し、クリアのフィラメントで作り直しました。
Fusion360 でモデリングした3Dをブログに貼る
Makers Love に3Dを貼る方法が紹介されていたので早速試してみます。ちなみにこれはスクレーパーのホルダーです。
やりかたはこちらの記事に紹介されています。
【Fusion360小技】ホームページやブログに3Dモデルを表示する方法 | デジタルものづくりの情報サイト「メイカーズラブ」
上にこんな感じの絵が表示されていますか?
ドラッグしたりホイールを回すと3Dを拡大したり回転できます。右ドラッグで平行移動もできます。
ブラウザ上で断面をみたり距離を測ったりもできます。
初期設定だと全体的に暗くて見にくかったのですが、右下の歯車ボタン(設定)から「環境」タブで背景やライティングを変更したら見やすくなりました。
タブレット(Amazonの 旧Fire7、ブラウザは Silk)でも表示できました。最初表示されるまでに時間がかかるのですが、表示されてしまえばぐりぐり回せます。断面もとれました。
Makers Love は参考になる情報が豊富でよく見に行くのですが、全体的にブクマが少ないので意外と知られていないのでしょうか。おススメです。
1入力4出力のヘッドホンアンプ
何人かで使えるヘッドホンアンプが欲しい
住宅事情で普段ヘッドホンを使っているけど同じ音を何人かで聴きたい時があります。そんな時はヘッドホンのコードを分岐したりするのが一般的でしょうか。
しかし個別に音量を設定したいときもありますし、音質も悪くなりそうだし。
というわけで、1入力4出力のヘッドホンアンプを作ります。
回路図
電源
DCアダプターから9Vで電源供給し、三端子レギュレータで5V に降圧します。
電源ランプは手元にある2色LEDを使い、好きな方の抵抗だけ接続して色を選べるようにしておきます。回路図では10kΩになっていますが暗かったので1kΩにしました。
ミュート
アンプICのミュート端子に接続します。
ミュートは電源ON/OFF時のポップ音を抑制するために使うので、電源ON/OFF時にだけLOW,それ以外はHIGHになっていれば良いということになります。
電源の立ち上がり/立下りの最中は三端子レギュレータの入出力の電圧差が1V程度ですが、完全に立ち上がってしまえば4V程度の電圧差が発生します。そのため、三端子レギュレータの両端の電圧差が2~3V以上の時だけトランジスタをONしてミュート端子をHIGHにします。
トランジスタはあまり深く考えず、定番の2SA1015 をチップ化した 2SA1162 を使いました。
ピンジャック
2個のピンジャックを並列に接続しています。分岐ケーブルを用意しなくて済むように、というだけの理由です。テレビとアンプの間に割り込ませる形で接続する用です。
コネクタはアマゾンの激安品です。実物を測ってフットプリント作りました。
ボリューム
定番のアルプス RK09Lです。2連Aカーブ10kΩ。
アンプ
遊ぶならオペアンプ使ったほうが楽しいんでしょうけれど、今のところは専用ICで。周辺回路の定数設定とか発振とかの心配が減ります。
簡単に扱えそうなロームの BH3544F を選びました。周辺回路は(ミュート以外は)データシート通り。
出力
カップリング用のケミコン、保護抵抗、ミニジャックです。
コンデンサも本来ならこだわる所なんでしょうが、電源用、出力のカップリング用、共通で適当に選んでいます。
ニチコンのチップケミコン、UCMシリーズなのですが、体系図によると低インピーダンスを追及した品番のように見えます。
基板アートワーク
無駄にGNDが広くてビア打ちまくってます。ボリュームのノブがちょっと大きめなので、回しやすさを考えるとこれぐらいのサイズになってしまいました。
アクリルプレート
基板データをもとにプレートの外形と孔位置を決めます。
こんな感じで基板と一緒に発注します。
組立て
基板とパネル入荷
基板組立てと動作確認
パネル取り付け
アルミノブがなかなかいい味だしてくれてます。
ついでにホルダー
問題点
ボリュームノブを触るとハムが乗る
ボリュームのノブを触ると、ブーンというノイズがヘッドホン出力から聞こえます。ボリュームのボディー(固定用の端子)をGNDに接続したら解消しました。
電源ON/OFF時のポップノイズ
オシロで信号をみると、ミュートは働いているのですがもっと長く効かせないとならないようです。アンプICのデータシート通りにしておけばよかったかも。
電源OFFでもヘッドホンにノイズが乗る
スライドスイッチで電源を断っているのに、ヘッドホンからズバババババというノイズが聞こえます。電源ONしてミュートが解除されるとノイズは消えます。原因が判りませんが、ACアダプタを抜けば止まります。
スライドスイッチは2回路入っているので並列に使用していましたが、1回で電源、もう1回路でGNDをスイッチ(GNDもDCアダプタから切り離す)したらだいぶ改善しました。
パターンカットして修正。
ボリュームの回転方向が逆
今回の一番の残念ポイント。フットプリントと部品実物では1番ピンと3番ピンの位置が逆でした。なので、ボリュームを右に回すと音量が下がり左に回すと音量が上がる残念仕様になってしまいました。
基板とボリュームを配線で接続していれば配線を入れ替えるだけだったのですが、基板に直接実装しているしGNDはベタなので修正はかなり手間かかりそう。
落としたらフォーンジャックがもげた
ヘッドホンを挿したまま落としてしまい、パターンごとジャックがもげてしまいました。ここは表面実装ではなくてスルーホールピンを使うべきでした。
良かった点
アンプICの最大出力62mWというのが貧弱ではないかと気になっていたのですが、十分な音量が出ます。
音質の良し悪しを判定できるほどオーディオに詳しくないですが、音質にまったく不満はないです。
コネクタや端子類を全て基板に実装したので配線が無くスッキリしました。
部品代
- 基板:$22.28(5枚分)
- アクリルパネル:$16.55(5セット分)
- 電気部品:約6000円(予備含む)
- 機構部品:約2000円(ノブ、スペーサー、ネジ等)
合計 1万2千円ぐらい
まとめ
もう1回、再設計して作り直せば良いものができそうな気がしますが、市販品を買って済まそうと思います。
- 出版社/メーカー: BEHRINGER
- 発売日: 2018/09/01
- メディア: エレクトロニクス
- 購入: 5人 クリック: 58回
- この商品を含むブログ (10件) を見る
アクリルのタップタイト用ネジ穴の形状とサイズの最適を探す
ネジ締め千本ノック......ではないです。
結論
標準の下穴で問題なかった。ネジはBタイプが良い。
アクリルは硬くて割れやすいのでネジ孔はシビアな気がします
レーザーカットでいろんな大きさの孔を空けたアクリルを作りました。
上の2列は円ですが、下の3列は星形になっています。
レーザーカットなので寸法の精度はそれほど高くありません。
よく使うネジを3種類用意しました。
全てバインドタップタイトの 3×8 ですが、左からPタイプ、Bタイプ、Sタイプです。
簡単に説明しますと....
「バインド」は、ネジ頭の形状。ナベ頭が径が小さく高さが高めなのに対して、バインドは径が大きく高さが低くなっています。
「タップタイト」は、木ネジのように下孔だけあけたところにネジでネジ山を切りながら(タッピングしながら)締めるネジです。
「Pタイプ」は、ネジ山のピッチが長く1回転させた時の進む量が長く、プラのような柔らかい材料でネジバカになりにくい特徴があります。
「Bタイプ」は、プラや板金(バーリング)等に汎用的に使えます。
「Sタイプ」は、主に板金用ですが、ネジ山のピッチがコネジと同じなのでナットのようにネジ切りされている場所にそのまま使えます。
Pタイプ
ネジが付いて無い孔は、もともとスカスカだったり、孔が小さすぎて回しても入っていかない孔です。
締め切ったときにトルクの変化が少なくそのままネジバカになったところは、ネジを緩めて浮かせてあります。
ネジを締め切る前に、アクリルが割れそうだったり硬くて入っていかないところも、ネジを緩めて浮かせてあります。
裏から見たところ。無理に締めるとネジ孔まわりにクラックが入ります。
Bタイプ
Pタイプより幅広い孔径で安定している様子です。
裏側。思ったよりクラックが入りやすいようです。
ネジの進みの大きいPタイプよりもBのほうが回しやすいので、きつくてもネジが進んでしまうのかもしれません。
Sタイプ
入ったネジが一番少ないです。
ネジを回すとキューキュー音がします。無理してますね。
ネジのピッチが小さいので、粉状のアクリルの欠片がたくさん出ます。
ついでに Arduinoの座布団に使った 2.6×8 Pタイプ
macrochelys99.hatenablog.jp
締結感も安定していてちょうど良かったようです。
まとめ
星形のネジ孔は Amazonで買ったアクリルの基板ケースのネジ孔が星形になっており、いいアイデアだと思って真似したのがきっかけです。
アクリルは丸より星形のほうが良いと思って今回比較してみましたが、あまり違いがありませんでした。
今回使ったネジは断面がオニギリ型のタップタイトでしたので、断面が円のタッピンだとまた違ってくるかもしれません。
丸孔は無理に締めていくと突然パキンと割れますが、星形だとネジ孔まわりに小さなクラックがピキピキ入り始めるので完全に割れる前に気付きやすいというメリットはあります。
3mmネジの下穴の推奨は 2.4~2.6mm らしく結果もその通りになりましたので、推奨下穴にBタイプのタップタイトを使うのが良さそう。
ABSやPSならPタイプのほうが使いやすいですが、PとBは外観が似ており混じると(Pで一度締めた穴をBで締めなおすと)ネジバカになるのでどちらかに統一したいところです。
基板屋さんにアクリルのレーザーカット加工を頼んだ
基板屋さんだと思っていた Elecrow はいろいろやってました
https://www.elecrow.com/services.html
3Dプリンタでの造形から、ミリングマシンでの削り出し、Moldingってあるから注型もやってるのかな?
30cm×30cmまでのアクリルのレーザーカットはDXFのデータをアップすれば定額(見積もり不要)で作ってくれます
https://www.elecrow.com/5pcs-acrylic-laser-cutting-service.html
しかもお安い
例えば、10cm×10cm×t3mm が5枚で $5.8
最大サイズの 30cm×30m×t10mm だと5枚で $126。
Arduino UNO の座布団を注文してみます
アクリルは硬くてタッピングネジは入りにくく、かといってネジ孔を大きくするとネジバカになるので、基板を固定する孔は星形にしました。ネジはナベ頭タッピング Pタイプ 2.6×8 を使います。
材料のサイズで価格が決まるので、150mm×100mm のサイズに割り付けた絵を描いたPDFと、
外形線だけにしたDXFをzip圧縮してアップロードして t 3mm と t 8mm を注文しました。
上のほうのリング状の部品は、Arduino と 座布団の間に挟むスペーサーです。こんな細かいパーツたくさん作りこんで嫌がられそうですね。
届きました
2面取り×5枚の t 3mm と t 8mm の2種類なので合計20枚。
なかなか重厚感あっていい感じです。
断面は細かく波打ってますが、レーザーで溶けた跡なので手を切るようなエッジではありません。
t 3mmの薄い方は天板にしてみました。天蓋付きのベッドみたいな高級感。
アクリルいいですね
同じものが5枚分届くのですが、そんなに要らない場面のほうが多いのですが。
基板のケースとか作ってみたいのですが、余ったアクリルがジャンクになりそう。
送料が $15 とかかかりますので、基板を頼むときに一緒に頼むことにします。
サイズが 30cmを超える物も、メールで見積もりを依頼すれば返事がきます。国内のサービスに頼んだ時の2割(8割引)ぐらいの価格でした。
レーザーカットはレーザーの太さ(約 0.2mm)の分だけ削れるので、外形寸法は 0.2mm 小さく、孔などの内径は 0.2mm 大きくなる傾向になるようです。
ネジの孔径など、精度が求められるところは要注意です。
お手軽な座布団欲しい方はこちらが良いかと思います。
www.switch-science.com