Установить длительность включенного состояния выхода

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

  1. MESS

    MESS Гик

    У меня есть желание попробовать на ардуино сделать. а проблем с компонентами электроники не испытываю. есть лаборатория. 5110 -это разве роскошь. для меня это просто необычно, по сравнению с 1602, 1604. Потому что можно использовать графику. А дача у меня умная уже 15 лет, но на жесткой логике.
    хочу быть " в тренде" пока есть интерес к хобби.
     
  2. MESS

    MESS Гик

    Если нужны какие-то компоненты напиши в личку.
     
  3. sanik

    sanik Гик

    currentTime это имя переменной оно может быть любым А переменая во время выполнения кода может принять любое значение зависит от условий
     
  4. MESS

    MESS Гик

    Мне кажется, что я достаточно внятно и подробно излагаю свои мысли. Если помощь нужно оплатить - я всегда готов. А насчет нужно или не нужно - это чисто субъективное понятие. Мне сейчас это нужно, потому что уже с конца февраляа некогда будет сидеть у компьютера.
     
    Последнее редактирование: 13 янв 2016
  5. sanik

    sanik Гик

    :) Понимаю в этом возрасте без работы есть время и желание что либо делать удваивается Сам хочу на пенсию и тоже на даче поставить теплицу сделать курятник ну конечно же не без автоматики А пока работаю времени нет вплотную дачей заняться
     
  6. MESS

    MESS Гик

    Я работаю по сей день и времени не очень много. так что отличаюсь от других только датой рождения. А по выращиванию качественной рассады под светодиодами являюсь одним из пионеров внедрения. www.forumhouse.ru/useralbums/4590/view
    Все. заработал интервал на включение. Спасибо еще раз.
    завтра продолжу после работы.
     
    Последнее редактирование: 13 янв 2016
  7. sanik

    sanik Гик

    Ну и не плохо когда у человека есть хобби Еще один совет думаю в будущем он поможет если нашли пример и какая то строка не понятно в вбиваете в поиск то что подсвечено красным и читайте внимательно если на одной ссылке не понятно открывайте другую попадаются сайты где очень подробно дают объяснения что это такое как применять на практике и какие ограничения имеет.
     
  8. sanik

    sanik Гик

    Если понадобиться управлять одновременно двумя актуаторами то обращайтесь дам пример как раз на днях кумекал как сделать так чтобы два пина не запускались в разнобой мне например понадобилось когда у меня случайно по таймеру два вентилятора начали запускаться не одинаково зато пройдя через несколько условий стало пофиг в каком состоянии они были они выравниваются и запускаются вместе как укажешь
     
  9. Onkel

    Onkel Гуру

    у меня дочка такой дивайс собирает - для исследования каким светом лучше освещать (сколько r cколько g сколько b), чтобы лучше росло. В прошлом году ислледовала влияние температуры грунта, оказалось лук на перо лучше всего растет (не помню сорт) при 24 Цельсия, и по двойному слепому тесту он самый вкусный. Так по предварительным прикидкам вроде надо красным светить (для дыхания) и сине- зеленым (для фотосинтеза)- не в курсе?
     
  10. sanik

    sanik Гик

    Если не разобрался с циклом while то попытаюсь объяснить оказывается он противоположен условию if условие if выполняется если оно верно то есть проще говоря If воспринимай как по русски (если) если а = в то заходим в тело цикла (тело цикла это то что пишешь между {} фигурными скобками ) После слова while в скобках() должно быть условие. Условие может быть любы, лишь бы было истинным. Как только условие станет ложным, цикл прекратит свою работу и программа продолжит работать со следующей строки после цикла, если условие будет ложным то входа в этот цикл не будет. Если в цикле условие не станет ложным то программа никогда не выйдет из него пока не нажмешь ресет или не вырубишь питание :) Мне этого никто не объяснял что бы понять что такое условие что такое цикл у меня ушло 2 года пока сам не разобрался;) Есть еще одна штука которая похожа на логику прочитай про флаг flag она может тебя выручить так как с логикой я смотрю все в порядке. Еще есть case вот ссылка где боле мене хорошо рассказано http://www.avrki.ru/articles/content/arduino_4/
     
    MESS нравится это.
  11. sanik

    sanik Гик

    Фотосинтез вроде как со школы помню по биологии происходит в темноте. Из этого можно сделать вывод.
     
  12. sanik

    sanik Гик

    Картинок не видно но покумекав придумал как вообще можно герконы выкинуть и даже проверять не застряла ли гайка на шпильке на концах шпильки поставить упоры на мотор подцепить датчик тока в циклах пока открывается или закрывается форточка отслеживать силу тока и если она превысит допустимых значений останавливать моторы так же отслеживать в какую сторону крутится мотор и написать если в течении заданного времени мотор не остановился значит он не достиг конца шпильки это буде аварийная ситуация гайка застряла. Думаю это будет лучше герконов так как контроллер уже будет знать что гайка застряла и можно предпринять для этого какое либо действие например типа крутить туда сюда пока все таки не пройдем свое расстояние.
     
  13. sanik

    sanik Гик

    Я имел виду роскошь для такого устройства:)
     
  14. MESS

    MESS Гик

    Я занимаюсь этим достаточно давно и успешно (так считают тысячи моих подписчиков), а практические выводы по своим экспериментам выложил в десятках разных статей. Например, наиболее популярные тут : www.forumhouse.ru/blogs/34865/ Тут ответы на любой вопрос. ( кстати от зеленого цвета польза незначительная. Главное -соотношение "правильных" цветов R-B).
    Как раз для этого хобби я и хочу подключить ардуино, потому что мои девайсы на жесткой логике не обладают нужной гибкостью.
    Хочется сделать открытие огромных форточек парника пропорциональным градиенту температуры, а для этого нужно сначала ввести фиксированное время открытия-закрытия (что сейчас пытаюсь), а потом пытаться его менять в реальном времени по данным измерений и по ПИД закону рассчитать, на сколько % открыть. Это для меня очень сложно. Принципиально не хочу использовать готовые приборы, хотя могу.
    Пытаюсь двигаться от простого к сложному. Но уже трудно освоить программирование.
     
    Последнее редактирование: 13 янв 2016
  15. MESS

    MESS Гик

    В том и дело, что прежде чем просить помощь на форуме, я ищу ответы или похожие решения, но не всегда нахожу. А кроме того, у меня просто нехватает времени на безрезультатные поиски. Вот уже пора на работу-сдавать новый лифт.
     
  16. Onkel

    Onkel Гуру

    В самом слове "фотосинтез" есть "фото", подразумевающее освещение, а не темноту. Из этого можно сделать вывод.
     
  17. Onkel

    Onkel Гуру

    у меня костяк программ устроен так- прерывание по таймеру 1 мс, в котором все софтовые таймеры апдейтим. Например, если вам нужно открывать форточку 3894 мс, даем команду на мотор, выставляем переменную =3894, каждую миллисекунду отнимаем от переменной единицу, и когда переменная ==1 даем команду выключить мотор.
     
  18. Onkel

    Onkel Гуру

    вот презентация моей дочки на конференции школьников
     

    Вложения:

    • yFarm.pdf
      Размер файла:
      252,4 КБ
      Просмотров:
      519
    MESS нравится это.
  19. sanik

    sanik Гик

    Работу с ПИД облегчает библиотека PID_v1.h Поэкспериментируй с ней
    Параметры:
    &Input(double) — Входящий сигнал, который мы контролируем
    &Output(double) — Выходящий сигнал, которым мы управляем
    &Setpoint(double) — Заданное значение контролируемого сигнала
    Kp(double>=0) — пропорциональная составляющая пид-регулятора
    Ki(double>=0) — интегральная составляющая пид-регулятора
    Kd(double>=0) — дифференциальная составляющая пид-регулятора
    Direction(DIRECT or REVERSE) направление изменения выходного сигнала
    Compute() - Расчет выходного сигнала True: когда выходной сигнал рассчитан(расчет ведется с периодичностью заданной SetSampleTime) False: когда ничего не было сделано
    SetMode() - Устанавливает, будет ли ПИД-регулятор включен во время создания. AUTOMATIC — будет, MANUAL — нет По умолчанию ПИД-регулятор выключен.
    SetOutputLimits() - Устанавливает границы выходящего сигнала по умолчанию это 0-255 SetOutputLimits(min, max) Параметры: min — минимальное значение, должно быть меньше max max — максимальное значение, должно быть больше mix
    SetTunings() - позволяет настраивать ПИД-регулятор во время работы SetTunings(Kp, Ki, Kd)
    Параметры:
    Kp(double>=0) — пропорциональная составляющая пид-регулятора
    Ki(double>=0) — интегральная составляющая пид-регулятора
    Kd(double>=0) — дифференциальная составляющая пид-регулятора
    SetSampleTime() - задает частоту расчета выходного сигнала? по умолчанию 200 мили секунд SetSampleTime(SampleTime) Параметры: SampleTime — мили секунды >0
    SetControllerDirection() направление изменения выходного сигнала, когда начальный входящий сигнал меньше заданного — DIRECT, когда больше REVERSE
    SetControllerDirection(Direction);
    Параметры:
    Direction(DIRECT или REVERSE)
     
  20. sanik

    sanik Гик

    А вот хороший пример с которым я быстро разобрался и пару статей http://bigbarrel.ru/климат-контроль-на-arduino-пид-регулятор/
    Код (C++):
    #include <PID_v1.h>
    double Setpoint, Input, Output;
    PID myPID(&Input, &Output, &Setpoint,1,4,3, DIRECT);
    void setup()
    {
    Input = analogRead(0);
    Setpoint = 27;
    myPID.SetMode(AUTOMATIC);
    }
    void loop()
    {
    Input = analogRead(0);
    myPID.Compute();
    analogWrite(3,Output);
    }