投稿

(画像もコードもなし)Arduino nano互換品USB-C品について

 どうも。 アマ経由で入手したNanoのUSB-Cコネクタが付いたやつ。 これがどうも調子が良くない。 CPUのIDを認識してるのに書き込みができない。 ソコまで認識してるんならアップロードできるんでね? と思うがアップロードできない。 FAQだと、OPtiboot入れれば直るんでね?と言われて せっせとOptiboot仕込んでも一切改善なし。 ふと思い立って、ISP経由で「NANO」のブートローダー書き込んだら あっさりアップロードできるようになりました。 なんでもかんでもOptibootはどうなんだろと思った一日。 てか、アマから買ったばかりのやつにブートローダーが仕込まれていたのかは不明。 以上です。 追記(21APR24) どこかの記事か忘れましたが、CH340のドライバが最新のものだと書き込めないらしい。バージョンは忘れた。 秋月さんのCH340関連のドライバが適度に古くてオッケーでした。 参考資料(ドライバーソフト)

ATTiny202のコネタ

イメージ
ATTiny202でブートローダーが書き込めない スケッチがアップロードできない Ardiuno IDE 2.1.0です。 今回の操作の大まかな流れ ・適当なArduino機にスケッチを送りUPDI書き込み機にする ・ブートローダーを書き込む ・スケッチをアップロード ①「jtag2updi」は複数ある模様 UPDI書き込み機にArduinoを使うとき、作者が「SpenceKonde」さんであることを確認。 他の方が良いかもしれませんが、トラブったとき問題の切り分けができなくなります。 ②書き込み機側の10μF電解コンデンサーがは必要かどうかはわからない。 RESETをどうのこうので書き込み機側のRST端子とGNDの間に10μFの電解コンデンサを入れることが推奨?されてますが、要るのかどうかはやってみて決めてください。 私はうっかり外したままやってて、正常に動作してました。 ③ブートローダーを書き込むとき、ここだけは選択する。 「ツール」からChip: AtTiny412 →ATtiny202 書き込み装置:jtag2updi 当然この2つを選択しないと永遠に書き込まれることはありません。 逆に、これ以外を動かすと問題の切り分けができなくなるのでこの2つだけ 選択してブートローダーを書き込むと吉です。 ④スケッチ書き込み時に「書き込み」してはいけない。 無事ブートローダーも書き込みLチカでも、と例題を用意していざ書き込もうとすると、 A programmer is required to upload とエラー。半日ウンウン唸って行き着いた先が、 A programmer is required to upload when trying to upload - adafruit industries メインツールバーの「アップロード」ボタンを使用する代わりに、メニュー項目「プログラマーを使用してスケッチ>アップロード」を使用すると、 他の変更なしでアップロードされます。(ググる先生訳) つまり、いつもやってるIDE左上の◯に→の書き込みでは書き込まれず、書き込み装置を使って書き込むを使わなければいけないということらしいです。 以上です

量子化レベルメーターの製作

イメージ
 相変わらずタイトルだけでは意味不明ですが。  このアイデアは今から約40年前、CDがまだ普及とは言えない頃のパイオニアのCDプレーヤーにあります。 そのCDプレーヤーには普通のバー式のサウンドメーターがついていたんですが、スイッチで切り替えると量子ビットをそのまま出すという機能がついてました。  まぁ44KHzでCDの全データーなんて流しても全ビット点灯するだけなので、ピークホールドか何かで適当にデーターを間引いて表示していたんでしょうけど。  それが何の意味があるかというと「何もありません」  ただただ見てて楽しい(※個人的な感想です)だけです。  そもそも素人が作るサウンドメーターなんて入力電圧に対しどうのこうのなんて必要は全くないので、LEDがなんかチカチカしてればいいのではないかという発想です。副作用として8個のLEDだと分解能8ビットが分解能256ビットに大幅にアップします。 8x8マトリクスLEDをMAX7219でドライブ、写真右から縦1列が5msごとにサンプリングした量子化ビットで、その値がホールドされて左に順次流れていく動作になっています。 つまり、 ←下辺  上辺→ ◯◯◯◯◯◯◯◯ = 入力レベル0x00  ●●●●●●●● = 入力レベル0xff とすればいいわけです。 スケッチのloopの一部   // A0, A1 (R-CH, L-CHの数値を読み取る)   float a00= analogRead ( A0 );   float a01= analogRead ( A1 );   // 量子化する。200は入力レベルにあわせただけで本来は1024   int i = a00/ 200 *0x ff ;   int j = a01/ 200 *0x ff ;   // LEDマトリクスの右から1列目と2列めの値をセット   dispbar [ 1 ]=i;   dispbar [ 2 ]=j;   // LEDマトリクスの左から描写していく。   for ( int k= 8 ;k>= 1 ;k--){     //maxTransferはMAX7912にデータを送る関数...

8LEDx2 74HC595 LEDの製作

イメージ
 Aitendoさんの福袋(23/5現在)、 意外なものからほぼゴミまでイロイロ入ってますが、 その中で2色LED(赤、青)x8発のキットが入ってましたので、 これがなんとかならんかと組み立て。 全部配線するのもかったるいので74HC595に全投げ。 毎度の回路は秋月さんのAE-7SEG丸パクリです。 https://akizukidenshi.com/download/ds/akizuki/AE-7SEG-BOARD_a2.pdf キットに入ってたのはここまで。 74HC595x2発追加しています。 配列の都合上595は中側に入ってます。 相変わらずイケてないはんだ付け図。 さてこれでテストスケッチ...といったところですが、ここででっかい落とし穴が。     digitalWrite (RCLK, LOW);     shiftOut (SER, SRCLK, MSBFIRST, [点灯するLED] );//赤LEDを点灯   shiftOut (SER, SRCLK, MSBFIRST, [点灯するLED] );//青LEDを点灯     digitalWrite (RCLK, HIGH); とすれば赤と青が同時に動くはずですが。 なんと赤と青の基底が違う(つまり赤が左から増えると青は右から増える) 基板に書いてあったシルク印刷を信じたばっかりに。 (R0-7とG0-7って書いてあったら0が左じゃないのかよw) ということで。     digitalWrite (RCLK, LOW);     shiftOut (SER, SRCLK, MSBFIRST, [点灯するLED] );//赤LEDを点灯   shiftOut (SER, SRCLK, LSBFIRST, [点灯するLED] );//青LEDを点灯     digitalWrite (RCLK, HIGH); とすることで青も赤も左から動くようになりました。 もう一つの問題が... 何に使おう... 以上です。

遠足は帰宅まで(3):LEDチェッカー

イメージ
  LEDを灯すだけのLEDチェッカー、真ん中の端子にLEDの足をつけて、 ボタンを押すとLEDが付きます。 ホントは色々やりたかったんですけど、 「LEDつけばそれでいいんでね?」と。 中身は単3x2と抵抗だけというノーガード戦法。 (回路図書くのも恥ずかしい) しかも押しボタンはいらないんでね?というツッコミオーライ仕様という。 小学生の夏休みの工作ですか?って内容。 でもケースはこだわってます。セリアで売ってた¥100です。 このケースはイロイロ応用できそうで大量確保中。 20世紀頃青色LEDもない時代にLEDを大量に仕込んだんですが。 使われないままのデッドストックを引っ張り出して来ましたが、 まー暗い。こういったのも技術の進歩はあるもんですね。 以上です。

MAX7219:8x8ドットマトリックスモジュールを7セグメントLEDx8で使う

イメージ
 タイトルが意味不明なんですが。 7セグメントLEDx8発ならMAX7219を使うのが吉ですが。 部品としてのMAX7219は売ってるところが少なく、しかも高い。秋月でも\800します。 https://akizukidenshi.com/catalog/g/gI-15312/ 大体にして8x8ドッドマトリックスモジュールはMAX7219x4発+8x8LEDx4発で約\900 Youmile MAX7219ドットLEDマトリックスMCU 8x32制御LEDディスプレイモジュールドライブ、Arduino Raspberry Pi 4 in 1用 似たような値段で4個買えるなんてなんか悔しい、ということで 「モジュールからMAX7219取り出して使えばいいんでね?」 ということで早速購入。 Youmile 2個 MAX7219 8x8ドットマトリックスシングルブルーライトMCU制御LEDディスプレイモジュール、Arduino、デュポンケーブル付きラズベリーパイ用(絶賛売り切れ中) (諸般の事情により高めのやつ買ってますが、8x8単独ユニットで安いやつで充分です) で、早速ICを取り出そう...と思ったんですが。 この手のユニットはLEDがICソケットに刺さってますのでLEDと基板は簡単に 分離できます。ということは。 「モジュール基板ごと使っちゃえばいいんでね?」 ということで試してみました。 LEDを外したユニット基板 裏面です。 今回は7セグメントx4のLEDを2発使います。 こんな感じ。 まずデーターシートから見ていきます。 OSL40562-IRデーターシートより転載 これを8発にするには、2つのLEDの同じSEGをつないでMAX7219に接続すれば OKで、一方DEGは以下の配置にします。 つまり右から0,1...7とします。上のデーターシートに惑わされないこと。 以上のことから、ピン配置は次のようになります。 配線の色は覚え書きですので無視してください。 なお、購入したユニットによってピン配置が異なることは 当然考えられるのでよく確認してください。 配線の様子。 ユニットが来るところには、細ピンの ヘッダを置いておくと何かと便利です。 MAX7219ユニットを装着 動作試験。珍しく一発OKでした。 これでクソ高いMAX7219を買わなくても済む......
イメージ
 遠足は帰宅まで(2):温湿度計の製作 4桁LEDx2発+MAX7219で8桁LEDの製作の最中、 片方のLEDの1桁目のe位置が点灯しないことが発覚。 不良LEDは差し替えるとして、差し替えたのをゴミ箱に直行させるのは忍びなく、 急遽DHT-11を使った温湿度計にすることを思い立ち、 (温湿度なら3桁あればOKですから) NANO+DHT-11+不良LEDで温湿度計を製作。 温湿度計だけですから、ダイナミック点灯でいいので MAX7917は使用せず74HC595x2発で配線。 例によってダイソーで売ってる100円のケースに収めました。 うーんいい感じ。 ケースはかなり大きめなので中身はスカスカです。 なお、今回使用したパチモノNANOはUSB-C仕様で、Aruduino IDEからアップロード できない+シリアルモニターがつながらないといった困ったちゃんでした。 この問題は鋭意解決中です。 以上です。