Помогите с програмкой

Тема в разделе "Arduino & Shields", создана пользователем Diviant, 27 июн 2016.

  1. Diviant

    Diviant Нуб

    Добрый день! Я новичок и программирую еще на уровне 0+. Есть ультразвуковой дальномер HC-SR04. Взял за основу опыт №9, только отключил все кнопки от всех пинов, и подключил HC-SR04 (int echoPin = 10; int trigPin = 8;
    ). Мотор управляется с 9 пина. Нужно чтобы при считывании сигнала 2000 мс(дистанция от 0 до 15см) моторчик запускался на 1\2 макс скорости, при считывании сигнала 4000 мс(дистанция от 0 до 15см) моторчик работал на полную мощность, при считывании сигнала 8000 мс(дистанция от 0 до 15см) моторчик работал уходил на о. Помогите если не трудно
     
  2. vvr

    vvr Инженерище

    давай что то пиши - будем помогать
     
  3. Diviant

    Diviant Нуб

    Попробовал написать, чтоб заводился хотя бы от приближения, выдает ошибки, не пойму в чем

    int echoPin = 10;
    int trigPin = 8;
    #define MOTOR_PIN 9


    void setup()
    {
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    pinMode(MOTOR_PIN, OUTPUT);
    }

    void loop(){
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    int distance = pulseIn(echoPin, HIGH);
    if (distance < 1500)
    {analogWrite(MOTOR_PIN, 255);}
    else
    {
    analogWrite(MOTOR_PIN, 0)

    }
     
  4. vvr

    vvr Инженерище

    int echoPin = 10;
    int trigPin = 8;

    void setup() {
    Serial.begin (9600);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    }

    void loop() {
    int duration, cm;
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH);
    cm = duration / 58;
    Serial.print(cm);
    Serial.println(" cm");
    delay(100);
    }
    что в сериал выводится ?
     
  5. Diviant

    Diviant Нуб

    Вот код
    Моторчик стал реагировать на датчик
    Убираю руку он останавливается но при полной остановке подергивается чуток
     
  6. Diviant

    Diviant Нуб

    #define echoPin 10
    #define trigPin 8
    #define MOTOR_PIN 9


    void setup()
    {
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    pinMode(MOTOR_PIN, OUTPUT);
    }

    void loop(){
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    int distance = pulseIn(echoPin, HIGH);
    if (distance < 3000)
    analogWrite(MOTOR_PIN, 255);
    else
    analogWrite(MOTOR_PIN, 0);

    }
     
  7. vvr

    vvr Инженерище

    выводите в сериал значения distance и смотрите как они меняются
    а потом пишите условия для мотора
     
  8. Diviant

    Diviant Нуб

    А почему при "analogWrite(MOTOR_PIN, 0);" мотрчик чуток подергивается каждую милисекунду?
     
  9. Diviant

    Diviant Нуб

    value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан постоянно)
    а у меня при 0 движение
     
  10. Diviant

    Diviant Нуб

    Все устранил
     
  11. Diviant

    Diviant Нуб

    Теперь нужно счетчик поставить как то,чтобы моторчик включался и выключался от удержании 2000 мс