2021年の振り返り

振り返ったつもりでしたが、タイトルだけ書かれた下書きをみつけて「あれ」と思いました。振り返ってはいなかったようです。2021年はいろいろとあった気がしますが、ほとんど覚えていない気がします。さっき、別のエントリを書いたところなので、勢いで書いてしまおうと思います。

仕事の方は、年度途中でお一人退職で見送ることになり。その他、予算要求やら業務報告などの場面で経営層から「うん?」という反応があり、あっという間に四方を固められてしまった1年でした。ここまで固められたら、やりたいことは無理にでも形にしていく2022年にするか、と思った2021年でした。機を狙って、とかはなしにしないともう事業としては大幅縮小しか見えないな、と思うからです。もちろん、そういう結果であればそれを受け入れますが、現時点では手持ちの札は可能な範囲で投入してその上でどうなるかなと思います。

1月1日から大量の電子部品を発注していたようで、その後、仕事が忙しい時期は全く発注していない時期もあるのですが、月に1−2度は電子部品を発注していたようです。その時々でテーマがある感じの発注の仕方です。3月には電子部品の発注履歴の管理を簡単にしたいと思い、秋月電子用の拡張機能を書いています。

chrome.google.com

5月くらいまではESP32、ATOM LITEいじるか、それかマイコンなしの電子回路をいじる、が多かったです。

こどもと遊べそうなネタ本として買って、この本の作例をみていくつか作ってこどもと遊んでいました。

www.oreilly.co.jp

あとはこの本を購入して、555タイマーでひたすら遊んでいました。

www.oreilly.co.jp

なんだかんだで555タイマーを結構買いました。

akizukidenshi.com

あとは家族から頼まれて、土の中に挿せる温度計を作ったりしていました。ラズパイゼロとAM2320で作って、cronで1時間ごとにpythonのコードを動かして温度のログをとります。ラズパイゼロではnginxでサーバを立てておき、ラズパイゼロはwifiにもつなげてあるので家のどこからでもブラウザから温度を確認できるようにしてあります。1年くらい動かして先日AM2320が壊れたようなので新品と交換したところです。意外にこれが一番役立っているかも。

akizukidenshi.com

そんなんを作りつつ、家の中の湿温度もログとっておきたいよね、を言う話になり、準備を進めているところで、仕事が忙しくなり一旦中断し、その後、ATtiny-85を触ったり、昇圧ばかりやったり、LEDふりふりで遊んだり、CPUを作るの本で作り始めたり、ラズパイでOpenCVと、なんだかんだと遊んでいました。

夏は、モータに小さなプロペラをつけたものを山に持っていき、オニヤンマの通り道において、プロペラの前に止まるオニヤンマを捕まえる、をこどもと結構やっていました。こどもの遊びにモータが入ってくるとかなりいいですね。オニヤンマ、回るプロペラの前で本当に止まるんですね、びっくりしました。

あとは、モーターといえば、LEGO BOOSTをこどもとかなり遊んでいました。

www.lego.com

というか今もほぼ週末はこれで遊んでいます。これはなんというか、おもちゃとしても製品としても完成度がすごいですね。価格が高めに見えますが、価格をはるかに上回る中身が詰まった製品だと思います。こどもがいる家庭ではマストアイテムだと思います。と自分を正当化しながらスター・ウォーズのBoostがすぐに届きましたが、こちらはハブとモータ、センサだけ取り出して渡し、他のLEGO部品は2022年に入ってからこどもに渡しています。R2D2作れますし、かなり作り込まれています。

LEGO関係では以下の2冊が予約割($12.50)が効く、ということだったので送料分に充てられそうだったので2冊まとめて買いましたが、バイブル的に読み込んでいました。というか紙の冊子を買うとPDFもただで付いてくる、という売り方をしている出版社で素晴らしかったです。予約、だったのに発注後、すぐにPDFをダウンロードできたのは驚きました。

nostarch.com

nostarch.com

LEGO Boostがきてからはこちらも来ました。

nostarch.com

こどものできることの範囲が本当に広がってきたので、いろんな事ができるようになってきました。

あと、スズメバチが近くに巣を作ったようで、庭の木にじゃんじゃん飛んでくる秋を過ごしました。窓の外の木にスズメバチが10匹以上ブンブンしている状況で、トラップを設置して対応しましたが、これは本当にひどかったので、2022年はなんとかする、です。100匹くらいはトラップでお眠りいただいたかもしれません。飛んでいくスズメバチを見ると、どうもやっぱり、20メートルくらい離れた藪の中に消えて行く感じだったので、結構近くにあったのだろうと思います。嬢王蜂が巣作りで飛ぶ季節になったので、近場に巣を作られないよう先週トラップを設置しました。

草刈りはかなり頑張って、夏は毎週草刈り機で草を刈っていた気がします。ホンダのガソリンで動く刈払い機を使っているので、とても重く、そろそろ軽いやつに買い替えたい、電気?と思いますが、じゃんじゃん篠竹が生えてくる土地に家があるのと、地域の草刈りで電動だと役に立たないと思うのでどうしようかな、というところです。

www.honda.co.jp

住んでいる地域の班長的なものも回ってきた一年で集金やら、募金、敬老の品とかを持ち回る週末がちらほらとありました。

という感じの一年でした。

image tabankを公開しました

chrome.google.com

youtu.be

新規タブを開くと、NDLが所蔵している浮世絵、雑誌、図書に掲載されたイラストや絵などがブラウザの画面一面に表示されます。各種メディアに掲載されたイメージを楽しむことができる拡張機能です。

経緯?

3/17付で「NDLイメージバンク」が公開されました。1,500点ほどのイメージが切り取られテーマごとにまとめられたサイトです。

rnavi.ndl.go.jp

3/17の終業後にみつけ「おお、これこれ。これだ」とちょうど次の日の3/18は予定休をもらっていたこともあり、さっそく作り始めることにしました。が、実際には年休取得していた3/18は眠くて家でほぼ寝ていました。3/18の1日で作り切る予定で考えていたのに予定がさっそく狂い、連休中に細切れの時間を見つけて作業をしました。が、ご飯をちゃっちゃと切り上げてPCの前に座っているお父ちゃんを6歳のこどもが見つけていつもより早くご飯を食べおわり「やりたい、やりたい」と膝にのってきます。画面を見るに「これをやりたい、教えてほしい」という。キーボードの打ち方とエディタの保存、htmlの再読み込みを教えてあげ、勝手気ままに入力して新規タブに打ち込んだ文字列が今回取り扱っていた画像と一緒に表示されるのを見て楽しむ時間の方が長かったです。ご飯をこどもより早く食べて、こどもが食べ終わるまでが作業のための細切れ時間だったのですが、何やら楽しいことができそう、という感触を得たようでご飯食べ終わるスピードが上がり、細切れ時間はほぼなくなり作業時間もなくなりました。

1日で作り終えるつもりで始めた作業だったので、短期集中で仕上げようと3/23の夜に「とりあえずいいかな」と切り上げてGoogleに申請して、3/24朝には公開されていました。今回、機能が絞られているので審査が早かったのかもしれません。マニフェストもv3にしなさい、とあったのでv3にしましたが、残念ながら違いは全然わかってません。

Google Art & Cultureがお気に入りでずっと使っている拡張機能なのですが、日本の図書館界隈にあるコンテンツでやりたいな、と思っていてtabookを作りました。

chrome.google.com

JAPAN Searchが出たときに「待ってました」と触ったのですが、表示するネタ元を揃えるのがちょっと大変そうだぞ、と怯んで*1そのままだったので、今回の「NDLイメージバンク」は「見せる」を意識した画像をたくさん載せてくれているのでありがたかったです。「NDLイメージバンク」は自分も少し関わらせていただいた「遊歩館」に発想とアプローチが似てるな、と思いました。これに限らずですが、どんどんコンテンツが増えて、いろんな立場からたくさん使われると良いなと思います。

bunka.nii.ac.jp

www.g-mark.org

今回のものはtabookを簡素にしただけの拡張機能だったりするのですが、画像の表示が悩ましかったです。もうちょっと良い表示方法がないかな、とは今も考えています。

意外と解像度が粗いものもあるのと、一番悩ましいのは縦に長い画像の処理です。画面一面をこだわって、ブラウザ画面に横幅を最大にあわせて、高さが飛び出る感じにしました。適当なところで切り取って表示、というのもありなのかな、と思いましたが全体が見れるのも重要かな、と思いとりあえずはこの感じにしました。

アイディア等あればお寄せいただけると嬉しいです。

*1:というか無理。見て楽しむためのデータセットをまとう、と。

ジュールシーフ × ATtiny-85 × フルカラーLED (2)

前回の続き。

一般的な機器類で使い古した1V程度の電池切れ、の乾電池(単3か単4あたりを想定。今回は単3)の電圧を昇圧してもう少し使いたい、そしてその昇圧回路もできれば多少安く組みたい、という流れです。いくつか試して、とりあえずHT77XAシリーズにしました、が前回までの内容で。

haseharu.hatenablog.com

一般的な電気機器で利用していて電池切れとなった単3電池(ここでは1.0V程度とする)では、低電力LEDでも光らないと思います。実際に1Vを切った電池をつなげてみてもやはりダメそうです。

f:id:haseharu:20211222212440j:plain

というか、そもそもここで使っている赤色LEDは順電圧2.0Vなので新品のアルカリ単3電池1本でも発光に必要な電流は流れません。

akizukidenshi.com

ATtiny-85も動きません。

akizukidenshi.com

前回までで手元にあったHT77XA昇圧後、低電力LEDやら順電圧3.1Vの青色LEDなんかも光るところまで確認しています。この使い古し電池を昇圧した電源を使って、クリスマスのイルミネーション用にフルカラーLEDが少しずつ色が変わっていくプログラムをATtiny-85で動かしたいと思います。

akizukidenshi.com

プログラム自体は、こちらの書籍*1の「第1章 4 カラーLED」のプログラムをほぼそのまま使わせてもらっています。

www.rutles.net

  #define LED_R 0
  #define LED_G 1
  #define LED_B 2

void setup() {
}

void loop() {
  uint8_t r, g, b;
  uint8_t i;

  for(i=0;;i++){
    
    r = (sin(2 * 3.14 / 256 * i) + 1) * 128;
    g = (sin(2 * 3.14 / 256 * (i + 85)) + 1) * 128;
    b = (sin(2 * 3.14 / 256 * (i + 170)) + 1) * 128;

    analogWrite(LED_R,r);
    analogWrite(LED_G,g);
    analogWrite(LED_B,b);
    delay(20);    
    }
}

Arduino Unoあたりで一度試して動作確認ができたらATtiny-85をArduino化しプログラムを書き込みます。

haseharu.hatenablog.com

書き込み終わったら、ATtiny-85とフルカラーLED等をつないで、LEDが光ればOKです。上記エントリでも書いていますが、ATtiny-85自体のピン番号とGPIOの番号は違うので注意が必要。以下、データシート含めて再掲。今回はGPIOの「0,1,2」を使っています。

https://akizukidenshi.com/download/ds/atmel/attiny25_attiny45_attiny85.pdf

ATtiny-85 Pinout
1 5
2 3
3 4
4 GND
5 0
6 1
7 2
8 VCC

どんな機器類で使い古した電池なのかやフルカラーLEDにつなぐ抵抗などの条件にもよりますが、使い古しの電池でも十数時間程度は光るのではないかと思います。

www.youtube.com

これで、クリスマスのイルミネーションやら5歳の息子がよくやっている「部屋を暗くしていろいろなものを光らせる光の世界」遊びごっこで十分使えるのでこれ以上作り込みませんでしたが、アクセサリーっぽくするのも選択肢としてありかと。

ただ、その場合は、ATtiny-85での実装はサイズも大きくなるのでフルカラーLEDを適宜色を変えて光らせ続けたい、という今回のプログラム例とほぼ同じニーズであれば、ATtiny-85などは使わず、イルミネーションタイプのフルカラーLEDを利用する、という選択肢もあるかと思います。それだけであれば実装がとても簡単になります。

akizukidenshi.com

今回利用したHT7733AとHT7750Aはどちらも0.7V入力をそれぞれ3.3V or 5.0Vへ昇圧してくれます。モーターやらをがんがん回す用途でなければ、簡単な電子工作系は電池1本昇圧、でいけそうな気がしていて、最近はもっぱら3.3Vや5Vを作るときは単3電池をこのHT77XAシリーズを使うかXCL102をDIP化したDCDC昇圧コンバータで昇圧して、で間に合っています。

9V電源をレギュレータで5Vに降圧して使うこともありますが、特にこどもが触るものであれば、使い古しの電池を使って動かしている回路は、もしものショートのときなども考えると少し安心な気がしています。

そして何より使い古しの電池1本でATtiny-85が動くので、LEDを光らせる以外にもまだまだ活用することができるのかな、ということを実感できたのが一番の収穫でした*2

*1:改訂版ではない方

*2:今回もATtiny-85から結局LEDを光らせてますが、確認したかったのはATtiny-85の動作の方です。

ジュールシーフ × ATtiny-85 × フルカラーLED (1)

www.youtube.com

使い古し電池1本を使ってATtiny-85からフルカラーLEDを光らせる、です。

ATtiny-85は電源電圧2.7~5.5V必要ですので、普通に新品のアルカリ単3電池1.5Vのものをつないでも動きません。ましてや使い古した乾電池一本では通常はATtiny-85もフルカラーLEDも動かない/光らないのですが、電圧を昇圧させることで動かしています。

eneloopユーザではあるものの、充電池(二次電池)を使うのはもっぱら電力使用量が多く交換頻度の高いアイテムで、それ以外のリモコンやら時計など用途によっては充電池ではない方の一次電池も使っています。自治体によるのでしょうが、捨て方も面倒なのであまり定期的に捨てられず、気がつくと家には使い古した一次電池が溜まっていきます。

デジタルテスターを入手して使い古したアルカリ単3電池の電圧を測ったとき、1V切っていない数字が表示されて見間違いかと思いましたが、1V前後では動かなくなる機器が多いようです。この使い古しの電池をもう少し使えないの、ということと、よく使っていたXCL102をDIP化したDCDC昇圧コンバータを基板にはんだ付けする時に金額面から躊躇することが多い、という2つの理由で昇圧回路をいくつか試してました。

akizukidenshi.com

akizukidenshi.com

2021/12/15現在、3.3V、5V昇圧用どちらも300円。

よく参考にさせてもらっている武蔵野電波のプロトタイパーズ(ブレッドボーダーズも)のこの辺の回路も試してみましたが、トロイダルコアの巻線はやらずにマイクロインダクターに置き換えてます。巻線は巻ける気がしません。

あと、「ジュールシーフ」という単語についてもこちらの記事に説明があります。

pc.watch.impress.co.jp

TL499Aはデータシートに忠実に作ってみたもののうまく再現できず。ブレッドボードだと再現難しい、というウェブ記事もちらほらみるので、試してはみたものの。

https://www.ti.com/lit/ds/symlink/tl499a.pdf?ts=1639488959713

TL499Aは樫木総業で購入。

www.kashinoki.shop

NJM2360ADでもデータシートと最近改訂版が出たこの本での作例を参考にしてみましたが、出力電圧が安定しないときがあり。どこかおかしい部分があるのでしょうが、突き止めきれず。

gihyo.jp

akizukidenshi.com

どんな波形がでているのやら、そろそろオシロスコープが、というところで一旦中断。

結局、今のところ電圧も可変というよりは3.3Vやら5V固定で良いので、であれば使いやすくて安定してそうなのはHT77XAシリーズでの昇圧回路かな、というところで落ち着きました。一つ40〜50円で値段も安いし、使う部品もマイクロインダクタ(100μH)、ダイオード(データシートだと1N5817だが、手元にあった11EQS04で)、コンデンサ(電解コンデンサ22μF,47μF)と少なめ。

akizukidenshi.com

akizukidenshi.com

HT7750A or HT7733A 40-50円
マイクロインダクタ 100μH 10円
ダイオード 11EQS04 15円
電解コンデンサ 22μF,47μF 20円

上記部品代だけで85-95円で金額面では助かる感じに。ただ、秋月電子通商で入手しましたが、バラ買いしているわけではないので、上記の表通り100円以下で作れるかというと厳密ではないのですが。

部品が集まったら、データシートを参考に3.3V出力可能なHT7733Aの方で組んでみます。

https://akizukidenshi.com/download/ds/holtek/HT77XXA.pdf

f:id:haseharu:20211117174827j:plain

この順電圧3.1Vの青色LEDを光らせていて、デジタルテスターで3.3V測れているのも確認できます。

akizukidenshi.com

こうやって実際に光ると使い古しの電池もまだまだ使えるなあ、ということが実感できます。

他にもなにか使い古しの電池の再利用的なものを考えましたが、7セグLEDとかを光らせてみたりはもちろんできます。

f:id:haseharu:20211117204722j:plain

7セグ、DIPスイッチはこちら。

akizukidenshi.com

akizukidenshi.com

5Vにしたければ、HT7733Aを抜いてHT7750Aを挿せばOK。

とりあえずはここまでで次回、ATtiny-85の方を。

Arduino Uno Rev3からATtiny-85へ書き込む

f:id:haseharu:20211101070145j:plain

Arduino Uno R3を書込装置にしてATtiny-85へ書き込む際の自分用メモ(2度目の書き込み時にはまってしまったので)。

初期設定

Arduino IDEの「File」->「Preferences」を開き、「Settings」タブの「Additional Boards Manager URLs」へ以下を追加し「OK」をクリック。

http://drazzy.com/package_drazzy.com_index.json

「Tools」->「Board」->「Boards Manager」をクリックするとBoards Managerが開くので「attinycore」と入力し検索結果から「ATTinyCore by Spance Konde」を選択しインストール。

これで、「Tools」->「Board」->「ATTinyCore」を選べるようになる。ここまでは一度、Arduino IDEで設定しておけばOK。

書き込み

2回目以降の書き込みはここから。Arduino Uno R3、ブレッドボード(小さいやつで良い)、ジャンパワイヤー6本、電解コンデンサ10μF×1個を準備。

  • Arduino Uno R3を書き込み装置にする
  • 書き込み装置にしたArduino Uno R3からATtiny-85へ書き込む

の順となる。なお、後者はジャンパワイヤ等でのArduino Uno R3とATtiny-85の接続が必要となるが、前者の作業時に後者の接続を行わず順に行う。

Arduino Uno R3を書き込み装置にする

Arduino Unoに何かをつないでいるようであれば、抜く。後述するATtiny-85への書き込み装置の準備もこの段階ではせずにArduino IDEを起動したマシンとのみ接続する。

f:id:haseharu:20211101071940j:plain

「File」->「Examples」->「11.ArduinoISP」->「ArduinoISP」のスケッチを呼び出し、Arduino Uno R3へ書き込む。「Done uploading」となったらArduino Uno R3の書き込み装置化は終了。

書き込み装置にしたArduino Uno R3からATtiny-85へ書き込む

Arduino Uno R3をArduino IDEを起動したマシンから一旦外し、以下の通りATtiny-85と接続する。
GPIOなどはデータシートのPDF2ページ目を参照。ATtiny-85自体のピン番号とGPIOの番号は違うので注意が必要。

https://akizukidenshi.com/download/ds/atmel/attiny25_attiny45_attiny85.pdf

Arduino Uno ATtiny-85
D10 1
GND 4
D11 5
D12 6
D13 7
5V 8
Reset(+)とGNDを電解コンデンサ10μFで接続


f:id:haseharu:20211101073134j:plain

あとはArduino IDEを起動したマシンとArduino Uno R3を接続し、「Tools」->「Board」->「ATTinyCore」->「ATtiny25/45/85」を選択。「Chip」->「ATtiny85」、「Clock Source」->「16Mhz」、など。

一度、「Tools」->「Burn Bootloader」を書き込み、その後、ATtiny-85へ書き込みたいソースコードを「Verify」->「Upload」->「Done Uploading」で終了。

なお、ATtiny-85のピン6番がGPIO 1となる。

ATtiny-85 Pinout
1 5
2 3
3 4
4 GND
5 0
6 1
7 2
8 VCC

ピン6番(GPIO 1)をチカチカさせるLチカコードを書き込んでHelloworld。

void setup() {
  pinMode(1, OUTPUT);
}

void loop() {
  digitalWrite(1, HIGH);
  delay(500);
  digitalWrite(1, LOW);
  delay(500);
}

f:id:haseharu:20211101075317j:plain

ATtiny-85のTinyJoyPadをLEGOにおさめる

 f:id:haseharu:20211017100416j:plain 

 前回、Arduino Unoで試してみたTinyJoyPadをATtiny-85で作ったことの記録です。作例はたくさんあるので、実装例の一つと、LEGOでのケースの記録として。ケースといっても周りをえいえいと固めただけなので「おさめる」とはほど遠いですが。

 ATtiny-85、10月19日現在売り切れ。ずいぶん前に買っておいたものを使っています。クロック20MHz、メモリ8kB、電源電圧2.7-5.5V、GPIO 6ピンです。

akizukidenshi.com

 主要な部品はこちらで、全部秋月電子通商で購入したものです。前回使ったものをほぼ流用。タクトスイッチは色を揃えようと思っていたのですが、こどもにどの色にしたいか聞いたら、全部別の色を選んだので、この組み合わせです。

 写真に写っていない部品としては、抵抗、電池ボックス、コネクタ、です。抵抗は今回は公式HPの数値にあわせましたが、88kΩは手元になかったので、33kΩ+51kΩ=84kΩとしました。なので今回はプログラムを変にいじる必要はなしです。

 f:id:haseharu:20211012055815j:plain

 ボタン電池で実装例が多いですが、小さい子供も使えるようボタン電池をさけ、単3,4電池を想定しています。電池ボックス側にスイッチがあれば電源オンオフ可能になるので、その点でも便利です。

akizukidenshi.com

 逆に写真に写っていますが使っていない部品は3.3V出力昇圧DCDCコンバータです。写真のものは単3電池2個のケースでやや大きいですし、持った感触も電池が重いです。なので単4電池1本を3.3Vに昇圧して使う、がサイズ的にいいのだろうと手元にあったXCL102シリーズを使ったDCDCコンバータを使おうかと思っていたのですがちょっと高いので、今回の用途ではまずは不要かなと、ハンダ付けしませんでした。じゃあ、もうボタン電池でいいじゃん、という気がします。こどもも誤飲する年齢ではないのですが、まだボタン電池むき出しは避けたいな、という感じです。とりあえず昇圧せず単3,4電池2本コースで。
 ディスプレイもピンヘッダとかで抜き差しできるようにしようかと考えましたが、浮いた感じになるのと少しぐらぐらするのでもうこれははんだ付けしないと、とすぐに諦めました。

akizukidenshi.com

 f:id:haseharu:20211017100226j:plain

 特に何も考えずにこのユニバーサル基板で実装したのですが、ぴたっとLEGOのサイズにはまってびっくりしました。

akizukidenshi.com

 ハンダは各部品の足とすずめっきでがんばれるところまで頑張って、あとはポリウレタン銅線でまとめました。スペーサーで少し浮かせています。

 f:id:haseharu:20211017100251j:plain

 箱型にしようかと思っていましたが、あまりに基板がぴったりはまってしまったので、下と脇を固めただけでまとまりました。スペーサーが少し邪魔なので、少し工夫して、もう少しおさめる感じにして、電池も単4電池にすればもう少し携帯感が出てくると思いますが、家でカチカチやる分にはこれで十分です。
 あとは、ATtiny-85の抜き差し部分は丸ピンのソケットを使いましたが、ちょっと硬いなあ、という感じで、ATtiny-85の抜き差しは少し慎重にやる感じです。

 ATtiny-85への書き込みは、Arduino Unoを書込装置にしてATtiny-85へ書き込んでいます。

f:id:haseharu:20211017100331j:plain

 5歳のこどもの手だと、タクトスイッチでの十字キーは操作しづらいかな、という感じでした。そもそも十字キー的なあれを操作したことがあるから4つ上下左右に並べたタクトスイッチもあまり苦労せず動かせるのかもしれません。

Arduino UnoでTinyJoypad

f:id:haseharu:20211005222627j:plain

ATtiny-85で動かせるゲームを配布しているtinyjoypad.comというサイトがある。

www.tinyjoypad.com

ATtiny-85でやってもいいんだけど、とりあえず動きを試したくて、Arduino Unoで試してみた。

TinyJoypadで使っているSSD1306用ライブラリを落として、

github.com

いくつかあるゲームのソースのうち「Tiny Invaders」を落として、Arduino Unoに書き込んで、

www.tinyjoypad.com

ちょうど手元にあったSSD1306の有機EL 128✕64グラフィックディスプレイへつなげてみると映るようだったので、

akizukidenshi.com

タクトスイッチのボタンの方もつなげてみる。Arduino Unoでの接続時はこちらを参照。

https://doc-10-1k-docs.googleusercontent.com/docs/securesc/pojmq4ree4t67t7fnfp41lsnpef54ouq/gb2c2mhgc5pegei5modurqut6of5fcft/1633444050000/01770547387352383734/03720646434477843549/11rv1jlYhM76hwfIRVyPU7DIqp-NmjuP0?e=view&authuser=0&nonce=a0k3glmaemqe2&user=03720646434477843549&hash=5loi2bd2ij93u0afsv6audt822bjpslp

SCLとSDAの接続箇所に注意が必要。最初接続したときははまらなかったのに、2回目に接続したときは、何も考えずに普通にArduino Uno側のSCLとSDAに接続してしまって「何か急にディスプレイ映らなくなったぞ。なんだろう」と2-3時間はまってしまった。

f:id:haseharu:20211005222547j:plain

ATtiny-85での実装を想定しているので、ピン数が少なくても良いようにボタンを抵抗分圧で処理している。自分は抵抗値を適当に変えてしまったが、プログラム内で以下のように設定しているため、数字を変えてやれば良い。

#define TINYJOYPAD_LEFT  (analogRead(A0)>=750)&&(analogRead(A0)<950)
#define TINYJOYPAD_RIGHT (analogRead(A0)>500)&&(analogRead(A0)<750)
#define TINYJOYPAD_DOWN (analogRead(A3)>=750)&&(analogRead(A3)<950)
#define TINYJOYPAD_UP  (analogRead(A3)>500)&&(analogRead(A3)<750)

抵抗値から抵抗の分圧を計算してもよいが、ボタン押下時にanalogRead(A0)とanalogRead(A3)の値を取得して、シリアルモニターで確認してそれにあわせて値を変えてあげても良いと思う。

if (TINYJOYPAD_RIGHT) 
if (TINYJOYPAD_LEFT)

とかでif文で場合分けをしていた(自分はインベーダー的なものとテトリス的なものしかみていないが)。それぞれのif文でserial.printが簡単かもしれない。インベーター的なそれは右と左しかコントールしないため、上の2つしか場合分けがない。テトリス的なあれには下がある感じ(たしか)でたぶんゲームごとに必要ないボタンは最初からプログラムの方では制御していない感じ。

タクトスイッチはカチカチ感が良くて、持っていない色があるとつい買ってしまうパーツの一つかもしれない。ブレッドボードやArduinoやらラズパイのシールド用基盤、あとディスプレイもつい買ってしまうパーツの一つ。

今回使ったSSD1306のやつも小さくて安くて良さそう、と買っておいたもの(確か)。