Огромное спасибо за энтузиазм. Возможно Ваши уроки будут вполне полезны, если Вы отнесетесь к ним как профессиональный преподаватель, учитывая, что ученик абсолютно не сведом в том, чему Вы будете учить.
Как принято в обучении на программировании в ИДЕ на Ардуино, первый урок это включить диод на пине 13, чтоб постоянно горел. Потом мигание и так далее.
Я бы хотел видеть урок немного иначе, т.к. очень важно понять почему в ФЛП используем именно гениратор (или еще что), с кратким (но понятным) описанием самой схемы подключения на плате. Да, не сложно повторить ваш урок1, соединить гениратор с диодом, откомпелировать. Подключить к Ардуино светодиод и он будет ... а дальше по уроку не понятно, светить или все же мигать. У Вас написано
"На входе генератора - константа "1", заставляющая его постоянно работать. " и тут же написано... "Сам генератор сконфигурирован как Симметричный мультивибратор ("1" и "0" одинаковой продолжительностью времени) на Константу в 500 миллисекунд (0,5 сек.)." Так все таки будет гореть или мигать благодаря встроенному мультивибратору?
Т.к. подобный урок для абсолютных новичков в этой программе, поэтому нужно для понимания более детально описывать применяемые инструменты, целесообразность их применения в данной ситуации и как проходит реализация.
Например:
Урок №1 - зажигаем светодиод на пине 13
Задача -
зажечь светодиод на пине 13 чтоб он постоянно светил.
Пример реализации на языке Ардуино IDE:
void setup() { // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // зажигаем светодиод}
Результат работы кода -
светодиод постоянно горит.
Пример реализации на FLP: led1.flp (пример для скачивания)
Добавлено (31.12.2015, 13:04)
---------------------------------------------
Пояснения к примеру:
1. Создаем светодиод:
Т.к. светодиод это управляемый элемент, он будет реагировать на ВЫХОДНОЙ сигнал Ардуины, поэтому его назначаем во вкладке "Выходы"
Во вкладке Tags в группе "Выходы" создаем выход с названием "светодиод", перетаскиваем на плату.
Далее, светодиод нужно зажечь. Для этого нужен входной сигнал, создаем во вкладке "Входы" входной сигнал на пине 1. Чтобы установить на пине 1 единицу (+5В), нужно поставить галочку "
Включить подтягивающий резистор". Как установить состояние в ноль - я не знаю. Если не включать подтягивающий резистор, то происходит только назначение пина как цифрового без указания его состояния (0 или 1). Каким будет состояние пина в случае без подтягивающего резистора? Почему оно будет таким и всегда ли оно будет таким?
Созданный вход перетаскиваем на плату и соединяем со светодиодом. Компилируем. Получаем код.
Полученный код с подтягивающим резистором: (в коде добавлю пояснения, т.к. программа коментарии не добавляет)
void setup()
{
pinMode(1, INPUT); //
назначение пина 1 вход
digitalWrite(1, HIGH); //
устанавливаем пин 1 в единицу (+5В)
pinMode(13, OUTPUT); //
пин 13 назначаем на выход (куда будет подключен диод)
}
void loop()
{
digitalWrite(13, (digitalRead (1))); //
состояние пина 13 зависит от состояния пина 1. Т.к. пин 1 установлен в единицу, то на 13 пине так же будет единица и диод будет светиться.
}
В таком духе продолжить и объяснения с мигающим светодиодом. Кроме того по мигающему светодиоду можно сделать несколько вариантов (хотя бы 2), т.к. светодиод может мигать с помощью задержки программы (
delay(500);) и как- привязать к зависимости от времени в цикле программы (если возможно).
Возможно в программе это можно реализовать еще проще. Не думаю, что зажечь светодиод программа вынуждает занять 2 пина. Наверняка есть какой-то другой подход. Но я не знаю как это сделать проще, используя только пин 13.
Еще раз повторюсь, Вы не должны забывать, что данный пост могут читать только абсолютные новички, своего рода первоклашки в работе с программой FLP, поясняя каждый элемент, почему используется именно этот элемент или какой еще можно использовать для решения поставленной задачи. Поэтому излишнее разжевывать пойдет только в пользу знаниям. (Если Вы действительно хотите помочь создателю программы и дать какие-то знания страждущим).
Кроме этого хочу сказать, что избавления от большой писанины, такие уроки лучше делать видео. Писать придется намного меньше, да и наглядность действий воспринимается в разы эффективнее.
Извините, что возможно покажусь занудой, но уверен, что таких новичков как я много и все хотят не просто повторить Ваши действия, а ПОНЯТЬ! суть происходящего.
Что касается программы FLP, думаю она эффективна при совместном понимании построения в программе и полученного кода.
Т.к. основу кода можно создать в FLP, а доводку сделать уже в ИДЕ компиляторе.
Вот мигание светодиода написанное для ИДЕ: Реализовано ожиданием программы.
/* Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду в цикле. */ void setup() { // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // зажигаем светодиод delay(1000); // ждем секунду digitalWrite(13, LOW); // выключаем светодиод delay(1000); // ждем секунду}
Вот мигание из урока 2. Видимо реализовано по времени. Хотелось бы хотя бы на таких простейших примерах видеть комментарии к полученному коду.
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
if (1) { if (! _gen1I) { _gen1I = 1;
_gen1O = 1;
_gen1P = millis();
} } else { _gen1I = 0 ; _gen1O= 0;
}
if (_gen1I) { if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis();
_gen1O = ! _gen1O;
}}
digitalWrite(13, _gen1O);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));
} else {return (currentTime >=(4294967295-startTime+period));
}
}
Добавлено (31.12.2015, 13:08)
---------------------------------------------
VirSpy писал(а):Тут есть целый раздел "Видео уроки" от автора программы, где очень наглядно разъяснено как работатьс самой программой, и как использовать ту или иную функцию.
Да, видеоуроки хороши, но более-менее продвинутых. Нет начального понимания программы - нет понимания уроков от автора
