距離センサーとOLED
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
<図>

OLEDスクリーンの使い方
これについての私の以前のチュートリアルがあります:
-
#includes
および#defines
、setup()を実行する前に:
#include // OLED用の厄介なライブラリがすべて必要です#include #include #include #define OLED_RESET 4 //これはリセットピンです。IMNOTUSINGITAdafruit_SSD1306display(OLED_RESET);
-
setup()
内 機能:
display.begin(SSD1306_SWITCHCAPVCC、0x3C); // I2Cアドレスで初期化します0x3C(128x64)display.clearDisplay(); //開始する前に表示をクリアします
-
loop()
内 機能:
display.setCursor(22,20); // x、y座標display.setTextSize(3); //テキストのサイズdisplay.setTextColor(WHITE); // BLACKと書くと、物事が消去されますdisplay.println(distance); //変数display.setCursor(85,20);を出力します//サイズを設定し、単位(cm / in)を出力しますdisplay.setTextSize(3); #ifdef CommonSenseMetricSystem // if theres#define CommonSenseMetricSystem display.println( "cm"); //「cm」をoled#endif #ifdef ImperialNonsenseSystem // if there´s#define ImperialNonsenseSystem display.println( "in");に出力します。 //「in」をoledに出力します#endifdisplay.display(); //実際にすべてのデータを表示する必要がありますdelay(500); // wait!、人間の速度display.clearDisplay(); //ディスプレイを黒くクリア
HC-SR04超音波範囲の使用方法
ここにデータシートがあります。HCモジュールはパルスのバーストを送信してから、超音波のエコーが元の場所に戻るまでにかかる時間を測定します。
- HCトリガーのパルスを作成すると、HCはパルスバーストを実行します:
長い期間、距離; //私たちの最愛の変数digitalWrite(trigPin、LOW); // PULSE ___ | --- | ___ delayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);
- PulseIn()はまれに使用される関数であり、ステップの長さを高(__----__)または低(----___---)で検出します
#ifdef
を使用します 必要な部分だけをコンパイルするためです。
duration =pulseIn(echoPin、HIGH); // #ifdef CommonSenseMetricSystem distance =(duration / 2)/ 29.1; #endif #ifdef ImperialNonsenseSystem距離=(期間/ 2)/ 73.914; #endif
- これは、Oledが機能していない場合のデバッグ用です:
Serial.println(distance); //デバッグ
コード
- 距離超音波の測定と表示
距離超音波測定および表示 Arduino
メインコード//CODEBYJavierMuñozSáez、2016年5月11日[email protected]への質問#include#include #include #include #define CommonSenseMetricSystem //#define ImperialNonsenseSystem#define trigPin 13#define echoPin 12#define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET); void setup(){Serial.begin(9600); pinMode(trigPin、OUTPUT); pinMode(echoPin、INPUT); display.begin(SSD1306_SWITCHCAPVCC、0x3C); // I2Cアドレスで初期化します0x3C(128x64)display.clearDisplay();} void loop(){long duration、distance; digitalWrite(trigPin、LOW); // PULSE ___ | --- | ___ delayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);期間=pulseIn(echoPin、HIGH); #ifdef CommonSenseMetricSystem距離=(期間/ 2)/ 29.1; #endif #ifdef ImperialNonsenseSystem距離=(期間/ 2)/ 73.914; #endif display.setCursor(22,20); // oled display display.setTextSize(3); display.setTextColor(WHITE); display.println(distance); display.setCursor(85,20); display.setTextSize(3); #ifdef CommonSenseMetricSystem display.println( "cm"); #endif #ifdef ImperialNonsenseSystem display.println( "in"); #endif display.display(); delay(500); display.clearDisplay(); Serial.println(distance); //デバッグ}
回路図

製造プロセス