wassup?

プログラミング、ボドゲ、ボカロ

mRubyの動くLED時計をESP32で作る [前編]

マトリックスLEDでスマート時計を作る - Google スライド

作ったもの

  • LEDmatrixの時計
  • NTP時刻取得
  • HTTP GETで情報を受けられる
  • mRubyのプログラムをGETで入力できる

概要

LED matrix

f:id:wass80:20190430144912p:plain

  • KP-3232D
  • 32x32の3色LED
  • 合計3072個のLED
  • 4860円 つまり大体1LEDにつき1.5円

この16pinで入力する。

f:id:wass80:20190430145027p:plain

  • 横1列の点灯状態+点灯させる列を入力にとり光る。
  • 一度に1列しか光らないので,順次点灯させる。

これの制御にESP32をつないだ.

f:id:wass80:20190430145248p:plain

届いたその日に動いた。

f:id:wass80:20190430145310p:plain

木枠を作った。

f:id:wass80:20190430145540p:plain

きれい。

f:id:wass80:20190430145554p:plain

カラフルに光らせるために,高速で点滅するラインの中で何回光らせるかで制御している。

現在は8階調。人間の目で見える実態は4階調ぐらい?

フルカラーで光らせるためにはFPGAでゴリゴリ実装する必要がありますね…。

時計実装

ESP32のプログラムはこれ:

github.com

C言語をLinterも入れずに書いてしまったので,おそらく脆弱性が多量に含まれている. HTTPサーバーの部分が特に脆弱である可能性が高い.

NTP時刻取得

時計なのでsntpで時刻を取ってくるようにした。 wifiのサンプルコードとsntpのサンプルコードを持ってこれば動く。

ただ時々時刻がずれるので自動修正のコードを入れている。 はずだがまだ時々突然1時間以上ずれる。

HTTP GET

外からメッセージやプログラムを書き込むために使用。

slack botから文字列を入れると時計に表示される。

f:id:wass80:20190430150222p:plain

「八木までの各駅と、田原本新祝園、新田辺、大久保、桃山御陵前丹波橋に止まります。」みたいな文字列も流せて楽しい。

mRuby編

→ 後編: 楽しい時計プログラム編。

wass80.hateblo.jp

京大から京都駅までの移動で地獄の市バス206系統を避ける方法

206系統が辛い

祇園ー京都駅を結ぶ京都市バス206系統は過剰な混雑を起こします.

H28_市バス_営業係数 | 京都市オープンデータポータルサイト によると1日あたり28,287人が206系統利用します. 206系統は平日,123本のバスが予定されています. 1台で229人もの乗客をさばけるわけもなく,臨時バスがほぼ同じ数走っています.

そんな臨時バスが多少走ったところで206は全く快適なバスではありません. なるべく206に乗りたくない場合,様々な回避方法があります.

まとめ

京大から乗る場合はとりあえず17系統,4系統を使うことを考えると良いです. 偶然にも,京大快速やHoopが使えるなら乗りましょう.

京都駅前から乗る場合は

  • 4系統と17系統(と205系統)の乗り場(A2)から来たバスに乗り込む.→急ぎならこれが最速&健全
  • 206系統の乗り場(D2)から臨時バスに期待して1本見逃す.→座れるが混雑は避けられない
  • 京阪の七条駅まで歩く.→確実だが疲れる.

のどれかの戦略を取るのがおすすめです.

以下はおすすめ順に紹介していきます.

17系統 (百万遍ー京都駅) 230円 25分

錦林車庫前ー…ー京大農学部前ー百万遍出町柳駅前ー…ー京都駅前

  • 平日休日問わず運行 約15分~20分間隔
  • 百万遍 5:37から23:03
  • 京都駅 5:46から23:00

6,513人/日でそれなりの快適さがあります.

4系統 (出町柳駅前ー京都駅) 230円 25分

上賀茂神社前ー…ー出町柳駅前ー…ー京都駅前

こちらも7,297人/日でそれなりの快適さがあります

京大快速(百万遍ー京都駅) 230円 25分

f:id:wass80:20190402182432p:plain

出町柳駅前ー百万遍ー京大正門前ー京大病院前ー京都市役所前駅烏丸御池四条烏丸ー京都駅前

平日しか走っておらず,また意外と混み合っている路線です.

Hoop 25分 (京都大学前ー京都駅八条口)230円

f:id:wass80:20190402182920p:plain

京大病院前ー京都大学前ー河原町御池ー四条烏丸ー京都駅八条口 (帰りは四条河原町経由)

休日も午後から走っています. 東大路通を北へ走るため,停留所の場所が難しいです.

f:id:wass80:20190402183543p:plain

また,京都駅も八条口側につくので注意が必要です.

1日乗車券が使えないことにも気をつける必要があります.

京阪 (出町柳ー七条 & 徒歩1km) 270円 7分+1km

1km歩くことが苦でないならばおすすめです.

地下鉄 (徒歩2km & 今出川ー京都) 260円 9分+2km

意外にも京阪に比べてこちらのほうが10円安いです.

今出川通バス & 地下鉄 (百万遍今出川乗り換えー京都)490円(370円) 20分

今出川通の徒歩2kmをバスに乗る戦略です。 おそらく最速。ただし、コストが高い。 乗継割引の働くトラフィカの場合は370円で許容範囲かもしれないです。

京阪&奈良線 (出町柳東福寺乗り換えー京都駅) 270円+α

京都市内のJR切符を持っている場合は有効な手段です. ただし,奈良線が10分から12分間隔のため,意外と乗り換えに時間がかかることが多いです.

205系統 (河原町今出川ー京都駅) 230円 30分

これは市バスで最も乗客の多いバス.34,888人/日. 206と同様におすすめできないです.

ちなみに市バスは昼間割引共通回数券をバラ売りしている自販機の存在を使えうことで、ちょっと安くなります。 トラフィカも10%還元なのでお得です。

タクシー 2000円 20分

4人で乗ると1人500円なので, 悪い選択肢ではないですね。

短時間、シンプルなルールで遊べるボドゲ5選

ボドゲに触れたことない人向けに、いくつかおすすめします。

マジックメイズ

  • 2-8人 15分 リアルタイム協力ゲーム

f:id:wass80:20190318210547p:plain

仲間と協力して制限時間内に装備品を手に入れて脱出しろ!

  • 協力ゲーム: 全員勝利を目指すゲーム
  • リアルタイム: 手番の概念がない

協力する楽しさがすごい。1プレイごとに貯まる経験値を感じやすく良いバランス。 チームビルディングのネタにおすすめ。

(関連) エスケープ: サイコロをいっぱい振って脱出

(関連)パンデミック: 手番がある協力リソース管理ゲーム

ぶくぶく

  • 3-5人 30分 同時 バッティング

f:id:wass80:20190318210558p:plain

この島は天候によって浮かんだり沈んだり

  • 同時: じゃんけん
  • バッティング: 人と同じ行動をすると悪いことが起こる

1戦目は運が強いかもしれない。 しかし、2戦目は1戦目の隣のプレーヤーの手札で戦う。

(関連)トリックテイク全般: 手番がある

それは俺の魚だ

f:id:wass80:20190318210704p:plain

ライバルを狭い氷上に孤立させ、自分だけしか得られない氷上を作り魚を大量に獲得しよう!

運要素が一切ないので賢い人におすすめ

藪の中

  • 3-4人 20分 推理 ブラフ

f:id:wass80:20190318210715p:plain

殺人事件、三人の容疑者、真相は藪の中、にはならないアブストラクトな推理ゲーム

  • 推理: 人の振る舞いなどから真相を推理しよう
  • ブラフ: 嘘をつく

騙し騙されがわかりやすいゲーム。 取れる行動が2択なのが良い。

(関連)ファブフィブ: ブラフゲーム

ツインイット

f:id:wass80:20190318210727p:plain

同じ絵柄のカードを見つけて誰よりも先に指させ!

同じ絵柄を素早くとるだけという単純なルールだけで人を困惑させる訳のわからない絵柄が魅力的。

(関連)おばけキャッチ: 指定されたものをすばやく掴む

マウンテン遭難記

これは部内のKibelaに公開していた記事の移植です。名前は適当に置き換えました

23:55に起きた。08:50に名古屋に行くことを決めた。

f:id:wass80:20190318210126p:plain

喫茶マウンテンに無事9人が集合した。 人々が思い思いに注文する。 メロンスパ、バナナスパ、バナナスパもう一つ、メロンスパ、きのこパスタ、メロンスパ、厚化粧の大。

厚化粧の大はなかったので中になった。

自分は、抹茶小倉スパを注文した。あれだけ有名なんだから味に僅かな期待はあった。 ついでにミニサボテンスパ(お試し)が500円だったので頼んだ。朝から大したものを食べていなかったので正しい選択だと思った。

注文が来始めた。はじめはメロンスパ。 Aさんが食べ始める。苦難の表情を浮かべる。 湯気の上がる真緑のパスタからは異常なほど強いメロンの香料の匂いがする。

そのメロンスパが後2つやってきた。 Bくんも苦労していた。 Cさんは余裕そうだった。

バナナスパもやってきた。生クリームとさくらんぼでトッピングされたバナナとスパゲッティ。 スパゲッティが必要なのか?

キノコパスタがやってきた。 思慮深いDの注文だ。 太麺のパスタは焼きそばのようだった。

自分のミニサボテンパスタが届いた。 Dのきのこパスタと同じ量あった。 味は普通のケチャップ味のナポリタン。 ピーマンの代わりにサボテン。 ウチワサボテンは酸味が少しあること以外は癖の少ない食材なので、あまり違和感はなかった。 f:id:wass80:20190318210102p:plain

まだこの時は余裕があったので、サボテンスパの半分を苦しむAさんのメロンスパと交換した。

初めて食べるメロンスパは最悪だった。 決してすすってはいけない。 端で嗅いでいた匂いが甘さをまとって現実になる。 正直おいしくなかった。

更に抹茶小倉スパが机に押しこまれてきた。つらい。

f:id:wass80:20190318210039p:plain

メロンスパの衝撃の後だと麻痺するのか、 食べられると一瞬思った。 続く箸はなかった。食べ続けるには甘すぎる。 かき氷にかかるはずだった抹茶シロップがあまりにも過剰。

この後の記憶はあまりない。最後まで食べきれなかったのでDに2,3口食べてもらった。

京都観光 (鉄道博物館,京都水族館)

春休み,ふらっと出かけたい気分だったので, 梅小路にある施設に出かけた.

入館料は2施設セットになったものが学生2300円.

鉄道博物館

梅小路公園の西側にある.もともと梅小路蒸気機関車館があり,リニューアルされた. f:id:wass80:20190315190003p:plain

鉄道博物館は必ず開店凸をしたほうが良いと言われている. なぜならば,目玉の1つである鉄道シミュレータの体験は抽選であるからである.

1時間毎に抽選が行われ,抽選参加権利は入場につき1回しか存在しない. 多くの子供が来る時間だとかなり確率が下がってしまう

現に自分とついてきた友達は共に落ちた.

それはそうと,展示は楽しんだ.

古そうなマルスf:id:wass80:20190315190614p:plain

実際に押せるSOSボタン f:id:wass80:20190315190651p:plain

ボタンで動かせる転換器 f:id:wass80:20190315190714p:plain

など,割と見どころが多くて楽しかった.

これも後で気づいたのですが, SLに乗りたいのならば,入場してすぐ展示の方に行かずSLのほうに行って時刻表を確認しましょう. 我々は諦めました.

寄り道,市電カフェ

鉄道博物館京都水族館の中間地点にある,実際の市電を改造したカフェ. 雰囲気がよかった.

f:id:wass80:20190315190841p:plain

名物のカタカタつりわぱん(250円)とソフトクリーム(300円)を食べた

f:id:wass80:20190315190935p:plain

市電カフェとは別に,休憩所として車両が置かれていた.

f:id:wass80:20190315191142p:plain

この日はなんと運が良く,運転台を触らせてもらうことができた. 貴重な体験ができて楽しかった. f:id:wass80:20190315191152p:plain

京都水族館

海のない京都市にできた水族館 施設も小さいが,それぞれのコーナーがそれなりに凝って展示してあり,楽しめた. f:id:wass80:20190315191300p:plain

オオサンショウウオは群れます. f:id:wass80:20190315191408p:plain

ペンギンは可愛いです. f:id:wass80:20190315191421p:plain

ペンギンのサービス精神が非常に旺盛.f:id:wass80:20190315191510p:plain

タツノオトシゴ f:id:wass80:20190315191534p:plain

伊勢海老.これは完全に食材.というかほかもどれも美味しそうに見える. そう言うとドン引きされた. f:id:wass80:20190315191833p:plain

クラゲ f:id:wass80:20190315191551p:plain

また群れているオオサンショウウオ f:id:wass80:20190315191608p:plain

一番大きいオオサンショウウオで25,720円らしいですね.ほんのちょっとだけほしい.

楽しかったので出た直後に再入館した.

これはおそらく百合. f:id:wass80:20190315191703p:plain

いっぱいペンギンのぬいぐるみがあったのでペンギンタワーを作った. f:id:wass80:20190315191804p:plain

どちらの施設も結構楽しんだ. 梅小路京都西駅が間もなく開業するのでアクセスも良くなる. これからの京都駅周辺の開発に期待.

東京見物 (明治大学博物館,近代科学資料館,アビス謎解き)

東京見物の2日目のログ.

1日目はこちら.

wass80.hateblo.jp

明治大学博物館

いくつか展示があるが,その中でも有名なのが拷問器具の展示.

ギロチンや, f:id:wass80:20190315182000p:plain

アイアンメイデンがあった. f:id:wass80:20190315182036p:plain

下のほうの針はガバガバなので,人を中に縛って使うのか,それともそもそも実用に供されず,脅しのためにあるのか. f:id:wass80:20190315182211p:plain

別の展示ゾーンには自動織物のためのジャカード織り機のパンチカードがあった. この機械,本当によくできている. f:id:wass80:20190315182356p:plain

寄り道: 500円記念硬貨交換

銀行にいって手持ちの500円玉を記念硬貨に換えてもらった. バイメタルの硬貨かっこいい f:id:wass80:20190315182534p:plain

近代科学資料館

東京理科大学にある博物館.

計算尺が用途ごとに大量にあってよかった. f:id:wass80:20190315183004p:plain

ここの展示の見どころの1つは,タイガー計算機に触れる展示. f:id:wass80:20190315183041p:plain

タイガー計算機はこのように中身が歯車でできている. f:id:wass80:20190315183131p:plain

上の表示窓に足したい数値を入力し, 計算機右側の大きいレバーを1回転させると下の結果窓にその数値が足される仕組みである.

レバーを逆回転させると逆に数値が引かれる. よくできた仕組みである.

さらに,出力窓を左右にシフトする機構や,出力窓の数値を入力窓に戻す機構がすべて歯車でできており,非常に面白い.

一通りマスターして,複雑な割り算もできたところで満足した.

他にもタイプライターをジャムらせたり, f:id:wass80:20190315183606p:plain

大量の真空管を眺めることができた. f:id:wass80:20190315183643p:plain

ある日は,微分解析機の実演をやっているらしく,是非見たかった. f:id:wass80:20190315183655p:plain

3月末でリニューアルのため休館するらしい.

www.tus.ac.jp

下には秋山仁の数学体験館があった. こちらもしっかり遊び倒したが,写真撮影不可だったため,省略する.

アビス謎解き

すでに結構歩いたあとだったが,必ずやりたいことがまだだった.

メイドインアビスの新宿街歩き謎解きである.f:id:wass80:20190315183955p:plain

新宿のまちなかを歩いて謎解きをするものである.(1000円)

すでにこの時疲れ切っていたが,ナナチがlineで指示してくれるだけで異常なほどのやる気が湧いてきたので良かった.

流石に謎解きの様子の画像はだせないので, 点字タイルを張っている様子です.

f:id:wass80:20190315184611p:plain

楽しかった.

岡むら屋

前から気になっていた岡むら屋の牛めしをかっこんだ

これはスゴ盛り肉めしなので790円.美味しかった.ただ,ご飯大盛りにしないとバランスがちょっと悪い. f:id:wass80:20190315184642p:plain

飲酒プログラミングコンテストはやばい会だった

飲酒プログラミングコンテストという,最悪なイベントが行われた.

ルール

  • 参加者には問題を1問読む権利が与えられている.
  • ビールを1缶開けるごとに次の権利が両方共得られる
    • 1回提出する権利
    • 新しい問題を1問を読む権利

全完するためには問題数-1缶のビールを開ける必要がある. また,WAを出してしまった場合,再提出するためには新しいビールを開ける必要がある. しくじると大量のビールを飲む羽目となる.

様子

大量に用意されたビール.破滅への道. f:id:wass80:20190315163240p:plain

今回は先輩がビールの全額を出してくれたので感謝しかない(というかそうでもない限りやる気がでない)

大量に用意された焼き鳥が焼かれる様子.

f:id:wass80:20190315163400p:plain

業務スーパーの焼き鳥(プレーン)にアメリカンミックスソルトをかけるとうまい.

f:id:wass80:20190315163526p:plain

経過

このコンテストではビールを飲むタイミングと問題に取り掛かるタイミングを考えることが大事となる.

2時間のコンテストで,問題ごとの得点は300-400-500-600-700-2400であった.

開始直後,僕は何も考えていなかったので,とりあえず300の問題を開いた.半分の人々は700を開いたようだった.

ビールを飲みながら300の問題のコードをさくさくっと実装する. ビールもすぐに飲みきった. 300に提出をした. TLEだった.

なるほど.Rubyで投稿したのがダメだったのかもしれない. Rustで実装しよう. ビールをもう1本開ける必要があるので,すぐさま次のビールを手にとった. Rustでの実装もすぐに終わった. ビールはまだ残っている.

新しい問題を読む権利が存在することを思い出したので,500の問題を開いた. すでに酔いが回り始めていたので,ここで致命的な誤読を繰り返す.

ビールはのみおわったので,300のRust版を投稿する. TLE. なんで?????

わからんので,500の実装を始めた. ビールも頑張って空ける.焼き鳥もうまい. サンプルはあっている気がしたのでなんとなく提出した. WA.

誤読していた. 読み直すとめんどくさいだけで提出した実装を改変するだけでよかった. 4本目のビールを空けたと同時にAC.

すでにこの時点で僕はフラフラだった. 700を読んでいた人間は1人を除いて全員WAをはやしたらしい. 部屋には酒臭いにおいと焼き鳥の匂いが充満して居酒屋状態だった.

1問目のTLEの原因が全然わからないまま,終了時間が近づいていた. この時,僕は他の問題を読むためにビールを続けてさらに2本も開けていた. 終了時には,6本のビール缶が僕の周りに散らばっていた.

結果

順位表の一部.f:id:wass80:20190315165639p:plain

500を通しただけで8人中3位になってしまった. 1位,2位はWAを出さずにしっかりコードを通していた. 飲酒プログラミングコンテストではWAを1回でも生やすと,デバッグが致命的に困難を極めることがわかった.

コンテスト終わってから,700に失敗した人々がデバッグしていたが,解決した人は居なかった.お酒怖い.

酒がいかに人体に影響を与えるのか,他者の様子を観察できて面白いイベントだった.