テーマ:私のPC生活(7488)
カテゴリ:家電
昨日の続き。
パソコンでアナログ電圧測定をしたい。VB.netでデータ取り込み・処理をしたい。格安で。 ということでArduinoを使ってアナログ入力をすることにしました。 ![]() アルドゥイノ Arduino をはじめよう第3版対応 電子工作 プログラミング スターターキット PDF教本ダウンロード特典付き アルデュイーノ UNO R3 初心者の方のための学習キット 知育玩具 STEM教育 大量注文可 とりあえず動くようになったので、コードを書いていきます。 アナログ入力で良く見かけるスケッチ(Arduinoのプログラム)はこんな感じ。 ---- void setup(){ ---- え?これだけ? 超簡単じゃんArduinoすげえな! void setup()とvoid loop()は必須の関数で、setupで電源投入時の初期設定をしたのち、loop内の処理が延々と繰り返されます。 つまり上のコードが意味するのは、電源投入時にシリアル通信を設定したあと、A0ピンからアナログ入力を読み、値をシリアルポートに書き出し、1秒待つ、というのを電源オフまで延々と繰り返す、ということです。 ArduinoはA0~A7まで8本のアナログ入力を使うことができます。 実行すると、A0ピンの読み値が1秒毎にシリアルポートに書き出されます。 IDEのツール → シリアルモニタを立ち上げておくと読み値がどんどん表示されていきます。 おもしれー ただ、私がやりたいのは、こういう連続データ転送じゃないんですよ。 これだとシリアルポートの受信バッファが埋まってしまいますし、いつのデータかわからない(Arduinoに時計はない)です。 VB.netで、自分の好きな任意のタイミングで測定をしたいわけです。 解決方法は非常に簡単で、「PC側からコマンドを送ったときだけデータを返す(それ以外は待機)」ようにするだけです。 まずはArduinoのスケッチ ---- void setup(void){ ---- シリアルポートになにか文字が入ってきた(Arduinoの受信バッファになにかある)とき、その文字が"R"ならアナログ入力A0の読み値を書き出す ということです。 制御するvb.net側はこんな感じですかね。 SerialPort1.Open() Ardino側ではprintlnを使っているので改行コード付きで送信されており、ReadLineで読めば改行文字までの文字列が取得されます。 超簡単じゃね? ちょっとひねって、Arduino側を if(cmds =="0"){ みたいにしておけば、vb.net側で"0"や"1"を送出することで出力チャンネルを指定することもできます。 また Serial.print(5000.0*analogRead(A0)/1023); としておけば、電圧(mV単位)に変換したものを返すこともできます。 ちなみにArduinoは10ビット分解能で、入力レンジは0~5Vです。 いままでArduino面倒くさそうだなーと思ってたけど、とんだ食わず嫌いでしたね。 市販品でもAD変換ユニットは売られていますが、数万円と高価な上、専用ドライバのインストールが必要だったりします。 Arduinoならシリアル通信さえできればどんな機械でも動きますし、何より安価です。 Arduino用(もしくはラズパイ用)にセンサーやモータ、表示装置など、いろんな入出力デバイスが売られています。 今まで「別体で5V用意するのめんどくえな」と思っていたようなセンサーでも、Arduinoに5V出力あるので簡単につなげます。 あーなんか 面白いおもちゃを手に入れてしまった・・・ 「大丈夫かいな」と思うぐらい安いよね ![]() Arduino NANO 3.0と互換 CH340G+ATMEGA328Pコントロールボード 参考文献 電圧を計測してパソコンに記録する簡単な方法 https://kesoku-blog.com/?p=2508 Arduino入門 一番簡単なプログラミングは電圧測定 https://kesoku-blog.com/?p=59 C#外部機器との通信1 シリアル通信 https://kesoku-blog.com/?p=291 Arduino IDEで「シリアルポートが選択できない」「USBを認識しないとき」はドライバをインストールしよう https://www.ekit-tech.com/?p=1506 https://deviceplus.jp/arduino/arduino_f07/ Arduino UNO R4 MinimaのADコンバータの入力インピーダンスは低い https://www.jh4vaj.com/archives/40883 【電子工作】Arduino Nanoの基本仕様・ピン配列まとめ! https://burariweb.info/electronic-work/arduino-nano-specification-summary.html#i https://burariweb.info/electronic-work/arduino-learning/digital-input-pullup-pulldown.html arduino温度センサーの値をシリアル通信してvb.netアプリで受信する方法 https://アイシステム.com/blog/arduinotovbnet/ 【VB.Net】Arduinoとシリアル通信してみた~ArduinoProMini互換機~ https://dreamparadaisu.com/visualbasic_54/ ●第30回 UARTシリアル通信②:ArduinoとWindows PCの通信 https://ameblo.jp/geotechlab-workshop/entry-12626084235.html 空の制御文字を受信したときだけデータを送出させる ではごきげんよう。 お気に入りの記事を「いいね!」で応援しよう
最終更新日
2025.05.27 23:59:55
コメント(0) | コメントを書く
[家電] カテゴリの最新記事
|
|