初めて投稿させて頂きます
ご教示頂きたく投稿しました。
さて、現在、温湿度センサー(プログラム済)のデータをwifi経由でambientへ送信するため、書籍を読みながら対応しております。
その中で温湿度センサーのプログラムを下記のように作成しました。
#include "Wire.h"
#define SI7021_ADDR 0x40
#define SI7021_TEMP_HOLD 0xE3
#define SI7021_TEMP_NOHOLD 0xF3
#define SI7021_RH_HOLD 0xE5
#define SI7021_RH_NOHOLD 0xF5
#define SI7021_RESET 0xFE
void reset(void){
Wire.beginTransmission(SI7021_ADDR);
Wire.write(SI7021_RESET);
Wire.endTransmission();
delay(50);
}
float readHumidity(void){
Wire.beginTransmission(SI7021_ADDR);
Wire.write(SI7021_RH_NOHOLD);
Wire.endTransmission();
while(true){
if(Wire.requestFrom(SI7021_ADDR,3)==3){
uint16_t hum = Wire.read()<<8|Wire.read();
uint8_t chxsum = Wire.read();
return(float)hum*125/65536 - 6;
}
delay(6);
}
}
float readTemperature(void){
Wire.beginTransmission(SI7021_ADDR);
Wire.write(SI7021_TEMP_NOHOLD);
Wire.endTransmission();
while(true){
if(Wire.requestFrom(SI7021_ADDR,3)==3){
uint16_t temp = Wire.read()<<8|Wire.read();
uint8_t chxsum = Wire.read();
return(float)temp * 175.72/65536 - 46.85;
}
delay(6);
}
}
void setup(){
Serial.begin(115200);
while(!Serial);
Wire.begin(21,22);
reset();
}
******************************************************
#include "WiFi.h"
const char* ssid = "SSID";//SSIDには使用wifiのSSID記入
const char* password = ""password;//passwordには使用wifiのpass記入
void setup(){
WiFi.begin(ssid,password);
while(WiFi.status()!=WL_CONNECTED){
delay(500)
Serial.print(".");
}
Serial.printIn("WuFi connected");
Serial.print("IP address:");
Serial.printIn(WiFi.localIP());
}
**********************************************
void loop() {
float temp = readTemperature();
float humid = readHumidity();
Serial.printf("temp;%.2f,humid:%.2f/r/n",temp,humid);
delay(1000);
}
その中で、************部分の内容で質問です。
*****内を除いた箇所では温湿度センサーを作動させることができましたが、そのプログラムとwifiを接続するプログラムの配置がよくわからず、下記の質問にご回答頂きたいです。
①wifiのプログラム と 温湿度センサーのプログラムを同時に組むと,void setupが重複してしまいます。
コンパイルしていてもエラーが出るため、おかしいとは思うのですが、このような場合どうしたらよいのでしょうか?
②また、仮に重複してはいけない場合、どのように対応したらよいでしょうか?
ご教示頂ければ幸いです
ツイート | ![]() |