сервопривод на радиокнопке

Тема в разделе "Проводная и беспроводная связь", создана пользователем ga2bi, 26 янв 2017.

  1. ga2bi

    ga2bi Нерд

    помогите собрать всё воедино, есть ардуино уно, сервопривод, и пульт с передатчиком 4 канала (4 кнопки, брелок) работает в режиме тригера
    надо что бы при нажатии на 1 кнопку серва поднималась на 90г, а при отпускании обратно опускалась в 0 положение, серва находится постоянно в 0 положении
    пульт с приёмником вот такой
    MK324
    Программируемый модуль 4-х канального
    дистанционного управления 433 МГц http://www.sinava.ru/MK324.php

    хочу вот так собрать

    ток тут с кнопкой, а мне надо на брелоке, вот скетч от сюда
    Код (C++):
    #include <Servo.h> //подключаем библиотеку для работы с сервоприводом
    Servo CamServo; //объявляем переменную CamServo типа Servo

    //подключаем переменную switchPin к 7 порту на Arduino
    //к этому порту подключена кнопка

    int switchPin = 7;

    //подключаем переменную servoPin к 9 порту на Arduino
    //к этому порту подключен сервопривод

    int servoPin = 9;

    //подключаем переменную ledPin к 13 порту на Arduino
    //к этому порту подключен светодиод

    int ledPin = 13;

    //подключаем переменную relayPin к 8 порту на Arduino
    //к этому порту подключено реле

    int relayPin = 8;

    //переменные posClose и  posOpen указывают в какую позицию должен повернуться сервопривод
    //максимальный угол поворота сервопривода - 180 градусов

    int posClose = 0;
    int posOpen = 90;


    void setup() {
      pinMode(switchPin, INPUT); //определяем порт switchPin как входящий
      pinMode(ledPin, OUTPUT); //определяем порт ledPin как исходящий
      pinMode(relayPin, OUTPUT); //определяем порт relayPin как исходящий
      CamServo.attach(servoPin); //определяем порт servoPin как управляющий сервоприводом
    }

    void loop() {
      if (digitalRead(switchPin) == HIGH) //если на порт switchPin подается напряжение - логическая 1
      {
        digitalWrite(ledPin, HIGH); //включаем светодиод
        digitalWrite(relayPin, HIGH); //подаем сигнал на порт relayPin
        delay(500); //устанавливаем задержку в милисекундах
        CamServo.write(posOpen);    // Говорим серво повернуться в позицию 90 градусов
      }
      else //иначе
      {
        digitalWrite(ledPin, LOW); //отключаем светодиод
        CamServo.write(posClose); //говорим серво повернуться в позицию 0 градусов
        delay(500); //устанавливаем задержку в милисекундах
        digitalWrite(relayPin, LOW); //отключаем реле
       
      }

    }
    помогите всё собрать
     
  2. ga2bi

    ga2bi Нерд

    подключил приёмник с пультом в место кнопки, работает но как то криво, для работы сервы надо удерживать кнопку
     
  3. vvr

    vvr Инженерище

    код
     
  4. ga2bi

    ga2bi Нерд

    что код, я в них не особо силён, а так работает и на этом, просто через брелок дрыгаю 7 ногой, посылая логическую 1, время удержания регулируется через делай так вроде убирается дребезг кнопки, а реле там стоит для того что бы серву выключать и она не ела батарейку, хотя если кто то поможет нормальным кодом для режима триггера буду благодарен, нажал пульт серва поехала на 90г, ждёт 2сек, и опускается в 0
     
  5. vvr

    vvr Инженерище

    тогда удачи...
     
  6. ga2bi

    ga2bi Нерд

    я больше механик чем программист
     
  7. ga2bi

    ga2bi Нерд

    а вот что получилось

     
  8. ga2bi

    ga2bi Нерд

    можно и без пульта если под последнюю мишень поставить концевик кнопку