Ультразвуковой датчик с использованием частиц для измерения расстояния

У меня есть 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);  
}

Заранее спасибо!

0 ответов

Другие вопросы по тегам