vivaos

vivaos

пикабушник
пол: мужской
поставил 1885 плюсов и 57 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
18К рейтинг 1557 подписчиков 488 комментариев 70 постов 32 в "горячем"
3 награды
5 лет на Пикабуболее 1000 подписчиков лучший авторский пост недели
124

История о том, как мы придумали и открыли свой центр технического творчества для детей в Омске

Привет жителям Пикабу!


Хочу поделиться с вами историей о том, как мы с большой идеей и нулевым бюджетом за 2 года открыли и поддерживаем центр технического творчества для детей и молодёжи в Омске.


Если наш опыт вдохновит хотя-бы одного человека в этом сообществе - значит мы снимали это видео не зря :)


Приятного просмотра!

511

Arduino для начинающих - Прерывания по таймеру в Arduino (AVR). Создаем многозадачное устройство

Вот и подоспел 11-й выпуск из серии "Arduino для начинающих"!😊

В этом видео мы будем говорить о прерываниях. А конкретно, о прерываниях по таймеру. О том, как сделать ваши программы более гибкими и избавиться от пресловутой функции delay(), которая, по сути, останавливает работу всего микроконтроллера.

Материалы к видео находятся здесь.


Список остальных выпусков:

#0 Введение в курс. Чего ожидать от этой серии для начинающих.

#1 Немного электроники и схемотехники – без них никуда.

#2 Знакомство с Arduino. Основные компоненты для начала работы.

#3 Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер Atmega328P

#4 Arduino IDE Настройка и установка драйверов. Проверка работоспособности платы Arduino

#5 Первая программа – работаем со светодиодом и кнопкой.

#6 Условные операторы и циклы.

#7 Логические операции И, НЕ, ИЛИ.

#8 Функции и их применение.

#9 Библиотеки - как с ними работать и создать свою собственную.

#10 Передача и прием данных. Библиотека Serial и коды ASCII


Удачных компиляций! :)


P.S.: Если вы еще не состоите в сообществе "Arduino & Pi", милости просим сюда.

217

Arduino для начинающих - Передача и прием данных. Библиотека Serial и коды ASCII

Это 10-й выпуск курса "Arduino для начинающих", сегодня мы поговорим о том, как пользоваться последовательным монитором порта – получать, отправлять различные данные, в общем, общаться со своим устройством и управлять им.

Список остальных выпусков:

#0 Введение в курс. Чего ожидать от этой серии для начинающих.

#1 Немного электроники и схемотехники – без них никуда.

#2 Знакомство с Arduino. Основные компоненты для начала работы.

#3 Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер Atmega328P

#4 Arduino IDE Настройка и установка драйверов. Проверка работоспособности платы Arduino

#5 Первая программа – работаем со светодиодом и кнопкой.

#6 Условные операторы и циклы.

#7 Логические операции И, НЕ, ИЛИ.

#8 Функции и их применение.

#9 Библиотеки - как с ними работать и создать свою собственную.


Всем, как обычно, удачных компиляций! :)


P.S.: Если вы еще не состоите в сообществе "Arduino & Pi", милости просим: http://pikabu.ru/community/arduino

244

Библиотеки - как с ними работать и создать свою собственную. Драйвер двигателей L298N и ШИМ-сигнал

Привет, друзья ардуинщики! :)

Это выпуск #9 из серии видео "Arduino для начинающих" и в нем мы затронем тему создания библиотек, а также немного разберемся с тем, что такое ШИМ-сигнал и заставим двигаться колеса робота благодаря драйверу двигателей L298N.

Список остальных выпусков:

#0 Введение в курс. Чего ожидать от этой серии для начинающих.

#1 Немного электроники и схемотехники – без них никуда.

#2 Знакомство с Arduino. Основные компоненты для начала работы.

#3 Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер Atmega328P

#4 Arduino IDE Настройка и установка драйверов. Проверка работоспособности платы Arduino

#5 Первая программа – работаем со светодиодом и кнопкой.

#6 Условные операторы и циклы.

#7 Логические операции И, НЕ, ИЛИ.

#8 Функции и их применение.


Удачных компиляций и с праздником вас! :)


P.S.: Если вы еще не состоите в сообществе "Arduino & Pi", милости просим: http://pikabu.ru/community/arduino

Выпуск 9. Библиотеки и последовательный Serial-порт. Школа Integer - Основы Arduino для начинающих

Привет начинающим ардуинщикам! :)


Да, мне самому не верится, но таки вышел девятый выпуск серии Arduino для начинающих!


В нем мы затронем сразу две темы – это использование различных библиотек и последовательного монитора порта платформы Arduino.


Предыдущие выпуски вы найдете здесь: 0,1,2,3,4,5,6,7,8

35

Совершенно новая посудомойка отказывалась набирать воду, вскрытие показало..

..показало, что дело в этой треснутой пластмассовой емкости, которая, при подаче воды, полностью заполнила поплавковую камеру снизу и сработал датчик протечки :(

Совершенно новая посудомойка отказывалась набирать воду, вскрытие показало.. Ремонт техники, Посудомоечная машина, Hansa, Длиннопост

Вид со стороны трещины:

Совершенно новая посудомойка отказывалась набирать воду, вскрытие показало.. Ремонт техники, Посудомоечная машина, Hansa, Длиннопост

Отсюда возникло пару вопросов к знающим ремонтерам: как называется сия емкость? Есть ли смысл заказывать и ставить ее самому, и в какую сумму это примерно обойдется?


Заранее благодарю всех откликнувшихся! Комментарий для минусов внутри.

Показать полностью 2
162

#8 Функции и их применение. Основы Arduino для начинающих

Привет начинающим ардуинщикам! :)


После небольшого перерыва, наконец-то готова 8-я видео-статья из цикла «Основы Arduino для начинающих» и сегодня мы поговорим о таком важном инструменте в арсенале программиста, как функции. Научимся с ними работать и использовать их в своем коде.


Предыдущие выпуски вы найдете здесь: 0,1,2,3,4,5,6,7


Видеоверсия поста:

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


Если мы пойдем по пути написания программы, как мы это делали раньше, то у нас получится очень длинная вереница строк кода, где будет трудно найти начало кода для обработки полученной информации, с какого-либо нужного нам датчика.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Гораздо удобнее будет разбить нашу систему и её код на отдельные выполняемые ими функции. Например, датчику освещенности сопоставить функцию измерения освещенности, датчику температуры – измерение температуры и так далее. В результате мы получим некоторый список функций, с которыми уже будет гораздо проще работать и осуществлять различные манипуляции.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

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

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Еще одним, обязательным применением функций, являются повторяющиеся в вашей программе фрагменты кода. Зачем писать один и тот же код всякий раз, когда он понадобится, если можно написать на этом месте короткое имя функции, которая будет содержать в себе этот код? Таким образом, нам снова удастся разгрузить основной цикл от лишнего кода и сделать вашу программу более простой и, что самое важное, лучше читаемой.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Вообще всегда нужно стараться писать программу не для себя и компьютера, а, в первую очередь, для любого человека, который откроет ваш код и будет его читать. Об этом мы обязательно подробно поговорим в одном из отдельных выпусков, ну а пока поверьте мне на слово.


Итак, думаю, я достаточно убедил вас в том, что использовать функции это удобно и необходимо, давайте же посмотрим на примерах как создавать свои функции и работать с ними.


Для начала возьмем очень простую задачу. Допустим, что в вашей программе часто (а говоря часто, я имею в виду 2 и более раза), приходится использовать один и тот же фрагмент кода - например, зажигать несколько светодиодов и подавать сигнал в зависимости от состояния какого-либо пина. Можно пойти по сложному пути и всякий раз писать лишние строки в те места кода, где это понадобится, а можно всего один раз написать функцию и затем вызывать ее в нужных местах – что мы сейчас и сделаем.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Простейшая функция выглядит следующим образом:

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Она записывается вне основной функции loop и имеет такую же конструкцию. Помните, я говорил, что функция может, как принимать какую либо информацию, так и возвращать результат своей работы. Так вот, ключевое слово void означает, что наша функция не будет возвращать никаких данных в результате своей работы, поскольку в ней мы не будем производить какие-либо вычисления или считывания и нам не нужна обратная связь с этой функцией. Так как функция не только не возвращает результат, но и не принимает информацию, то ее скобки мы оставляем пустыми, что эквивалентно тому, если бы мы написали в них void.


Итак, заготовка простейшей функции готова и в ней уже написан необходимый нам код.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Давайте посмотрим, как же вызывать эту функцию в основном цикле программы. На самом деле, все так же просто – вам нужно указать имя этой функции и обязательно не забыть про круглые скобки и точку с запятой. Так как функция ничего не принимает, то мы так же оставляем скобки пустыми.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Теперь, если представить что мы программа, то алгоритм работы будет такой: сначала, как и обычно, происходит запуск микроконтроллера и его настройка в функции setup, затем мы переходим в функцию loop и затем, попадая на строчку вызова нашей функции, переходим в эту функцию. В ней так же строка за строкой выполняется каждая команда и, по окончанию функции, осуществляется выход из нее обратно на то место, откуда был осуществлен вызов.


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

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Названия функциям желательно давать исходя из того, какую задачу эта функция выполняет. Это поможет вам в будущем, да и другому человеку, читающему ваш код, понять, что делает эта функция без необходимости разбираться в ее коде.


Итак, с простейшими функциями мы разобрались. Давайте немного усложним нашу задачу. Допустим, что нам необходимо сделать считывание не всегда одного и того же пина, как мы это делали раньше, а каждый раз разного. В этом случае нам и пригодится способность функций принимать какие-то входные данные для работы.


Что бы использовать эту возможность, теперь в пустых скобках мы должны указать тип и имя переменной, которая будет отвечать за номер пина. Назовем её, например, numberPin и дадим ей тип byte, который может нести в себе число от 0 до 255.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Теперь, обращаясь к функции, мы так же обязаны указать в круглых скобках число от 0 до 255 и если этого не сделать, то компилятор выдаст вам ошибку, так как функция теперь обязана принимать какое-либо значение. В нашем случае мы будем указывать номер пина, с которым хотим работать, поставим, например, цифру 4.


Чтобы код, написанный внутри нашей функции, стал таким же универсальным, на том месте, где до этого мы писали конкретный номер пина для считывания, теперь необходимо указать переменную nomberPin, которая подставит сюда такое число, какое мы передали при обращении к функции – в нашем случае это цифра 4, то есть 4-й пин.


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


Если мы хотим передать нашей функции не одно, а несколько значений, то мы просто указываем тип и имя переменной через запятую, и затем уже используем эти переменные в коде. При вызове функции нам так же необходимо указывать значения через запятую, так как теперь функция будет ждать от нас столько значений, сколько указано в её круглых скобках. Мы можем передавать в нее всё, что угодно, будь то показания с датчиков или текстовые сообщения, которые необходимо вывести на дисплей. Все зависит от кода, который вы укажете в теле функции.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

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


Итак, мы научились сообщать функции какие-либо данные для работы. Давайте посмотрим, каким образом осуществляется возврат результата вычисления функцией.


При определении функции мы указали, что возвращаемый ею тип является void, то есть она ничего не возвращает. Изменим void, например, на тип byte и теперь в функции мы обязаны указать возврат какого-либо результата ее вычисления. Для того, что бы функция вернула какое-то значение, существует оператор return, и запись, например, return 5 означает, что наша программа, дойдя до этого момента, сделает выход из функции, при этом запомнив результат равный 5.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Вместо конкретного числа вы можете подставлять значения различных переменных, которые использовались в функции, например, это может быть считанное состояние цифрового или аналогового пина микроконтроллера. Что бы в дальнейшем работать с этим значением, мы должны присвоить его какой-либо переменной в коде, а саму запись функции вы можете представлять себе как преображение в то число, которое она возвращает. Например, можно объявить переменную result, то есть результат, и написать, что result присвоить значение нашей функции.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Тогда программа, дойдя до этого момента, будет поступать так – она переходит в указанную нами функцию, выполняется там, доходит до оператора return и запоминает значение, которое мы указали. Это значение она записывает по адресу переменной result. Теперь result равен тому числу, которое возвращает наша функция.

Что бы закрепить сегодняшний материал, попробуйте реализовать самостоятельно такой пример – пусть это будет своеобразная система для контроля бдительности машиниста поезда. Если машинист видит мигание лампочки, то он должен нажать на кнопку, что бы подтвердить что он бодрствует, если же этого не происходит, система начинает издавать звуковой сигнал, дабы разбудить нашего машиниста.

Чтобы вам было проще, разберем, что же должна делать наша программа: запуская алгоритм, через какой-то интервал времени происходит сигнализация, например, двойным миганием светодиода, после которой, спустя задержку в одну секунду, необходимо нажать на кнопку, то есть осуществить считывание сигнала с цифрового порта микроконтроллера. Затем, если состояние порта равно единице, то есть кнопка не нажата, происходит уведомление об этом звуковым сигналом и система будит машиниста, если сигнал порта равен нулю, то кнопка нажата, оповещения не происходит и через некоторое время можно повторить проверку бдительности.

#8 Функции и их применение. Основы Arduino для начинающих Arduino, Функция, Программирование, Видео, Длиннопост

Обязательно поделитесь своими успехами или вопросами в комментариях, ну а на этом про функции все, спасибо за то, что дочитали до конца и до встречи в 9-м выпуске! ;)

Показать полностью 14
83

Дорогие друзья, с Новым, 2017 Годом вас!

От лица администратора сообщества "Arduino&Pi" хочу поздравить всех ардуинщиков, программистов, а так же других пикабушников с наступающими праздниками! Пусть в новом году исполнятся все ваши самые заветные желания, проекты удачно компилируются, а интересные идеи никогда не покидают вашу голову :)

С праздником, друзья!

P.S.: В комментариях к этому посту, как и обычно, можно задавать свои вопросы и помогать другим

Дорогие друзья, с Новым, 2017 Годом вас! Arduino, Raspberry pi, Новый Год, Поздравление, 2017
45

Рубрика "Вопросы и ответы" вновь к вашим услугам :)

Совсем забылась наша традиционная рубрика "ВиО", нужно это исправлять.. Надеюсь, за это время у вас накопилось много вопросов, а так же большое желание помочь другим ;)

Тем, у кого возникает вопрос по поводу картинки, сюда. А у вас была какая-то тактика с самого начала? :)

Рубрика "Вопросы и ответы" вновь к вашим услугам :) Вопрос, Вио, Помощь, Arduino, Raspberry pi, Тактика

Мы ищем frontend-разработчика

Мы ищем frontend-разработчика

Привет!)


"Шо? опять?"

Задач так много, что мы не успеваем! И вот нам снова нужны frontend-разработчики!

Как уже стало традицией, мы предлагаем небольшую игру, где вам необходимо при помощи знаний JS, CSS и HTML пройти ряд испытаний!


Зачем всё это?

Каждый день на Пикабу заходит 2,5 млн человек, появляется около 2500 постов и 95 000 комментариев. Наша цель – делать самое уютное и удобное сообщество. Мы хотим регулярно радовать пользователей новыми функциями, не задерживать обещанные обновления и вовремя отлавливать баги.


Что надо делать?

Например, реализовывать новые фичи (как эти) и улучшать инструменты для работы внутри Пикабу. Не бояться рутины и удаленной командной работы (по чатам!).


Вам необходимо знать современные JS, CSS и HTML, уметь писать быстрый и безопасный код ;) Хотя бы немножко знать о Less, Sass, webpack, gulp, npm, Web APIs, jsDoc, git и др.


Какие у вас условия?

Рыночное вознаграждение по результатам тестового и собеседования, официальное оформление, полный рабочий день, но гибкий график. Если вас не пугает удаленная работа и ваш часовой пояс отличается от московского не больше, чем на 3 часа, тогда вы тоже можете присоединиться к нам!


Ну как, интересно? Тогда пробуйте ваши силы по ссылке :)

Если вы успешно пройдете испытание и оставите достаточно информации о себе (ссылку на резюме, примеры кода, описание ваших знаний), и если наша вакансия ещё не будет закрыта, то мы с вами обязательно свяжемся по email.

Удачи вам! ;)

Показать полностью
Отличная работа, все прочитано!