virt_flyのブログ -32ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑画面右はレトロフューチャーで可愛らしい17セグメント(16セグ+ドット)GaAsPディスプレイ

 

ライブラリーの追加とヘッダーファイルの宣言編

 

 

  ライブラリーはどう扱う

 

Arduino Nanoの互換機の動くことが確認できたので、いろいろと遊んでみたいと思います。

 

ただし、C言語を勉強しておらず、スケッチ(プログラム)については書き方を知らないために、できることは限られます。せいぜいスケッチ(プログラム)の借用が関の山としても、せめてライブラリーの扱い方くらいは知っておかないと困ることでしょう。

 

実例として、HPDL-1414という親指大の可愛い17セグメント(16セグ+ドット)GaAsPディスプレイの点灯を取り上げたいと思います。

 

↑HPDL-1414は、4桁・4文字、64個のキャラクタが赤色表示可能なLEDディスプレイ

 

レトロフューチャーなHPDL-1414なら、高価なニキシー管に替えて、それほど高価でなく4桁・文字(複数個つなげればそれ以上)の英数字表示が実現できます。1桁表示の単管時計で我慢するのは少々寂しく思い、Aliexpressで購入、先頃中国から届いていたものです。高価でないといっても、送料込み649円(1か月足らずで1,063円に値上がり)。生産終了になって久しいデッドストックのようですから、いつまで手に入ることでしょうか?

 

ライブラリーを追加する

 

プログラミングにはライブラリーの利用が便利です。Arduinoには多くのライブラリーがそろっているそうですから、これを使わない手はありません。

 

ライブラリーを使うには、あらかじめインストールしておく必要があります。

 

↑開いたライブラリー管理の画面で検索を実行

 

Arduino IDEのウインドウ上部のメニューにある[Tools]をクリックし、開いたドロップダウンメニューの中の[Manage Libraries...]を選ぶと、ウインドウが分割されて新たに「LIBRARY MANAGER」というライブラリーのリストを伴った枠が現れます。

 

その上部の「Filter your search」と中に書かれたボックスに、目的のライブラリーのキーワードを入力すると、検索が実行されていくつかライブラリーの候補が絞られて表示されます。今回はMarek LedworowskiさんのライブラリーHPDL1414をインストールすることにします。

 

目的のライブラリーの箇所にある[INSTALL]をクリックすれば、さらに黒い「Output」の枠が現れてインストールが始まります。

 

 

黒い枠内に「Installed 〇○○」(〇○○はライブラリー、例ではHPDL1414@3.2.0)と表示されたら、インストールは終了です。

 

インストールされたライブラリーファイルは拡張子が「.h」となっており、ヘッダーファイルというそうです。Windowsの場合は、ドキュメントフォルダーの中に生成したArduino名のフォルダ中のlibrariesフォルダー内に各種ライブラリーのフォルダーができ(今回の例ではHPDL1414)、そこに置かれています。

 

スケッチ(プログラム)の入力、ヘッダーファイルの宣言

 

ライブラリーがインストールできましたが、ライブラリー内の関数をスケッチ(プログラム)で使いたい場合は、ヘッダーファイルの宣言というのを行います(標準ライブラリーでは不要)。

 

↑ヘッダファイル宣言の例

 

既存のスケッチ(プログラム)例を見れば、頭に「# Include <〇○○.h>」(〇○○.hはライブラリーファイル名、今回の例ではHPDL1414.hとなります)と書き込まれていることがわかります。

 

↑Arduino IDEのヘッダファイル宣言の自動入力

 

なお、Arduino IDEでは、上部のメニューの[Sketch]をクリックしてプルダウンメニューを開き、次いで[Include Library]をクリックするとライブラリーのリストが表示され、目的のライブラリー名を選ぶと、自動的にスケッチにライブラリーが入力される機能があります。

 

スケッチ(プログラム)の用意ができれば、[Upload]で実行です。

 

  可愛らしいHPDL-1414を点灯させよう

 

ライブラリーもインストール済だし、ネットで見つけてきたスケッチ(プログラム)をコピペもしましたが、HPDL-1414とArduino Nano(互換機)の接続が済んでいなければ実行ができません。

 

ピン同士の接続

 

ピン同士の接続は、Marek Ledworowskiさんのライブラリーの説明によるものです。ただし、このライブラリーを使った他サイトの説明に、ピン番号と機能が一致しないものがあってまごつくことがありましたので、正しいと思われるピン番号と機能、接続の関係を図と表で記録しておきます。

 

↑HPDL-1414のピン番号

 

HDPK-1414のピン番号は、赤で示す切欠き位置から左回りに1から12です。

 

HPDL-1414
ピン番号
同左
機能
Arduino Nanoピン
1 D5 D7
2 D4 D6
3 WR A0
4 A1 A2
5 A0 A1
6 VDD 5V
7 GND GND
8 D0 D2
9 D1 D3
10 D2 D4
11 D3 D5
12 D6 D8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

↑ピン同士の接続

 

上記のとおりピン同士を接続します。

 

 

実例

 

●ファンクションテスト スケッチはLED-Anzeige HPDL1414 (turanis.de)より

 

● カウントダウン スケッチはLED-Anzeige HPDL1414 (turanis.de)より

 

 

↑Arduino Nano互換機でLチカ

 

IDEの設定と可動確認編

 

 

  IDEの初期設定はボード、マイコン、ポートの3つ

 

Arduinoの統合開発環境IDE、すなわちArduino用のプログラム作成ソフトがインストールできたので、「Arduino IDE」をダブルクリックして起動します。

 

↑インストール後、最初に起動したArduino IDEの画面

 

起動したら、さっそくスケッチ(プログラム)を入力して実行してみたいところですが、その前に初期設定が必要です。

 

↑「Select Board」と表示された箇所をクリックし、ボードとポートの指定へ

 

Arduinoにはさまざまなボードがあるため、どのボードを使うのかを指定しなければなりません。起動したArduino IDEのウインドウ画面上部の「Select Board」と書かれたボックスをクリックし、現れたメニューの最下段にある[Select other board and port]を選びます。

 

↑ボードとポートの指定画面

 

開いた「Select other board and port」の画面で、「BOARDS」と「PORTS」の2つにそれぞれ下にあるリストからボード名[Arduino Nano]とポート名としてUSBが付いた[COM9 Serial Port]をクリックしチェックを入れ、[OK]します。

 

↑3つ目は、マイコンの指定

 

初期設定の最後となる3つ目は、マイコンの指定です。IDEウインドウ上部のメニューから[Tools]を選んでクリックすると、画像のようなプルダウンメニューが開きます。

 

下の方にある「Processor:」の項には、今回「ATmega328P」がすでに指定された状態になっていました。そのために、3つ目の指定を確認しないままでも互換機を動かすことができましたが、本来は指定が必要です。互換機の中にはここを「ATmega328P(Old Bootloader)」と指定しなければ動かないものもあることを、このプルダウンメニューを開いてみていて思い出しました。

 

IDEの初期設定は、①ボード、②マイコン、③ポートの3つです。[Tools]からプルダウンメニューを開く方が、3つを一度に確認でき、また指定に入ることもできて便利です。IDEの設定は、Raspberry Pi Picoに似ていそうで結構違っています。

 

  スケッチ(プログラム)の実行例

 

Arduinoのスケッチ(プログラム)は、C言語で書かれているそうです。まだ一度も勉強したことがないので、Arduino Nanoの互換機がうまく動いてくれるかどうかを確かめるのは、できあいのスケッチ(プログラム)を借りて確かめるしかありません。

 

Arduino IDEには、あらかじめ組み込まれているプログラム例があり、メニューの[File]から[Examples]を選ぶとビルト・イン・イグザンプルのカテゴリーが表示されて、これらのプログラムにたどり着けるようになっています。

 

↑Built-in examplesから「Blink」名のスケッチを選択

 

今回は、簡単そうな[01.Basics]から[Blink]を選んで、実行させることにしました。

 

↑ビルと・イン・イグザンプルからスケッチ例を選択したら、後は実行

 

スケッチ例として「Blink」を選択したら、Arduino IDEの画面にプログラムが表示されます。

 

スケッチ(プログラム)の実行は、上部にある「→」マークの[Upload]をクリックすると始まるようです。アップロードというのは、パソコンからArduino Nanoのフラッシュメモリにスケッチ(プログラム)を転送という意味なのでしょうね。

 

Arduino Nano互換機に内蔵されたLED、画面て外部に接続したLEDが、参考例のBlinkのスケッチ(プログラム)にもとづき点滅。あるいは点滅間隔を書き換えたスケッチ(プログラム)を反映して点滅させることができました。

 

USBケーブルをパソコンから抜去し、乾電池式のUSBチャージャーにつなぎ替え、Arduino Nano互換機単独でスケッチを実行した場合でも間違いなくLEDを点滅させることができました(冒頭の写真)。

 

互換機は、ブートローダーが書き込まれていないものが多いと聞き、また今回使用した互換機の販売元のAmazonサイトを見ると、おかしな日本語で「ブートローダーがいる」ようなことが書いてあり、てっきりブートローダーは書き込まれていないものと思っていたのですが、これはどうしたことでしょう。

 

結果は、スケッチ(プログラム)とおりに互換機が動いたわけですから、この互換機にはブートローダーが書き込まれていたと考えればよいのでしょうか?

↑2個セットで購入していたArduino Nanoの互換機

 

互換機のドライバーとIDEのインストール編

 

  やる気がそがれる値上がり

 

物価の高騰の折、無駄遣いはやめようと言いながら、舌の根の乾かぬうちにもう次の商品をポチっています。

 

それでも、Raspberry Pi ZeroからRaspberry Pi Picoへ、高いものから安いものへとシフトはしています。さらに安く抑えるために、ATtiny85でも使おうかとも。1万円を超えたRaspberry Pi 4はもとより、2千円以上の買い物には余程の勇気が必要な私には、もうPi Zeroにも手が出せません。

 

しかし、安いといってもPicoは770円。Raspberry Pi Zeroが発売当初550円だったことを思うと、何か損な気分。考えてみれば、ATtiny85だって、390円(マルツオンライン)ほどとPicoよりは安いにしても、以前は100円だか130円と聞くと、なんだかむなしくなって電子工作する気が失せそうになります。

 

車を欲しがらなくなったように、電子工作も金持ちの道楽か何かのように思ってしなくなる人が増えるのでしょうか。経済が停滞し賃金は据え置かれたままである以上、日本人は高い外国製品を指を加えながら見ているしかないのは自己責任。いやなら海外移住しろってか。甲斐性のある人はとっくに出ていってますけど。

 

甲斐性なしは仕方がないので、Aliexpressで安いATtiny85を探すことにします。2個で送料込み409円(昨日までは407円。優柔不断が情けない)。

 

 

 

  ATtiny85を使うのはArduinoを知ってから

 

AVR/ATtinyシリーズは、Microchip(旧ATMEL)の8ビットRISCベースの1チップマイコンで、価格帯や手軽さからPICと並ぶ人気なんだそうです。ArduinoもAVRマイコンを使っています。

 

8ピンのATtiny85がどれほど使えるかは、実際にさわってみないことにはわかりません。Arduino IDEでスケッチ(プログラム)を書き込むことでArduinoとして動かすことができるということなので、まずはArduinoから勉強をはじめることにします。

 

手元には一昨年購入していたAruduino Nanoの互換機がありました。購入時は2個で999円、現在1,850円とこちらもずいぶん値上がりしています。これが使えるかどうかが問題です。

 

 

互換機ではブートローダー(注参照)が書き込まれていないことが多いといわれます。もし、そうならArduino UnoなりArduino Nanoの正規品を買うか、書き込み機を買う必要が出てくるわけです。

 

出費も痛いですが、少々面倒なことが、これまで使わずにいた理由の大半です。もう、当たって砕けるしかありません。

 

以下、Arduino Nanoを使えるようにするためにWindows上で必要な作業のメモです。

 

ドライバーをインストールする

 

使用するArduino Nanoの互換機が認識されるように、まずドライバーをインストールする必要があります。

 

販売元のAmazonの当該ページに書かれたリンク先からドライバーをダウンロードするのですが、かなり古いものでWindows11ではインストールができませんでした。

 

ようやく古いのに気づきネットで検索。互換機のドライバーのダウンロード元にふれたサイトを探し、WCHというサイトから得たドライバーをインストールしたところ、無事認識されました。ただし、Windowsでの話であり、Ubuntuでは今回コンパイル&ビルドに成功していません。

 

以下に、Windowsでの手順を簡単に記します。

 

WCHというサイトにアクセスし、首页(ホーム)の上部のメニューバーの[服务支持]をクリックして開いたドロップダウンメニューから[资料下载]を選択。開いたページを少しスクロールアップして[驱动程序]を見つけてクリック。OSにあったドライバーファイルを選び、次に開いた画面で[下载]をクリックしてダウンロードを開始します。

 

↑中華製互換機のほとんどは、ここのドライバーが使えるようです

 

ダウンロードしたファイル、CH3415SER.ZIPを解凍し、生成したCH341SERフォルダ内の「SETUP.EXE」をクリックして実行。次の画面で[インストール]をクリックし、「Driver install success!」と表示されれば、ドライバーのインストールは完了です。

 

↑ドライバーのインストール画面

 

Arduino IDEをインストールする

 

Arduinoの統合開発環境であるArduino IDEを、パソコンにインストールします。

 

Arduinoのサイトにアクセスし、[Ξ](ハンバーガーメニュー)から[SOFTWARE]をクリック。次いで、開いたダウンロードのページにある目的のArduino IDEの右側に表示されているダウンロードオプションからOSを選択します。

 

↑ArduinoのサイトのIDEのダウンロードのページ

 

新たに「Support the Arduino IDE」と表示されたダイアログが開きますが、[JUST DOWNLOAD]をクリックし、ダウンロードを開始します。

 

ダウンロードしたファイル、Windowsではarduino-ide_2.1.0_Windows_64bit.exeをクリックしてインストールを実行します。Ubuntuについては省略します。

 

↑はじめて起動した直後のArduino IDEの画面

 

 

注)Arduino Unoが採用したスケッチの書き込み方法は、フラッシュメモリに小さなブートローダを書きこんでおき、パソコンのUSBポートから送られてくるスケッチの情報を、シリアルインターフェースで取り込み、ブートローダがフラッシュメモリにスケッチを転送してから実行するというものです。(Arduinoのブートローダって何?より)