○使用部品
○超音波距離センサー制御端子
Arduino 0~13、A0~A5
Raspberry Pi(※) GPIO04~026
○基本回路/プログラム
◇Arduino
・PingFirmataのインストール
Arduinoで以下の超音波距離センサーモジュールを使用するには、「PingFirmata」を書き込む必要があります。
・SR04 or HCSR04
・SRF05
・Parallax Ping
・SeeedStudio Ultrasonic Range
・Grove - Ultrasonic Ranger
「PingFirmata」のソースをコピーして、Arduino IDEから書き込んでください。
・配線
・プログラム
http://johnny-five.io/examples/proximity-hcsr04/(デジタル入力端子使用の場合)
http://johnny-five.io/examples/proximity-hcsr04-analog/(アナログ入力端子使用の場合)
◇Raspberry Pi
Raspberry Piでは、Johnny-Fiveを使って超音波距離センサーモジュールを制御することができないため、代替えの方法を紹介します。
・「r-pi-usonic」と「math-statistics」モジュールのインストール
次のように操作して、「r-pi-usonic」と「math-statistics」モジュールをインストールします。
①ターミナルを起動し、作業用のフォルダに移動します。
②「npm install r-pi-usonic math-statistics [Enter]」と入力します。
・配線
・プログラム
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var usonic = require('r-pi-usonic'); | |
var statistics = require('math-statistics'); | |
var print = function (distances) { | |
var distance = statistics.median(distances); | |
process.stdout.clearLine(); | |
process.stdout.cursorTo(0); | |
if (distance < 0) { | |
process.stdout.write('Error: Measurement timeout.\n'); | |
} else { | |
process.stdout.write('Distance: ' + distance.toFixed(2) + ' cm'); | |
} | |
}; | |
var initSensor = function (config) { | |
var sensor = usonic.createSensor(config.echoPin, config.triggerPin, config.timeout); | |
console.log('Config: ' + JSON.stringify(config)); | |
var distances; | |
(function measure() { | |
if (!distances || distances.length === config.rate) { | |
if (distances) { | |
print(distances); | |
} | |
distances = []; | |
} | |
setTimeout(function () { | |
distances.push(sensor()); | |
measure(); | |
}, config.delay); | |
}()); | |
}; | |
var echoPin = 24; // GPIO24(18pin) | |
var triggerPin = 23; // GPIO23(16pin) | |
var timeout = 750; // μs | |
var delay = 60; // ms | |
var rate = 5; // per sample | |
usonic.init(function (error) { | |
if (error) { | |
console.log("error"); | |
} else { | |
initSensor({ | |
echoPin: echoPin, | |
triggerPin: triggerPin, | |
timeout: timeout, | |
delay: delay, | |
rate: rate | |
}); | |
} | |
}); |
0 件のコメント:
コメントを投稿