Arduino UNO R3 でCO2センサを3セット接続測定 [arduino]
これまでソフトウェアシリアル通信は、1組しか利用したことはありませんでしたが、今回3組を利用し、CO2センサ3セットを使って5秒間隔でシリアルモニタ画面にセンサ値を表示させるスケッチを作成してみました。
複数のソフトウェアシリアルは、Arduino UNO R3の場合、どこのデジタルI/O(D0~D19)でも設定できると記載してあったのですが、同時に使えることはなく、切り替えて使うことが判明しました。
つまり、切り替えしないと使えないようです。
よって、その切替したスケッチをメモとして残しておきます。
===========================
#include
SoftwareSerial CO21(4,5), CO22(6,7), CO23(8,9);
void setup() {
Serial.begin(38400);
}
void loop() {
Serial.print("--CO21 > " + String(sub_co2(CO21)) + " ppm");
Serial.print(", CO22 > " + String(sub_co2(CO22)) + " ppm");
Serial.println(", CO23 > " + String(sub_co2(CO23)) + " ppm");
}
int sub_co2(SoftwareSerial CO2){
int val=0;
uint32_t tim=millis();
String str;
CO2.begin(38400);
while(!CO2.available() && (millis()-tim)<3000);
str=CO2.readStringUntil('\n');
if(str.indexOf("ppm")) { //文字列検索
str=str.substring(0,str.length()-4); //文字列からの ' PPM'削除
str.trim(); // 空白文字削除
val = str.toInt(); // 文字数字の整数化
}
while(millis() -tim<5000);
return val;
}
===========================
結果は、添付写真のとおりに出てきました。
複数のソフトウェアシリアルは、Arduino UNO R3の場合、どこのデジタルI/O(D0~D19)でも設定できると記載してあったのですが、同時に使えることはなく、切り替えて使うことが判明しました。
つまり、切り替えしないと使えないようです。
よって、その切替したスケッチをメモとして残しておきます。
===========================
#include
コメント 0