Arduino: ультразвуковой и исполнительный механизм работают вместе - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над проблемой, когда ультразвуковой датчик и привод подключаются к плате Arduino.Мне нужно сделать так, чтобы, когда ультразвуковой датчик обнаруживал что-то в пределах 10 см, он выдвигал привод, а затем втягивал его на всего 1 секунду.

Однако, каков мой кодделает сейчас, полностью втягивает привод.Я не уверен, почему мой код вызывает такое поведение. Как мне изменить мой код, чтобы привод отводился только на 1 секунду?

Код:

/*
Actuator -->> PIN 32,34; ultrasonic -->> PIN Trig = 3, Echo = 7
*/

// defines pins numbers
const int trigPin = 3;
const int echoPin = 7;
const int relay1 = 32;    // Arduino pin that triggers relay #1
const int relay2 = 34;    // Arduino pin that triggers relay #2
const int threshold = 10; // An arbitrary threshold level that's in the 
                          // range of the digital input

// defines variables
long duration;
int distance;

void setup() {
    pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
    pinMode(echoPin, INPUT);  // Sets the echoPin as an Input
    pinMode(relay1, OUTPUT);  // Set pinMode to OUTPUT for the relay pin
    pinMode(relay2, OUTPUT);  // Set pinMode to OUTPUT for the relay pin
    Serial.begin(9600);       // Starts the serial communication
}

void loop() {
    // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);

    // Sets the trigPin on HIGH state for 10 micro seconds
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    // Reads the echoPin, returns the sound wave travel time in microseconds
    duration = pulseIn(echoPin, HIGH);

    // Calculating the distance
    distance= duration*0.034/2;

    if (distance > threshold) {
        digitalWrite(relay1, LOW);  // retractActuator
        digitalWrite(relay2, HIGH); // retractActuator 
    }     
    else {
        digitalWrite(relay1, HIGH); // extend actuator
        digitalWrite(relay2, LOW);  // extend actuator
    }

    // Prints the distance on the Serial Monitor
    Serial.print("Distance: ");
    Serial.println(distance);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...