478

Arduino по-взрослому. Си и иже с ним. Цикл уроков (идея).

Доброго времени суток, Пикабу! Сразу обращусь к своим 4 подписчикам: Я не представляю, что заставило Вас подписаться на меня, но обещаю, что как только завершу хоть один из текущих проектов, сразу напишу какой-нибудь пост по электронике и/или программированию.

Arduino по-взрослому. Си и иже с ним. Цикл уроков (идея). Arduino, Урок, Avr, Си

Многие слышали о платформе для прототипирования и разработки Arduino или даже имели опыт работы с ней. Но многие также знают о медлительности, памяте- и ресурсоемкости штатного языка программирования и здешних библиотек. Поэтому некоторые (и я в их числе) рано или поздно отказываются от этого языка и переходят, например, на другие. Прошивки для Arduino, так же как и для «голого» микроконтроллера семейства Atmel AVR можно писать на ассемблере, си, бейсике, паскале, даже на питоне, хотя я считаю, что это уже за гранью добра. Мой преподаватель, например, использует такую вещь, как Алгоритм Билдер.

Arduino по-взрослому. Си и иже с ним. Цикл уроков (идея). Arduino, Урок, Avr, Си

Ну а я, поскольку некоторое время использую язык Си, хочу приобщить как можно больше людей к нему. Переходя к сути, я хочу написать цикл уроков по программированию микроконтроллеров (в том числе нереально популярной платформы Arduino) на AVR C. Что это дает и в чем отличие, написано в первой, вводной, статье цикла. Уже готовы несколько статей, пока планируется около десятка в числе "базового курса".

Суть всего поста: хочу услышать мнение аудитории о идее в целом и о мелких нюансах, которые будут всплывать в ходе работы. Если кому-то будет интересно - в комментах могу скинуть ссылочку.

P.S.: Нет, в посте скинуть ссылку не мог, так как это сочли бы рекламой сайта, а я просто хочу узнать мнение общественности. Когда будет готово, скину на Пикабу сборник статей курса

Дубликаты не найдены

+5

Двумя руками ЗА.

Мое мнение...

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

Например моргать светодиодом, а в качестве Д/З, моргать с помощью цикла или инверсией

раскрыть ветку 3
+3
От простого к сложному был хороший курс у @vivaos
раскрыть ветку 1
+1
Да много их джеремиблюмов
+2

А начать надо с описания. Где покупать, что и для каких целей подойдет (можете считать этот вопрос от меня)

+3
Буду ждать уроков. Как раз задумался изучить Си, но для программирования АVR
раскрыть ветку 2
+3
Фактически никакой разницы нет. Возможно, регистры будут называться по другому, а в остальном абсолютно то же самое
раскрыть ветку 1
+1

так и есть)

А внутри одного семейства контроллеров вообще различий нет почти)

+4
На мой взгляд таких курсов уже пруд пруди, к тому же от AVR уже давно пора отказаться и перелезть на stm32. Я, если честно, был бы рад курсу по stm32 от cubemx. В интернете по нему почти все без библиотек HAL.
раскрыть ветку 10
+2

В STM32F7 каком-нибудь любой таймер сложнее всех Ардуин вместе взятых. Это профессиональный инструмент и специализированный. Ардуина просто и душевно ))

раскрыть ветку 5
+4

Не так страшен STM32, как его возможности! Конечно сравнить с ардуино нельзя, но если осилил AVR на "голом" C, как ТС предлагает, то переползти на STM32 будет уже не так сложно. Не скажу, что STM32 "профессиональный" инструмент. Полно хобби проектов на них делается.

У меня вот электроника как хобби, но я за пару дней освоил базовую периферию EFM32 (тоже на Cortex-M ядрах МК, от Silabs только) и написал простенькую прогу, которая делает всё, что нужно мне. Дальше уже логику самой программы только дописать надо.

раскрыть ветку 3
+2
Тут автор тоже предлагает кодить под ардуино на си, а не в родной среде на вайринге.
+1

А что именно непонятно в hal?

раскрыть ветку 3
+1
Лично я так и не смог осилить DFU. А кому-то будет полезно с самого начала.
раскрыть ветку 2
+5

Залупи про подключение к тв через rca.

раскрыть ветку 16
+3

Сомневаюсь, что это входит в состав базового курса... Но обязательно попробую то реализовать, пусть и вне курса уроков

раскрыть ветку 7
+4

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

раскрыть ветку 5
+2

Не рекомендую кстати забывать предложение комрада @MIIRIIK Очень прибыльная ниша.


Дам маленькую наводку. MAX7456. А сфер применения у нее - ойвей. Как минимум два больших сообщества.

-1

Уже было 10 раз )) Для ТВ есть всякие Raspbery Pi, full hd и всё такое.

раскрыть ветку 7
+3

А питать вы их чем будете?

А для чего такая избыточность железа?

раскрыть ветку 4
+1

Где было? Вы понимаете что написали? Это из разряда "потому что я могу" а не тыкнуть кабель в. hdma

раскрыть ветку 1
+2

Есть замечательные миросхемки ATtiny13/ATtiny13a. На платформе Arduino IDE практически нет шансов запихнуть в них хоть что-то сложнее мигания диодом. При реализации доработок освежителя воздуха с учетом освещенности с использованием таймера, разумеется, пришлось писать на С. Использовал Atmel Studio.

раскрыть ветку 1
+1
Гуглим DigiSpark - это старший брат этой мелочи с 8к памяти. Стоит в районе 100 р. с доставкой из Китая. Шьется из Arduino IDE, только надо доп драйвер.
+2
Хочу!
+2

Слышал от "знающего" человека (Сам я не силен в данной сфере) что библиотеки Ардуинки написаны весьма криворуко и даже на поверхностный взгляд там много чего можно было написать более оптимально что несомненно в разы бы повысила бы скорость работы программ. К сожалению пока что никто из "знающих" не взялся за эту задачу.

+2

С удовольствием ознакомлюсь, хоть и поклонник Bascom AVR.

раскрыть ветку 1
+1

Я тоже многое пробовал, но остановился на баскоме. Почему-то только в нём у меня получается вменяемый результат

+2
Наконец-то! Как я рад что ардуино сообщество начинает свое продвижение не только в сторону продаж( разных модулей и разновидностей плат), но и в плане программирования! Желаю Вам удачи в развитии проекта. Буду следить за продвижением! И не слушайте дураков, которые говорят что ардуино иде сделано для простоты программирования, оно сделано для детей. Для серьезных проектов надо использовать серьезный подход.
+2

Жги, парень! Бизнес-модель со временем отыщется. Вопрошающим "А зачем оно надо?" могу сказать, что есть люди, которым паяло в руки давать нельзя, а вот лего-модули в виде ардуиновских блоков они заказать могут. Пример: подарил ардуино-кит племяшам, они жопорукие, но скетчи бодрее меня уже пишут) А т.к. живут в довольно глухой деревне, там уже проблематично найти контроллеры и прочую рассыпуху, до ближайшего радиомагазина больше сотни километров. А вот прикладное изучение Си и контроллеров им точно не повредит. Ну и ценник для ардуиновских поделок весьма доступный

+2

Ах кто бы HiAsm для контроллеров портировал, мечты мечты. Алгоритм Билдер кстати крутая штука, писал программки на нем, компактно получалось. Жаль он развиваться перестал лет 8 назад.

раскрыть ветку 1
+1
В 17 году вроде бы последнее обновление. Раньше тоже использовал,(в году 2006) эта софтина остановила моё развитие на какое-то время. Потом, после изучения пары языков, стало проще писать с нуля, чем строить в билдере. Да и программированием это назвать нельзя. Хотя, не могу не согласиться, что некоторые люди умудрялись делать довольно сложные проекты в этом конструкторе... По новостям, они кажется 5тую версию пишут, даже на форуме есть ветка и сборки сырые.
+2

Интересно было бы увидеть реализацию ассемблерных вставок

раскрыть ветку 2
+2

asm("nop"); - вот и вся реализация тебе )

0

так этого в инете полным полно, все нормальные перцы их юзают на микроконтроллерах  или целиком на ассемблере

+6

Сам комплекс Arduino (плата + бутлоадэр + IDE) задуманы программироваться максимально просто и быстро, не изобретайте велосипед. Хотите сделать что нибудь хорошее для сообщества ардуино, возьмите пример с людей которые написали библиотеку cyberlib.h. Вообще с моей точки зрения направление ардуино иде, это будушее, в него уже прикрутили поддержку стм и пик32, проскакивают плк начального уровня сименс которые могут программироваться через ардуино иде не говоря о тучи открытых платформ. Есть проблемы производительности и глючности некоторых библиотек, но они решаются.

раскрыть ветку 39
+5
А отладка в этом "будущем", всё так же по uart?)
раскрыть ветку 1
+1

А как-же :)

+8

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

раскрыть ветку 16
+2

В Arduino IDE есть возможность прямого обращения к любым регистрам и написание хоть на ассемблере.

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

раскрыть ветку 5
+1
Было бы интересно если бы писали под zero или m0, так как эти платы куда мощнее а статей и видео по ним совсем мало
0

Добрый день, извиняюсь, что не по теме, но может вы подскажете, с чего начать изучать программирования, если знания только школьные) и в 27 не поздно начать изучать программирования с перспективой в дальнейшем, чтобы это стало основой работой? Спасибо заранее.

раскрыть ветку 8
+4

Вы не верно поняли. ARDUINO не считая быстрой среды прототипирования это в первую очередь среда обучения. К примеру я в своих поделках (ребилд конвейера небольшого производства вафель) тоже пользуюсь ардуинками и их компилятором с их библами. До этого юзал к примеру atmel studio и самодельные платы с нуля. Сейчас удобно. У человека лежит 5 плат под 5 рецептов. И столько же запасных. И работает ни хуже завода. И стоит копейки. Главное не надо кого-то учить программировать конвейер под разные рецепты.

+3

Arduino IDE - это игрушка для домашних/хобби/DIY проектов. Для серьезных проектов не подходит по тем причинам, которые изложил ТС. В arduino core крутится слишком много всего. Тот же Timer0 задействован для millis(), micros() и т.д. Ни о каком "серьезно" не может идти речи с Arduino IDE.

Хотя для домашних и иных "несерьезных" проектов вполне. Ибо доступно очень и низкий порог вхождения. Но я согласен с ТС, что серьезные вещи лучше делать без программной обвязки ардуино.

раскрыть ветку 1
-1

На Timer0 крутится вычисление даты и что? Очень удобно. Можно переназначить таймер для своих нужд, не будет время только работать, вообще не проблема если знаешь что делаешь. "Много всего" это 512 байт загрузчика с открытым кодом?

Для "серьезных вещей" обязательно включить WDT и тщательно думать над кодом. Ардуина вполне подходит, а вот Микро паскаль нет, вот там треш компилятор, глюк на глюке.

+2

Мне больше нравится CodevisionAVR, правда он платный "условно". Можно мышкой настроить, частоты и типы ШИМ, период таймера 1-2-3 и тип прерываний, по переполнению, достижению значения. Отключить периферию.

Причем настройки сформированные на Си копируются и вставляются в Arduino среду. Очень удобно когда нужно изменить частоту ШИМ или настоить прерывания. В даташит лезть не нужно.

Код вполне нормальный компилирует, есть нормальный набор библиотек, минимум ошибок (ни кто не жаловался в отличие от MicroPascal, MicroBasic).

+1

Сам по себе Ардуино прекрасен, но есть одно огромное НО! из-за которого я забросил ардуиностроение. Платы Ардуино жутко глючные. Я понимаю что все платы которые у меня есть - это клоны, за исключением одной - одна плата у меня оригинальная, но сути это не меняет.

раскрыть ветку 7
+5

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

раскрыть ветку 1
+4

Да, есть косяки, но чаще это ошибки кривых рук :)

раскрыть ветку 1
+3

Ни одной глючной платы не видел. Шилды расширения могут глючить и их библиотеки.

Одну сам сжег, микроконтроллер и USB интерфейс на плате частично, в одну сторону работает, программировать программатором. Всего-то 24В подал на плату, что сразу дымиться то? ))

раскрыть ветку 2
-5

Низкий порог вхождения-это прекрасно, но он порождает говнокодеров.  Пусть учаться работать, думая своей головой.

С удовольствием (надеюсь) посмотрю курс.

раскрыть ветку 7
+3

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

раскрыть ветку 6
ещё комментарии
+2

Работа с чтением карточек интересна (на скрине алгоритмбилдера).

Я подписался.

раскрыть ветку 18
+5

Пока весь курс не готов, статьи будут выкладываться несколько раз в неделю (ориентировочно - три) на сайте: http://www.dubos.ru/arduino-lessons.html

раскрыть ветку 17
+6

Какой молоденький, а уже технический задрот (в хорошем смысле этого слова).


Вот, а говорят молодежь в стране только АУЕ и прочее.

Крепко жму руку.

раскрыть ветку 16
+1

@Dubos, сайт с уроками, как я понимаю, больше не работает?

раскрыть ветку 6
0
Он временно закрыт по техническим причинам. Я надеюсь, что я из устраню на новогодних выходных
раскрыть ветку 5
+1

Так же огромное желание освоить С. Только вот с чего начать, хотел спросить про литературу, может есть Автор и название ?

раскрыть ветку 1
+1

Успехов, а пока может где нибудь выложите информацию простым текстом с доступом по ссылке? В vk довольно удобный редактор статей

раскрыть ветку 2
+1
Подписался, но я нубас. Будут курсы с нуля?
раскрыть ветку 3
0

Именно так и планируется. Пока курс подготавливается, статьи постепенно (две-три статьи в неделю) публикую на сайте: http://www.dubos.ru/arduino-lessons.html

раскрыть ветку 2
0

Последние пару дней что то не открывается эта ссылка.

раскрыть ветку 1
+1

Я лет 5 назад купил самый большой комплект матрешки и рассыпухи коробку еще с китая, даже паяльную станцию купил. Но запал пропал. Теперь жду твоих уроков, все лучше чем в вовку шпилить вечерами.

+1

ТС, всё неплохо, только

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

Штатный язык ардуино - C++. Процессинг просто набор оберток с функциями, дефайнами и стартап кодом. Но это всё еще C++.

И AVR C не существует. Есть C, а есть AVR. Есть компиляторы C под AVR. Но как бы C там такой же как и везде, это не какой-то отдельный диалект.

+1
Это интересно
+1

было бы хорошо. Подписался.

+1

Хрен его знает при чём здесь ардуино конечно, вы же предлагаете отказаться от этой платформы быстрого прототипирования и пересесть на Си и AVR.

раскрыть ветку 1
+1
Я предлагаю программировать на Си. А в сфере прототипирования платформе (аппаратной) Arduino нет равных
+1
Это даа, но есть что-нибудь более удобоваримое, чем "дратути друзяа"? Грачик, конечно, молодец, но методист из него никакой, а докладчик еще хуже. Сейчас он за цикл для детского канала робототехники взялся. Вот дети охуевают. А копировать у него под себя есть чего.
+1

Для меня нет ни чего более удобного чем "FlProg"

+1

Зашибись!.. Будем изучать.


А есть про использование Ардуино в музыкальных целях?..


Хочу Breath Controller сваять именно.


Ну и всякие там MIDI-контроллеры, возможно...


P.S> Ну, впрочем, по гуглению в Ютубе "DIY breath controller" всякое интересное выводит. Но может есть собранная уже информация...


Например https://www.youtube.com/watch?v=G8MM0KMpOZI https://www.youtube.com/watch?v=Qsfqr65thCY

+1

Требуем. Подписываюсь. 😊👍✨

+1

Будущее называется modm.io ;)

+1

Респект тебе :)

+1

Да уж, напиши) зря, что ли подписан)

+1
Подписался, интересна эта тема, сам писал на си Шарп, но только для эмуляторов на PC
раскрыть ветку 1
+1

Пока весь курс не готов, статьи будут выкладываться несколько раз в неделю (ориентировочно - три) на сайте: http://www.dubos.ru/arduino-lessons.html

+1

Трушные ребята уже давно кодят на сях под атмелки. Интересней было бы почитать гайды на С под ESP. Но раз уж готово, то выкладывай.

раскрыть ветку 2
+1

Пока весь курс не готов, статьи будут выкладываться несколько раз в неделю (ориентировочно - три) на сайте: http://www.dubos.ru/arduino-lessons.html

0

еще интереснее было бы почитать под CSR

0
Для микроконтроллеров надо писать на понятном им языке - ассемблер. Вы можете сделать прогу на С, С++, Java... Если Вас устроит, то ок. Но, полностью, использовать все возможности AVR и других поличется только в машинном коде (ассемблер).
-2

> ардуино

> серьёзно


Как говорится, choose one.


Смысл использовать плату, у которой даже номера портов обозначены не AVR'ные, а из дебильного фреймворка?

раскрыть ветку 5
+2

Хоспади, тоже мне проблема. Гугли "arduino X pinout" и найдешь кучу красивых картинок с распиновкой, типа такой. А на счет что ардуино - это несерьезно, я согласен. Но ТС соб-но и предлагает не саму ардуину юзать, а просто готовые платки и голый C. Это уже не ардуино я бы сказал, а просто AVR с готовой базовой платкой.

Иллюстрация к комментарию
раскрыть ветку 4
0

Это не "тоже мне проблема", это ставит крест на всей затее. ТС не получает никакого профита от ардуино, кроме названия.

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

раскрыть ветку 3
Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: