距離を測る
距離計は、相手に光を当てて反射して帰ってくる時間で距離を測ることができるんだ。
準備するもの
名前 | 仕様 |
---|---|
マイコン | Arduino UNO |
距離計 | Sharp 製 Infrared Proximity Sensor Short Range – Sharp GP2D120XJ00F |
回路図を示す。
arduino_distance-sensor-fig1
電圧と距離の関係
arduino_distance-sensor-fig2
変換表
区間 (v) | 変換式 |
---|---|
Arduino sketch
#define ds_pin 0 // Pin to which the distance sensor is connected #define ds_scaledResolution (5/1024) #define ds_valueAt50 900 // The value the sensor returns at 50mm distance #define ds_valueAt200 200 // The value the sensor returns at 200mm distance int ds_value; // Integer to hold distance sensor’s reading float ds_scaledValue; // Distance sensor’s scaled value float volt; float L; void setup () { Serial.begin (9600); // Initiates serial communication at 9600 baud } float v2l(float v) { float l; if (v >= 2.0) { l = -2.86 * v + 11.71; } else if (v >= 1.4) { l = -5.0 * v + 16.0; } else if (v >= 1.05) { l = -8.57 * v + 21.0; } else if (v >= 0.85) { l = -20.0 * v + 33.0; } else if (v >= 0.65) { l = -20.0 * v + 33.0; } else if (v >= 0.56) { l = -55.56 * v + 56.11; } else if (v >= 0.42) { l = -35.71 * v + 45.0; } else if (v >= 0.32) { l = -100.0 * v + 72.0; } else { l = 9999; // NG } return l; } void loop () { ds_value = analogRead (ds_pin); // Reads the distance sensor volt = (ds_value * 5.0) / 1024; L = v2l(volt); // Serial.println(volt); if (L == 9999) { Serial.print("NG!"); } else { Serial.println( L); } //Serial.println((int) ds_scaledValue); delay(500); // Delay of 500ms }