Ультразвуковой датчик с использованием частиц для измерения расстояния
У меня есть Raspberry Pi, работающий с агентом частиц, и я искал лучший способ запуска ультразвукового датчика. Есть ли способ, которым я облако делаю это на.ino-файле на агенте. Я получил его для работы со скриптом Python, не могу заставить его работать с Particle-агентом на пи.
Это код Python.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 17
ECHO = 27
# print "Distance Measurement In Progress"
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
# while True:
# print "Waiting For Sensor To Settle"
def main():
time.sleep(1)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150
distance = round(distance, 1)
print "dis=",distance,"'C"
# return distance
time.sleep(1)
return distance
GPIO.cleanup()
if __name__ == '__main__':
main()
Я пытался сделать это, но это не сработало. мое значение всегда равно 0. (проверил контакты, и он работает с использованием скриптов Python)
unsigned long duration;
void setup()
{
pinMode(D3, OUTPUT); // LED on D7 pin 22
// ultrasonic range finder Robotshop RB-lte-54
// GND pin goes to ground
pinMode(D2, INPUT); // echo pin 27
pinMode(D1, OUTPUT); // Trig pin 17
// VCC pin goes to VIN on the pi 5v
}
void loop(){
digitalWrite(D1, HIGH); // activate trigger
delayMicroseconds(10);
digitalWrite(D1, LOW); // de-activate trigger
duration = pulseIn(D2, HIGH); // how long until a reply?
// a blocking call so may wait a few seconds
if (duration > 2000 ){ // raw data from 200 to 16000
digitalWrite(D3, HIGH); // D7 Blue LED on if far
} else {
digitalWrite(D3, LOW); // D7 Blue LED off
}
delay(3000);
}
Заранее спасибо!