2022/9/10(土)

朝、腹が痛くてトイレにこもっていた。変なもの食べたというよりはなんか腹を冷やしたとか生活習慣がよく無かったとかそういうやつの気がする。


電光掲示板にバッテリ残量表示機能とUSB経由での表示更新機能を実装した。これで一応このプロジェクトは終了。もうちょっとスッと終わらせるつもりだったのだがだらだらと長くなってしまった。期間としては結局1週間以上かかっている。

反省点:

  • 最初に回路図の全体像を考えるべきだった。後から必要なピンの数が増えてるのはアホとしか言いようがない。
  • ねじの取り付けに支障をきたさないよう、端に部品を付けないよう気を付けるべきだった。これは簡単に気を付けられるはずなので次回以降は気を付ける。実際に基板に挿して実験すれば衝突するか分かる。
    • LEDマトリクスなどのような大物はピンの出ている部分の大きさより実際の大きさがでかいのでなおさら注意。
    • ねじが通ってもナットがはめられない可能性がある。これも重ねて注意。
  • 部品の配置以外に、電源ラインの配置をあらかじめ考えておくべきだった。UEWと違ってすずメッキ線は交差させるわけにはいかない。
    • UEWもモリモリ使えばさすがにある程度の体積になる。太いバスラインみたいなのをあらかじめ考えておくといいのかもしれない。
  • pickitで「connection failed」が出たので焦ってしまった。これはターゲット回路の問題ではなくpickit側の問題らしく、USBを挿しなおすだけで直った。
  • 回路定数の調整用に半固定抵抗を使ったのだが少し使い方を誤ったように思う。分圧のために「固定抵抗-半固定抵抗」と直列にしたのだが、分圧が目的なら「固定抵抗-半固定抵抗-固定抵抗」という感じで予め固定抵抗で大雑把な分圧比を決め、1~2桁くらい小さめの半固定抵抗で調整できるようにするべきだった。固定抵抗と同じくらいの比率の半固定抵抗を入れてしまったため、ちょっと回すだけでだいぶ回路定数に影響が出るような回路になってしまった。これはかなり重要な反省なのでなんか記事にしたい。
  • 表面実装コネクタはピンのはんだ付けよりも、本体の固定の方を先にしておくべきということを学んだ。

良かった点

  • 多ピンICのはんだ付けは目よりも手の感覚を頼りにすると良さそうだということを学んだ。これは良い収穫だった。QFNパッケージのはんだ付けも意外といけることが分かった。
  • 表面実装コネクタ秋月の薄型変換基板と組み合わせると付けやすいということが実証できた。0.65mmピッチなことに目を付け、前々からアイデアだけあったのでちゃんと実証できたのはうれしい。
  • 今回は秋葉原へ新たに買い出しに行くことなく手元にあった部品だけで組み上げることができた。手元の部品だけでもいろいろ作れることが分かったので、部品をちゃんと消費して何かしら動く作品にしていきたい。

ABC268に出た。

  • A やるだけ
  • B substr見るだけ
  • C +0個ずれ、+1個ずれ…+N-1個ずれに全て分類する。それぞれの個数を$C_i$とする。同時に都合が良くなるのはmod N上で連続する3種類だけなので、$(C_0,C_1,C_2)$の合計、$(C_1,C_2,C_3)$の合計…$(C_{N-1},C_1,C_2)$の合計のmaxをとる。
  • D 死ぬほどWAした。色々実装方針があると思う。とりあえずN!通りの並べ替えを全探索するのはいいとして、_の挿入パターンをどう全探索するか。Xの長さが3以上16以下であることに注意すると、16以下であることから挿入パターンは有限通りに絞られる。DFSするのもいいが、0と1を詰めた配列でnext_permutationするみたいなのもアリ。Tとかぶらないかの判定は、setなどを使うと1回$O(|T|\log M)$で高速に判定できる。
  • E Cと同じくずれた個数で分類する。最終的な不満度の式はそれぞれの個数の1次式になる。例えばN=5の場合、以下のいずれかになる。
    • $0C_0+1C_1+2C_2+2C_3+1C_4$
    • $1C_0+0C_1+1C_2+2C_3+2C_4$
    • $2C_0+1C_1+0C_2+1C_3+2C_4$
    • $2C_0+2C_1+1C_2+0C_3+1C_4$
    • $1C_0+2C_1+2C_2+1C_3+0C_4$
    • これらの値のminを取ればいいのだが、係数の特徴に注目すると、ある値から隣の値を算出するのは累積和を用いて$O(1)$で出来ることが分かる。最初にどれか1つ計算して順次隣を計算していけば$O(N)$で解ける。

Categories: