Я пытаюсь управлять малиновым пи через веб-сокеты.Я нашел похожий проект и строил свой проект вокруг него.Мне удалось заставить все работать, кроме датчика расстояния.
tank.getDistance = function () {
async.parallel([
gpio.write(trig,0),
gpio.write(trig,1),
gpio.write(trig,0),
]);
var start,stop;
while(gpio.read(echo) == 0){start = Date.now();}
while(gpio.read(echo) == 1){stop = Date.now();}
var distance = ((stop-start)/1000.0)*17000
console.log("distance: "+ distance);
};
Вот как я пытаюсь считывать данные с ультразвукового датчика.Я проверил эту логику в Python, и она работала там.
socket.on('keydown', function (dir) {
switch (dir) {
case 'up':
tank.moveForward();
console.log("forward");
tank.getDistance();
break;
это где я вызываю функцию.Но каждый раз, когда я вызываю эту функцию, я получаю
/home/pi/marinaBot/marinaBot/node_modules/rpi-gpio/rpi-gpio.js:286
throw new Error('A callback must be provided')
^
Error: A callback must be provided
at Gpio.read.input (/home/pi/marinaBot/marinaBot/node_modules/rpi-gpio/rpi-gpio.js:286:19)
at Object.tank.getDistance (/home/pi/marinaBot/marinaBot/app.js:78:14)
, не уверенный, почему это происходит, потому что я ничего не возвращаю.Я пытался использовать другие ультразвуковые библиотеки, такие как «r-pi-usonic», но я не понимаю его настройки.Есть идеи?Просто начинаю изучать NodeJS.это может быть что-то очень простое.