アラーム、LCD、温度を備えた超音波センサー
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
このプロジェクトは、私が水槽の水位について必要な情報を与えてくれます。レベルが低い場合、緑色のLEDが点灯します。レベルが中程度の場合、黄色のLEDが点灯します。レベルがHIGHになると、赤いLEDがブザー音と同時に点滅します。センサーから水位までの距離は超音波センサーによって測定され、そのタンク内の温度とともにLCDに印刷されます。このプロジェクトは、より大きなプロジェクトの一部です。 2番目の部分は、ポンプがポンピングしていることを示すために、円形に取り付けられた6つの追跡LEDです。参照:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d73番目の部分はポンプを始動しますレベルが高い場合はポンプを停止し、レベルが低い場合はポンプを停止します。(建設中)実際のプロジェクトでは、防水超音波センサーを使用していますが、これによって配線やコードが変更されることはありません。センサーが濡れている(湿度が高い)ときに読み取り値がどうなるかわからないので、このプロジェクトは情報を提供するだけで、3番目のプロジェクトはポンプの動作に使用され、磁気接点によって実行されます。
#include // Load Liquid Crystal Library#include #include #define ONE_WIRE_BUS 6 //データワイヤはArduinoOneWireのピン6に接続されていますoneWire(ONE_WIRE_BUS); //任意のOneWireデバイスと通信するようにoneWireインスタンスを設定します//(Maxim / Dallas温度ICだけでなく)DallasTemperatureセンサー(&oneWire); // oneWire参照をDallasTemperature.LiquidCrystal LCD(12、11、5、4、3、2);に渡します。 // LCDint trigPin =9という液晶オブジェクトを作成します。 // Arduinoピンに接続されたセンサートリップピン9intechoPin =7; // Arduinoピンに接続されたセンサーエコーピン7intmyCounter =0; //変数myCounterを宣言し、0floatpingTimeに設定します。 // pingがセンサーからターゲットおよびreturnfloattargetDistanceに移動する時間。 //ターゲットまでの距離(センチメートル単位)float speedOfSound =776.5; //音速(マイル/時)void setup(){Serial.begin(9600); pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); LCD.begin(16、2); // Arduinoに16x2 LCD LCDを開始するように指示します.setCursor(0,0); // LCDカーソルを左上隅、列0、行0に設定LCD.print( "Distance:"); //最初の行にメッセージを出力sensors.begin(); //ライブラリを起動しますpinMode(8、OUTPUT); //ピン8、10、13出力ピンpinMode(10、OUTPUT); pinMode(13、OUTPUT);} void loop(){digitalWrite(trigPin、LOW); //トリガーピンを低く設定delayMicroseconds(2000); //信号を解決させますdigitalWrite(trigPin、HIGH); // trigPinを高く設定delayMicroseconds(15); //ハイ状態での遅延digitalWrite(trigPin、LOW); // pingが送信されましたdelayMicroseconds(10); //ハイ状態での遅延pingTime =pulseIn(echoPin、HIGH); //マイクロセコンドのpingTimepingTime =pingTime / 1000000; // pingTimeを1000000(1秒あたりのマイクロ秒)で割って秒に変換しますpingTime =pingTime / 3600; // pingtimeを3600(1時間の秒数)で割って時間に変換しますtargetDistance =speedOfSound * pingTime; //音速をキロメートル/時として宣言したため、これはマイル単位になります。センチメートルに戻すつもりですがtargetDistance =targetDistance / 2; // pingはターゲットに移動し、ターゲットから戻ることを忘れないでください。したがって、実際のターゲット距離を2で割る必要があります。 targetDistance =targetDistance * 160934.4; // 160934,4個のsensors.requestTemperatures();を掛けて、マイルをセンチメートルに変換します。 //コマンドを送信して温度の読み取り値を取得しますLCD.setCursor(10、0); //カーソルを最初の行の10列目に設定しますLCD.print( ""); //空白を印刷して行をクリアしますLCD.setCursor(10、0); //カーソルを最初の行の10列目に再度設定しますLCD.print((int)(targetDistance + 0.5)); //測定距離を印刷LCD.print( "cm"); //ユニットを印刷しますLCD.setCursor(0、1); //カーソルを2行目の最初の列に設定しますLCD.print( ""); //空白を印刷して行をクリアしますLCD.setCursor(0、1); //カーソルを2行目の最初の列に再度設定if(targetDistance> 40){LCD.print( "LEV LOW"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } else if(targetDistance <40 &&targetDistance> 20){LCD.print( "LEV MED"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } else(targetDistance <20); {LCD.print( "LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } delay(2000); if(targetDistance> 40){digitalWrite(13、HIGH); //緑色のLEDがオン} else {digitalWrite(13、LOW); //緑色のLEDがオフ} if(targetDistance <40 &&targetDistance> 20){digitalWrite(8、HIGH); //黄色のLEDがオン} else {digitalWrite(8、LOW); //黄色のLEDがオフ} if(targetDistance <20){digitalWrite(10、HIGH); //赤色LEDオン遅延(2000); digitalWrite(10、LOW); //赤色LEDがオフ} else {digitalWrite(10、LOW); //赤色LEDがオフ}}
コード
- 無題のファイル
無題のファイル C / C ++
#include//液晶ライブラリのロード#include #include #define ONE_WIRE_BUS 6 //データワイヤはArduinoOneWire oneWire(ONE_WIRE_BUS ); //任意のOneWireデバイスと通信するようにoneWireインスタンスを設定します//(Maxim / Dallas温度ICだけでなく)DallasTemperatureセンサー(&oneWire); // oneWire参照をDallasTemperature.LiquidCrystal LCD(12、11、5、4、3、2);に渡します。 // LCDint trigPin =9という液晶オブジェクトを作成します。 // Arduinoピンに接続されたセンサートリップピン9intechoPin =7; // Arduinoピンに接続されたセンサーエコーピン7intmyCounter =0; //変数myCounterを宣言し、0floatpingTimeに設定します。 // pingがセンサーからターゲットおよびreturnfloattargetDistanceに移動する時間。 //ターゲットまでの距離(センチメートル単位)float speedOfSound =776.5; //音速(マイル/時)void setup(){Serial.begin(9600); pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); LCD.begin(16、2); // Arduinoに16x2 LCD LCDを開始するように指示します.setCursor(0,0); // LCDカーソルを左上隅、列0、行0に設定LCD.print( "Distance:"); //最初の行にメッセージを出力sensors.begin(); //ライブラリを起動しますpinMode(8、OUTPUT); //ピン8、10、13出力ピンpinMode(10、OUTPUT); pinMode(13、OUTPUT);} void loop(){digitalWrite(trigPin、LOW); //トリガーピンを低く設定delayMicroseconds(2000); //信号を解決させますdigitalWrite(trigPin、HIGH); // trigPinを高く設定delayMicroseconds(15); //ハイ状態での遅延digitalWrite(trigPin、LOW); // pingが送信されましたdelayMicroseconds(10); //ハイ状態での遅延pingTime =pulseIn(echoPin、HIGH); //マイクロセコンドのpingTimepingTime =pingTime / 1000000; // pingTimeを1000000(1秒あたりのマイクロ秒)で割って秒に変換しますpingTime =pingTime / 3600; // pingtimeを3600(1時間の秒数)で割って時間に変換しますtargetDistance =speedOfSound * pingTime; //音速をキロメートル/時として宣言したため、これはマイル単位になります。センチメートルに戻すつもりですがtargetDistance =targetDistance / 2; // pingはターゲットに移動し、ターゲットから戻ることを忘れないでください。したがって、実際のターゲット距離を2で割る必要があります。 targetDistance =targetDistance * 160934.4; // 160934,4個のsensors.requestTemperatures();を掛けて、マイルをセンチメートルに変換します。 //コマンドを送信して温度の読み取り値を取得しますLCD.setCursor(10、0); //カーソルを最初の行の10列目に設定しますLCD.print( ""); //空白を印刷して行をクリアしますLCD.setCursor(10、0); //カーソルを最初の行の10列目に再度設定しますLCD.print((int)(targetDistance + 0.5)); //測定距離を印刷LCD.print( "cm"); //ユニットを印刷しますLCD.setCursor(0、1); //カーソルを2行目の最初の列に設定しますLCD.print( ""); //空白を印刷して行をクリアしますLCD.setCursor(0、1); //カーソルを2行目の最初の列に再度設定if(targetDistance> 40){LCD.print( "LEV LOW"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } else if(targetDistance <40 &&targetDistance> 20){LCD.print( "LEV MED"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } else(targetDistance <20); {LCD.print( "LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print( "C"); } delay(2000); if(targetDistance> 40){digitalWrite(13、HIGH); //緑色のLEDがオン} else {digitalWrite(13、LOW); //緑色のLEDがオフ} if(targetDistance <40 &&targetDistance> 20){digitalWrite(8、HIGH); //黄色のLEDがオン} else {digitalWrite(8、LOW); //黄色のLEDがオフ} if(targetDistance <20){digitalWrite(10、HIGH); //赤色LEDオン遅延(2000); digitalWrite(10、LOW); //赤色LEDがオフ} else {digitalWrite(10、LOW); //赤色LEDがオフ}}
回路図
lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz 製造プロセス