投稿

RTC DS1302が動かない:動作が変なとき

イメージ
 aitendoさんの福袋は毎回買ってるんですが、その中にDS1302キットがちょくちょく入ってまして、せっかくだからと組み立て使っているわけなんですが、 動作が変なんです。まず時刻が設定できない。設定してもカウントアップしないなど、動作が不安定で参ってました。 困ったときのデーターシートですが、これ以上簡単にできないというぐらい簡単で完全に手詰まり状態。どうすりゃいいのよ?と思ってたら、ふと「各ピンプルアップされてない...」ということに気づき、さっそく実験。 仮配線! 各ピン(CE, I/O, SCLK)に4.7kΩのプルアップを入れたところ、正常に動きましたとさ。普通なら当然pinModeでINPUT_PULLUPとするところですが、今回はDS1302ドライバに丸投げしてたので誰がプルアップするのかが曖昧になってましたという反省の弁。 ちなみにDS1302はINT信号はないわ誤差が大きいと言う評判だわで散々ですが、電波|GPS|NTP時計のバックアップにする予定ですので無問題だと思ってます。 以上です。

ATtiny202で7セグメントLED(SPI接続)

イメージ
 ほぼ覚書。 ATTiny202で7セグを使うとき、大人しくI2Cでやれば良いものを、2桁しか使わないので秋月電子の 赤色7セグメントLEDシリアルドライバキット(DIP化キット) を2発使ってやってみようということになってブレッドボードで組み立て、秋月さんのスケッチ例を参考に書き込みを行いましたが見事に動かない。あれこれいじってたらふとATtiny202のピンアサイン表を見て、[SCK]とか[MOSI]とかの文字が。だいたいにしてピンは適当に割り当ててたんですが、ピンアサイン通りにしたら見事動いたという言う話。 以下スケッチ例の変更点。 //ARDUINO UNO //AE-7SEG-BOARD * 2 //SCK D13 //LATCH D10 //SDI D11 #include<SPI.h> int sck = 4; //SCK ピン番号7 int latch = 1; //ピン番号3 int sdi = 2;  //MOSI ピン番号4 とりあえずは動きました。

(画像もコードもなし)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を大量に仕込んだんですが。 使われないままのデッドストックを引っ張り出して来ましたが、 まー暗い。こういったのも技術の進歩はあるもんですね。 以上です。