GlauserソフトウェアのコードをPythonやJavaScriptで記述しソフトウェアを動作させることと、マイコンの一つであるArduinoなどのハードウェアをプログラミングしてハードウェアを動かすことは、どちらもPCやプログラミング言語を用いて行うという観点からは似ているように思えますが、実際には異なる点が多くあります。Vrampeさんが、自らの失敗を元に学んだことを語っています。engineerhttps://blog.athrunen.dev/learning-hardware-programming-as-a-software-engineer/まずハードウェアのプログラミングを理解するためには、ピンアウト(配置)を理解することが大切だと述べられています。同じようなボードは同じピンアウトである場合が多いですが、例えばピンの一部が制限されているなど、ピンアウト自体にはプログラミングに必要な情報が含まれていない場合があり、実際のボードの型番からボードのプラットフォームやファームウェアのピン定義を調べることも大切とのこと。Broadbentピンアウトがわかったら、どのピンがどのような役割を担っており、何に使うべきなのかを把握する必要があります。基本的なピンはデジタルピンと呼ばれ、ボタンが押されているかどうかといったオンオフを伝達する役割があります。細かい制御が必要な場合は、アナログピンを使用する必要があります。アナログピンから出力される信号はADCと呼ばれるコンバーターを利用してアナログ信号からデジタル信号へ変換され読み取られますが、変換の精度はデバイスの分解能によってまちまちです。ESP32は分解能が12bitなので、4096段階までしかデジタル信号で表現できません。アナログ信号はデジタル信号に変換されるので、本当の意味での正確な信号を出力することはできませんが、オンの状態の時間幅を変化させるPWMという手法を用いてアナログ信号を表現することができます。アナログピンはセンサーから正確なデータを取得したり、LEDを暗くしたりするために使用されます。デジタルピンとアナログピンに加えて、デバイスが通信できるようにするための通信ピンがあります。通信ピンには直接通信用のUARTやボード上の内部通信用のI2C、デバイス間通信用のSPIや1-Wireなど、いくつかのインターフェースがあります。Spencerデバイス自体で使用されるピンなのか、デバイスをコントロールするピンなのかに注意しないと、予期しない動作につながる可能性があるとのこと。間違って内蔵LEDを光らせてしまう程度なら問題ありませんが、オンボードのフラッシュメモリが故障してしまう可能性もあります。ESP32の場合は人間が触っているかどうかを検出できるタッチピンや、電圧を制御することでアナログ信号を出力できるDACもあります。ソフトウェアではプログラムの一部分を簡単に新しいものと入れ替えることが可能ですが、ハードウェアではいつも簡単にいくとは限らないとのこと。デバイス全体を一から組み上げる必要があるのと同時に、デバイスの互換性や故障する可能性の有無も確認しなければならないと述べられています。EasyEDAのようなツールやブレッドボードがあれば互換性や故障の問題を無視して調査したりテストすることが可能になります。CodeやAtomの拡張機能として提供されているPlatformIOを利用すれば、接続されたデバイスと同じようにローカルのマシンでもテストを実行したり、プログラムをデバイスにアップロードすることができます。PlatformIOhttps://platformio.org/ソフトウェアの問題によってPCが燃え始めることはまずありませんが、間違ったピンを使っていたり、不適切なタイミングでリレーを切り替えたりするなどといったハードウェアのミスは重大な被害を引き起こす可能性があります。した被害を防ぐには、慎重に設計したり、高価な部品や重要な部品にはヒューズをつけて過電圧による故障を防いだり、壊れやすい部品はソケットを用意してはんだ付けの時間を節約したりすることが大切だとVrampeさんは語っています。Keeper」の解剖&埋葬シーン森薫さん、色紙にアミルを描くネタのタレコミその他のお問い合わせ広告掲載についてGIGAZINEについて。