Помогите с кодом

Тема в разделе "Arduino & Shields", создана пользователем Wardonne, 12 янв 2019.

  1. Wardonne

    Wardonne Нуб

    Всем привет!
    Нужна помощь по скетчу для ардуино и датчика уровня воды вот такого [​IMG]
    Нужно что бы при определённых значениях включалось реле ,и при других значениях выключалась
    Есть такой код
    Код (C++):
    // контакт подключения аналогового выхода датчика
    int aPin=A5;
    // контакт  подключения вывода реле
    // переменная для сохранения значения датчика
    int avalue=0;
    // значение уровней
    int levels[3]={600,500,400};
    // текущий уровень
    int level=0;

    void setup()
    {
    pinMode(4, OUTPUT); // объявляем пин 3 как выход
    // инициализация последовательного порта
    Serial.begin(9600);
    // настройка выводов индикации светодиодов
    // в режим OUTPUT
    digitalWrite(4, HIGH);
    }

    void loop()
    {
    // получение значения с аналогового вывода датчика
    avalue=analogRead(aPin);
    // вывод значения в монитор последовательного порта Arduino
    Serial.print("avalue=");Serial.println(avalue);
    // вывод звука различной частоты для разных уровней погружения
    if(avalue>levels[0])
    digitalWrite(4, LOW);
    else if(avalue>levels[1])
    digitalWrite(4, LOW);
    else if(avalue>levels[2])
    digitalWrite(4, LOW);
    else
    // пауза перед следующим получением значения 1000 мс
    LOW
    }
    Помогите пожалуйста
     
  2. А таки что вам мешает сюда ввести нужные вам значения
    Код (C++):
    int levels[3]={600,500,400};
    Создать новый пин для реле (смотря как оно управляется, низким или высоким уровнем)
    И таки дописать нужные вам действия сюда
    Код (C++):
    if(avalue>levels[0])
    digitalWrite(4, LOW);
    else if(avalue>levels[1])
    digitalWrite(4, LOW);
    else if(avalue>levels[2])
    digitalWrite(4, LOW);
    Или же изменив условия, на те что вам нужно. У вас же готовый скетч.
     
  3. Wardonne

    Wardonne Нуб

    У меня вместо реле лампочка включается =(
     
  4. Странно если верить скетчу, она должна быть потушена). Конечно можно и написать скетч, в данном случае это легко. ( Хотя нужно четкое задание, при каких пороговых значениях, или промежутков, что должно происходит. Тип реле) от какой интерес вам тогда будет. Начните с самого начала, инициализации пинов, установкой их на ввод вывод. Поморгайте светодиодом. Потом вернётесь к вашей задаче. Заодно составьте на бумажке условия при каких значениях что должно происходить. Так будет удобнее, я так думаю.
     
  5. Wardonne

    Wardonne Нуб

    Вместо реле мигает лампочка и я уже третий раз переписал не знаю что и делать =(((
     
  6. У вас инициализирован только 4 цифровой пин на выход. Как подсказывает мой хрустальный шар, к нему и подключен светодиод. Вам нужно инициализировать ещё один пин на выход или подключить реле к вашему 4 пину
     
  7. DetSimen

    DetSimen Guest

    А автор кода чо говорит?
     
  8. KindMan

    KindMan Гуру

    Да, половина комментариев в коде у вас отличается от написанного .... насколько я понял задачу
    Код (C++):
    // контакт подключения аналогового выхода датчика
    #define DATCHIK A4
    // контакт  подключения вывода реле
    #define RELE 3
    // контакт  подключения вывода светодиода
    #define LED 13
    // нижний уровень включения
    #define LOW_LEVEL 500
    // верхний уровень
    #define HIGH_LEVEL 900



    void setup()
    {
    pinMode(RELE, OUTPUT); // объявляем пин Реле как выход
    pinMode(LED, OUTPUT); // объявляем пин Светодиод как выход
    // инициализация последовательного порта
    Serial.begin(9600);
    }

    void loop()
    {
    // получение значения с аналогового датчика
    int avalue=analogRead(DATCHIK);
    // вывод значения в монитор последовательного порта Arduino
      Serial.print("avalue = ");
      Serial.println(avalue);
    // включение реле и индикации при нужном уровне показаний датчика
    if (avalue >= LOW_LEVEL && avalue <= HIGH_LEVEL) {
        digitalWrite(LED, HIGH);
        digitalWrite(RELE, HIGH);
    }  else {
        digitalWrite(LED, LOW);
        digitalWrite(RELE, LOW);
    }
    // пауза перед следующим получением значения 1000 мс
    delay(1000);
    }
    Если датчик показывает от LOW до HIGH то реле включено, иначе выключено
    Если реле включается низким уровнем, то меняйте местами HIGH и LOW
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Код спизжен скопипащен
     
    NikitOS нравится это.
  10. NikitOS

    NikitOS Король шутов Администратор

    Кто пиздит копипастит код - лох