編集履歴一覧に戻る
Kodのアイコン画像

Kod が 2021年01月24日10時08分58秒 に編集

コメント無し

本文の変更

しがない19歳です。 **きっかけ** 夏休みに部屋の温度計が壊れたことをきっかけに製作することを決めました。 どうせならできるだけ小型化したいと思いました。 **機能** ・温度と湿度をLCDに表示。 ・ある条件のとき、スピーカで音を鳴らしたい。 **製作過程** とにかく小型にしたかったので小型のLCDを探した。配線も簡略化したかったのでI2C対応のものを選んだ。 マイコンは、小型で安いArduino nanoを使用した。nanoがほんとに使いやすい。 ネットで調べつつ、LCDに温度などを表示させることができた。 ここで休憩にテレビを見た。 ↓ 熱中症で沢山の人が亡くなっている。気温が低くても湿度が高いと危険らしい。知らなかった。 ネットで調べてみると環境省熱中症予防情報サイトに「暑さ指数(WBGT)」というものがあった。 この表をもとに条件文を書き、危険な時のみ警報音を鳴らすようにした。耳が聞こえない人も想定して、危険なときは「danger」とLCDに表示されるようにした。 **英語がわからない人は想定していなかった。。。。。。**

+

**プログラム** #include <DHT.h> #include<Wire.h> #include<Adafruit_GFX.h> #include<Adafruit_SSD1306.h> #define BEATTIME 150 //音を出している時間(msec) #define SPEAKER 12 //スピーカーの出力ピン番号 Adafruit_SSD1306 display(-1); const int PIN_DHT = 8; DHT dht(PIN_DHT, DHT11); void setup() { Serial.begin(9600); dht.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); } void loop() { float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); if (temperature > 28) { display.clearDisplay(); // 出力する文字の大きさ display.setTextSize(2); // 出力する文字の色 display.setTextColor(WHITE); // 文字の一番端の位置 display.setCursor(0, 0); display.print(" danger!! "); display.print("heat stroke"); display.display(); tone(SPEAKER, 330, BEATTIME) ; // ミ delay(BEATTIME) ; tone(SPEAKER, 330, BEATTIME) ; // ミ delay(BEATTIME) ; tone(SPEAKER, 0, 100) ; delay(BEATTIME) ; tone(SPEAKER, 330, BEATTIME) ; // ミ delay(300) ; tone(SPEAKER, 262, BEATTIME) ; // ド delay(BEATTIME) ; tone(SPEAKER, 330, BEATTIME) ; // ミ delay(350) ; tone(SPEAKER, 392, BEATTIME) ; // ソ delay(BEATTIME) ; tone(SPEAKER, 0, 100) ; delay(500) ; tone(SPEAKER, 196, BEATTIME) ; delay(800); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.print("Hum:"); display.print(humidity); display.println("%"); display.print("Tem:"); display.print(temperature); display.println("*C"); display.display(); delay(1500); } else { display.clearDisplay(); // 出力する文字の大きさ display.setTextSize(2); // 出力する文字の色 display.setTextColor(WHITE); // 文字の一番端の位置 display.setCursor(0, 0); display.print("Hum:"); display.print(humidity); display.println("%"); display.print("Tem:"); display.print(temperature); display.println("*C"); display.display(); delay(5000); } }