Дайте совет новичку
- Войдите на сайт для отправки комментариев
Пнд, 09/10/2017 - 20:45
Доброго времени суток!
Дайте пожалуйста совет новичку. Вчера стал обладателем платы arduino uno и не знаю с чего начать=) Опыта в схемотехнике и электронике не имею. Вчера узнал что такое закон Ома, что такое резистор и светодиод=)
Подскажите с чего начать изучение arduino и электроники
Спасибо!
Подскажите с чего начать изучение arduino и электроники
Учебник физики, 8-ой класс.
Дайте пожалуйста совет новичку.
Даю
Подскажите с чего начать изучение arduino и электроники
Учебник физики, 8-ой класс.
Спасибо за совет, я обязательно использую мат.часть и подтяну знания в физике
Спасибо, но ссылка битая
Дайте пожалуйста совет новичку.
Совет: беги отсюда... Я вот не успел вовремя соскочить, теперь всю зарплату просаживаю на новые модули, датчики и шилды. Завтра буду варить последние штиблеты...
Меня уже зацепило, назад пути нет=)
Совет новичку получившему плату ардуино: перед включением платы Ардуино, не забудьте включить свою голову. Работа без головы ардуинщика вредна для здоровья платы ардуино. Распечатать и повесить на стену.
Гололобов В.Н. О проекте Arduino для школьников (и не только) 2011
http://vgololobov.narod.ru/content/arduino/intro.html
Руководство по освоению Arduino 2012
http://robot-kit.ru/manual/Arduino_Sketch_Robot-kit.ru.pdf
Спасибо большое! То что нужно для начала!
http://homes-smart.ru/upload/arduino/arduinoBasicConnections.pdf
http://homes-smart.ru/upload/arduino/arduinoBasicConnections.pdf
Спасибо! Хорошие схемы для начала обучения, выучить обозначения для деталей и начать практиковаться!
Нашел ещё один сайт с обучением, теория + практика, с описанием shields, экранов и разных датчиков http://wiki.amperka.ru/
Нашел ещё один сайт с обучением, теория + практика, с описанием shields, экранов и разных датчиков http://wiki.amperka.ru/
Самое, пожалуй, лучшее.
Начать с левой колонки и собирать мини-проекты из правой. Обязательно прорабатывать всю задачку - поснения к коду, самопроверку, задания.
Доброго времени суток, прошу помощи. Есть датчик, четырехканальное реле и стм32 на ардуино ИДЕ.
Есть программа, в ней проверяются два условия через IF-ELSE.
В первом условии все просто если оно соответствует то 1 реле включено, остальные 3 реле выключены.
Во втором условии при его соответствии 1 реле отключается, 2 реле должно включаться на 30 секунд потом отключаться, в то же время через 3 секунды после включения 2 реле должно включиться и 3 реле на промежуток времени пока не замкнется цепь от GND с любым цифровым портом настроенным как вход. Так же с момента когда 3 реле выключится должен произойти отсчет 2-ух минут и включить реле 4. Но и это еще не все, если вдруг происходит соответствие первого условия, нам не нужно в первую же секунду идти по сценарию, нам нужно в течении 5-ти минут проанализировать наши 2 условия и если вдруг условие менялось к примеру раз десять за эти 5 минут то мы ожидаем пока условие в течении новых 5-ти минут будет оставаться соответствующим первому условию, а уже потом переходить в этот сценарий. Временные промежутки нужно отсчитать только один раз и только при соответствии второго условия, но если условия будут меняться допустим 2 раза за день то и промежутки нужно отсчитать 2 раза. Пробовал с миллис сделать некоторую многозадачность. Но среди примеров в интернете, это циклическая смена состояний, в моем случае это не подходит. Можно ли как нибудь разбить во втором условии все эти процессы так чтобы они работали параллельно и не мешали друг другу. Не прошу писать мне код. Подтолкните только в нужную сторону. Два дня уже бьюсь(
Заранее спасибо)
Никита, выкладывайте свой код и ЧЕТКО пишите, как должно работать и как работает сейчас. Без кода вникать в ваш вопрос вряд ли кто захочет.
Перед выкладыванием кода ознакомтесь с правилами оформления по ссылке вверху.
Собственно как должно работать копирую из поста выше
Есть программа, в ней проверяются два условия через IF-ELSE.
В первом условии все просто если оно соответствует то 1 реле включено, остальные 3 реле выключены.
Во втором условии при его соответствии 1 реле отключается, 2 реле должно включаться на 30 секунд потом отключаться, в то же время через 3 секунды после включения 2 реле должно включиться и 3 реле на промежуток времени пока не замкнется цепь от GND с любым цифровым портом настроенным как вход. Так же с момента когда 3 реле выключится должен произойти отсчет 2-ух минут и включить реле 4. Но и это еще не все, если вдруг происходит соответствие первого условия, нам не нужно в первую же секунду идти по сценарию, нам нужно в течении 5-ти минут проанализировать наши 2 условия и если вдруг условие менялось к примеру раз десять за эти 5 минут то мы ожидаем пока условие в течении новых 5-ти минут будет оставаться соответствующим первому условию, а уже потом переходить в этот сценарий.
Из железа, стм 32 с ардуино ИДЕ, четырехканальное реле, датчик напряжения.
Собственно на этом миллис и завис, блинк работает, а все остальное не хочет. мне просто нужно при выполнении условия чтобы пошел отсчет времени и по его истечении выполнилось действие.
Программа не закончена, поскольку проверяю работу шаг за шагом.
Собственно как должно работать копирую из поста выше
Есть программа, в ней проверяются два условия через IF-ELSE.
В первом условии все просто если оно соответствует то 1 реле включено, остальные 3 реле выключены.
Во втором условии при его соответствии 1 реле отключается, 2 реле должно включаться на 30 секунд потом отключаться, в то же время через 3 секунды после включения 2 реле должно включиться и 3 реле на промежуток времени пока не замкнется цепь от GND с любым цифровым портом настроенным как вход. Так же с момента когда 3 реле выключится должен произойти отсчет 2-ух минут и включить реле 4. Но и это еще не все, если вдруг происходит соответствие первого условия, нам не нужно в первую же секунду идти по сценарию, нам нужно в течении 5-ти минут проанализировать наши 2 условия и если вдруг условие менялось к примеру раз десять за эти 5 минут то мы ожидаем пока условие в течении новых 5-ти минут будет оставаться соответствующим первому условию, а уже потом переходить в этот сценарий.
Из железа, стм 32 с ардуино ИДЕ, четырехканальное реле, датчик напряжения.
Собственно на этом миллис и завис, блинк работает, а все остальное не хочет. мне просто нужно при выполнении условия чтобы пошел отсчет времени и по его истечении выполнилось действие.
Программа не закончена, поскольку проверяю работу шаг за шагом.
В таком виде программа работать не будет. Как минимум нужно библиотеку
"EmonLib.h"
подключить. Это Вы нас проверяете? Или не понимаете что пишете?Извините, пропустил строчку с подключением библиотеки.
Копировал на спех, вот и закосячил.
Библиотека работает, очень шустро и из за стм 32 очень точно. У меня не работает именно та часть где условие проверяет не прошло ли нужное количество секунд. Ну и собствено действие не выполняется. Почему "блинк без делэй" работает, а в моей программе даже не пытается(
Никита. я правильно понимаю, что всю эту сложную логику. что вы описываете словами, в код вы еще не вставили? - а то я как-то ее не наблюдаю в программе :)
У вас элементарная ошибка в логике, это видно сразу. Ответте на вопрос выше, потом продолжим.
Все верно! У меня все застыло на включении второго реле, которое должно отработать 30 секунд и отключиться. Оно попросту не отключается. Подскажите пожалуйста где ошибка(( уже 3тий день интернет мучаю:)
Все верно! У меня все застыло на включении второго реле, которое должно отработать 30 секунд и отключиться. Оно попросту не отключается. Подскажите пожалуйста где ошибка(( уже 3тий день интернет мучаю:)
Почитайте вот эту тему. Попробуйте применить рассмотренную там методику для Вашей задачи.
Как только условие (emon1.Vrms <150) в строке 39 становится истинным - вы сохраняете текущее время в переменной previousMillis1 . Это верно.
Ошибка в том, что при каждом следующем проходе через loop вы обновляете значение previousMillis1 снова и снова, поэтому разница между текущим временем и этой переменной никогда не достигает интервала. Вам следует сохранять время в previousMillis1 только один раз, а при каждом следующем обороте только проверять условие в строке 48
Так и у меня такая же мысль в голове что оно каждый раз обновляется. Но как ее сохранить один раз? Точнее, где нужно поставить эту строчку previousMillis1 = millis();
Чтобы она записалась только тогда когда (emon1.Vrms <150)
Я не могу избавиться от проверки (emon1.Vrms >150) поскольку нужно будет включать отсчет на 5 минут чтобы вернуться в первое условие когда включено реле 1 и все остальные выключены.
Так и у меня такая же мысль в голове что оно каждый раз обновляется. Но как ее сохранить один раз?
Очевидно, что надо установить какую-то переменную - "флаг" - сигнализирующие о том, что отсчет интервала начался и обновлять previousMillis1 больше не нужно.
Только не хвататйтесь сразу кодировать. Сначало подробно сформулируйте и запишите логику работы вашего условия. Пока только одного - того, что сейчас в коде. Будьте внимательны, учтите все варианты - например, если во время интервала emon1.Vrms станет больше 150 - как должна реагировать программа? Продолжать ждать положенное время или сбросить интервал?
На примере моего условия трудно будет показать работу флага? Просто время немного сэкономит.
При изменении условия на (emon1.Vrms > 150) программа должна делать все что предусмотрено условием (emon1.Vrms < 150). Сбрасывать ничего не нужно, если это конечно реально.
При (emon1.Vrms > 150) запускается отсчет 5ти минут в котором проверяется сколько раз было переходов с (emon1.Vrms > 150) на (emon1.Vrms < 150) и наоборот. И если таких переходов не было то происходит переход на первое условие когда (emon1.Vrms > 150), конечно же дополнительные условия и задержки придется установить чтобы переход был не аварийным. Но это относится к тому что замыкают реле.
Nikita, так не пойдет. Я просил сформулировать только те условия, которые уже сейчас есть в коде. В вашем коде есйчас никаких пяти минут и подсчетов переходов между (emon1.Vrms > 150) и (emon1.Vrms < 150) нет - так давайте не будем усложнять. Я предлагаю разобрать проблему на основе того кода, с которым вы пришли в конфу, а свои сложные условия вы уже потом сами добавите по образцу этого.
Извиняюсь, забежал вперед.
С первым условием все понятно и просто.
Во втором условии при (emon1.Vrms < 150) хотелось бы зафиксировать время, чтобы таймер отсчитал интервал, чтобы в последствии выполнить какое нибудь действие, по выполнению действия сбросить это время, чтобы при повторении нашего условия можно было зафиксировать это время еще раз и так дальше циклично.
Спасибо, за напрвление обязательно почитаю.
Прочитал про флаги, если правильно понял это для работы прерываний по таймеру?
Это для чего угодно. Записочка на столе для МК. Пока вы пытаетесь описать свои хотелки словами и в таком формате, не только закодировать трудно, но и понять что же хочется. Вариантов два: берем лист бумаги и рисуем алгоритм графически, берем бумагу и расписываем его по пунктам. Оба имеют право на жизнь и зависят от удобства восприятия для индивидуума. ИМХО.
Спасибо за совет) я алгоритм сделал с самого начала)
у меня проблемка, как я понял с установкой флага, я не совсем понимаю как его установить чтобы время в той переменной в которую я хочу записать, собственно записалось и не записывалось вновь при каждом проходе ЛУУП. Чтобы арифметическое действие в итоге исполнилось и мой интервал отсчитался. Как Миллис в примере блинк работает с момента запуска контроллера я понимаю) но у меня момент отсчета должен начаться с выполнения условия if (emon1.Vrms < 150). Вот этого я не могу понять((((
Если этого не предусмотрено в алгоритме, значит он неправильный. Я вам в соседней теме дал ссылочку, думаю разберетесь. Выводите отдельные задачи в функции и выполняйте по мере надобности. ИМХО.
за ссылку спасибо, она навела меня на мысль создания функции, но в голове все равно не укладывается, как время запишется и не будет записываться снова. Если я правильно понимаю когда будет вызываться записаннная мною функция, ЛууП не будет крутить основной цикл, а только эту функцию? Если так, тогда вопрос, как будет работать все остальное?
Если вы функцию не закольцуете, то работать будет все. Зашли в функцию из лупа, проверили условие, истина - выполнили действия в функции и вернулись в луп, ложь - вернулись в луп. Следующая функция и так по кругу.
P/S я вам рекомендовал там и другие темы посмотреть, там уже есть на несколько таймеров.
Спасибо за информацию, буду пробовать)
Как Миллис в примере блинк работает с момента запуска контроллера я понимаю) но у меня момент отсчета должен начаться с выполнения условия if (emon1.Vrms < 150). Вот этого я не могу понять((((
Nikita. флаг - это очень просто. Беру ваш код из сообщения #16 и добавляю 3 строчки
изменения коснулись строк 12. 41 и 44.
Это только пример использования флага. Возможно, надо что-то подправить. Но надеюсь, общий принцип понятен
Вариантов два: берем лист бумаги и рисуем алгоритм графически, берем бумагу и расписываем его по пунктам.
пост 33 , и там еще в топике обсуждалось составление алгоритма (а пост для примера...), там же пост 66
Помогите пожалуйста. С кодами пульта разобрался. ИК передатчик отправляет команды.
#include
IRsend irsend;
void setup()
{
}
void loop() {
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xa90, 12);
delay(40);
}
delay(5000); //5 second delay between each signal burst
}
Но отправляет автоматически. А как прописать, что можно было отправлять ИК сигнал с помощью нажатия кнопки?
head2009,
https://drive.google.com/file/d/0B9r7cRXQ4DU4dTBtRFpub0tfV00/view?usp=sh...
https://drive.google.com/file/d/0B9r7cRXQ4DU4XzVLeUVkNHdiaVU/view?usp=sh...
Изучайте.