前提・実現したいこと
Arduinoを使ってセンサで物質の濃度を計測しながら、DCファンを同時に回したいと考えております。
物質の濃度はシリアルモニタ上に1秒に1回表示されるようにしています。
そこにDCファンのコードを追加するとdelay()が増えてしまう関係でうまく動きません。
どうかよろしくお願いいたします。
発生している問題・エラーメッセージ
発生している問題は、
そのまま二つのプログラムを合わせると、センサが計測している間はファンが一瞬止まり、
ファンが動いている時は計測が止まるので、1秒に1回の計測ができずにややずれ込んでしまうことです。
該当のソースコード
言語名 Arduino言語
//まずここからはセンサで物質濃度を測定して、1秒に1回シリアルポートに結果を表示するというプログラムです。
#include <Wire.h>
#include "MutichannelGasSensor.h"
void setup() {
Serial.begin(115200);
randomSeed("COM3");
gas.begin(0x04);//the default I2C address of the slave is 0x04
gas.powerOn();
Serial.println(gas.getVersion());
}
void loop() {
float c1=gas.measure_NH3();//青
float c2=gas.measure_CO();//水色
float c3=gas.measure_NO2();//緑
float c4=gas.measure_C3H8();//黒
float c5=gas.measure_C4H10();//紫
float c6=gas.measure_CH4();//赤
float c7=gas.measure_H2();//グレー
float c8=gas.measure_C2H5OH();//黄
if(c1>0)
Serial.print(c1);
else Serial.print("invalid");
Serial.print(",");
if(c2>0)
Serial.print(c2);
else Serial.print("invalid");
Serial.print(",");
if(c3>0)
Serial.print(c3);
else Serial.print("invalid");
Serial.print(",");
if(c4>0)
Serial.print(c4);
else Serial.print("invalid");
Serial.print(",");
if(c5>0)
Serial.print(c5);
else Serial.print("invalid");
Serial.print(",");
if(c6>0)
Serial.print(c6);
else Serial.print("invalid");
Serial.print(",");
if(c7>0)
Serial.print(c7);
else Serial.print("invalid");
Serial.print(",");
if(c8>0)
Serial.println(c8);
else Serial.print("invalid");
Serial.println(" ");
delay(1000);
}
///ここからはDCファンを動かすプログラムです。この二つを合わせて、同じテンポで物質濃度を計測しながらDCファンを回し続けるようなプログラムにしたいです。
void setup() {
pinMode(9,OUTPUT);// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(9,HIGH);
delay(100);
digitalWrite(9,LOW);
delay(100);
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答6件
あなたの回答
tips
プレビュー