Программирование ардуино на Си

Eagle7
Offline
Зарегистрирован: 26.08.2020

Здравствуйте,дорогие спецы по ардуино

Искал материалы по данной теме,но в большинстве случаев все сводилось к тому,что учат только как светодиодом замигать и все

Можете пожалуйста скинуть хороший источник по данной теме или книгу

 

b707
Offline
Зарегистрирован: 26.05.2017

Не можете найти, потому что "учиться программировать Си в Ардуино" - это все равно что "учиться водить зеленую машину".

Си в ардуино точно такой же, как в любом другом месте :), поэтому ищите просто любой хороший учебник по С/С++. В прикрепленной теме в песочнице есть несколько ссылок

rkit
Offline
Зарегистрирован: 23.11.2016

Нету "учебника С/С++". Это два разных языка. Ардуино программируют на С++. Точка. В учебнике С нету информации, чтобы понять, как работать с апи arduino. Хватит вводить новичков в заблуждение.

nik182
Offline
Зарегистрирован: 04.05.2015

Я вот не знаю С++. 25 лет на Си пишу. Как то это не мешает в среде ардуины делать работающие программы. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А ведь еще совсем не пятница. Пошел за попкорном.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Нету "учебника С/С++". Это два разных языка.

Да лан. "два разных" :)  Все знают, что C++ - это просто "С с классами". :)

Прошу прощения, у меня нет университетского образования. я самоучка. Для меня Си и С++ всегда было неразделимым целым и менять это мнение не собираюсь :))))

 

rkit
Offline
Зарегистрирован: 23.11.2016

Ну вот именно, что самоучка советует учебники, содержимого которых сам не знает.

b707
Offline
Зарегистрирован: 26.05.2017

Завтра уже пятница. можем начинать обсуждение острой темы "С и С++" :)

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

rkit пишет:

Ну вот именно, что самоучка советует учебники, содержимого которых сам не знает.

вставлю свои пять копеек, лежали у нас вышедшие из строя ИБП (3квт),ходил я вокруг них, ходил и всё не решался
взяться за ремонт, так как в электронике очень давно, более 50 лет, понимаю насколько это сложно...
А вот один молодой человек в электронике совсем никак, то-есть совсем, даже на начальном уровне, взялся и, отремонтировал, 7 штук из восьми, в восьмом постреляло всё вплоть до микропроцессора, но он и его и заменил и ПО прошил, но пока не поднял...попутно более полсотни блоков питания АТХ починил, чтоб руку набить...

А если бы был не самоучка? Лень и отговорки нас разрушают...
 

sadman41
Offline
Зарегистрирован: 19.10.2016

И этого молодого человека звали... Альберт Эйнштейн.

Eagle7
Offline
Зарегистрирован: 26.08.2020

Спасибо!

Почему задал такой вопрос, мне кажется,что для МК немного другие команды нужны и сам подход(могу ощибаться,потому что только начал изучать программирование)

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

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

ua6em пишет:

А если бы был не самоучка? 

"Не бойтесь делать то, что не умеете. Помните, ковчег построил любитель, — профессионалы построили Титаник."
Дэйв Берри

ЗЫ: когда был сильно моложе и работал на одном производстве, тамошний киповец очень сильно на меня обижался, типа, чего тебе не сидится, чего ты все лезешь да чего-то изобретаешь... )))

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

А если бы был не самоучка? Лень и отговорки нас разрушают...

это не лень, это называется "опыт".

Никогда не увлекался электроникой, пока не взял в руки ардуино. За последние два года починил : дома - стиральную машину, микроволновку, телевизор, на работе - компрессор и прибор подготовки воздуха. (перечисляю только то, что кончилось успехом)

И знаешь, какой вывод я сделал по итогам каждой из авантюр? - "прикольно, но второй раз не полезу". А у тебя опыт - 50 лет. Не удивительно. что ты ничего не рвешься чинить :)))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Начинать надо с изучения просто С, без ++ ;)) по книге КиР (Керниган и Ричи), хотя бы первые главы (первые 4 - обязательно, 5 и 6 - желательно). Решая примеры и запуская код в любом онлайн ИДЕ или поставив GCC на свой компьютер. Это даст возможность программировать и понимать код.

Потом можно переходить к объектному программированию. Можно Страуструпа читать, можно, если тяжко, что-то из серии "для чайников". Не сразу всё. Если уже учился программированию, то легче будет. Современные языки - они почти все объектные.

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

----------------------

Ты про особенности контроллеров (МК) спросил? Общие правила программирования остаются. Уже нет (почти нет) тех МК, для которых нужно было вылизывать каждый байт кода на языке ассемблера. Но памяти часто мало и её нужно экономить, многие МК имеют Гарвардскую архитектуру (погугли), что дает дополнительные требования и ограничения.

-NMi-
Offline
Зарегистрирован: 20.08.2018

А про ОНЛАЙН IDE это про то, что я подумал??? Чо, так можно было??? А ссылки будут?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

-NMi- пишет:

А про ОНЛАЙН IDE это про то, что я подумал??? Чо, так можно было??? А ссылки будут?

Садись, дружок, я расскажу тебе про Яндекс! ;))))

Вот тебе первое сцылко из яндеха: https://ideone.com/

--------------------

лень искать ысчо. Есть такие, которые асм код даже для АВР процессора показывают. ;)))

Ищите и обрящете, толците и да отвезится вам. (с)

-NMi-
Offline
Зарегистрирован: 20.08.2018

А статус пинов там где???  Яж про дурдуину... Есть ОНЛАЙН шоп без излишеств, хотя-бы посмотреть на пины и сериал монитор???

Eagle7
Offline
Зарегистрирован: 26.08.2020

Спасибо за совет

насчет особенностей

я думал,что ардуино на си выглядит по другому в отличие от родного языка processing,а значит надо знать команды не processing,а команды Си(то есть вращение серво машинкой или что-то другое)

новичок в программировании,поэтому такие вопросы)

rkit
Offline
Зарегистрирован: 23.11.2016

Родной язык arduino - C++. Не С, не processing, а C++.

b707
Offline
Зарегистрирован: 26.05.2017

Eagle7 пишет:

я думал,что ардуино на си выглядит по другому в отличие от родного языка processing

вы что-то путаете, ардуина на processing ВООБЩЕ не программируется. Язык processing - это скрипты для виндоуз, кмк

Eagle7
Offline
Зарегистрирован: 26.08.2020

Буду знать

Говорю же,новичок пока что в этом деле)

А ассемблер хорошо было бы изучить?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Eagle7 пишет:

 в отличие от родного языка processing

Уже не первый раз вижу это бред про процессинг? Вот ты, как новичок, откуда это взял?

Была, да вроде и есть, среда процессинг с неким языком. На ее основе написано ИДЕ ардуино. Но к программированию контроллеров эта конструкция не имеет никакого отношения.

Но еще раз спрашиваю: а откуда ты взял фразу "родной язык - процессинг". Чтобы знать источник бедового тезиса.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Eagle7 пишет:

А ассемблер хорошо было бы изучить?

;))))))))))))))))))) Исключительно наизусть!

--------------

Слушай! В песочнице есть прикрепленное сообщение, там ссылки на книги, которые полезны. Начинай с них, а не с форумов, ОК?

Eagle7
Offline
Зарегистрирован: 26.08.2020

Не так часто бываю на этом форуме,поэтому правила не знаю(да,надо почитать)

А что такого спросить в разделе для новичков?Вы,можно сказать,даете вектор по изучению МК

В начале темы можно сказать задал один вопрос,а появилось целое рассуждение

Отличный источник знаний для новичка,тем более про ссылки на книги на форуме я не знал

И почему-то на форуме у вас ничего нельзя спрашивать,задавал как-то вопрос,тоже отнеслись странно

Как будто особенное сообщество со своими правилами,вопросы же по теме,а не о другом

Тем более чего стоит помочь новичку 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Да не в правилах дело а в сетевой этике. Задавать вопросы детского уровня не принято на профессиональных форумах. Мы вот раздел "песочница" у себя сделали, но злоупотреблять им не стоит. Не в обиду. Просто представь, что подобные вопросы задаются практически каждый день. Мы же не на работе, где обязаны иметь терпение ;)))). Следовательно еще пара вопросов и потечет глумление и негатив, оно тебе надо? Пока все милы и доброжелательны... ты не поверишь, как быстро это может измениться!

И да, к слову, а почему ты не прочел прикрепленную тему "для все новичков"? Там и ссылки и куча полезного именно для новичка. Мы её долго и старательно строили.

Eagle7
Offline
Зарегистрирован: 26.08.2020

На форум два раза только заходил

И да,спасибо за грамотное разъяснения  ситуации

А то в прошлый раз кроме негативной реакции больше ничего не сказали)

Теперь буду знать как у вас здесь все устроенно 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rkit пишет:

Родной язык arduino - C++. Не С, не processing, а C++.

"вы хочете песен? Их есть у меня!"

Родной язык в ардуино это машинные команды. А С++ это в Ардуино IDE

rkit
Offline
Зарегистрирован: 23.11.2016

Все с идиотскими замечаниями высказались?

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Все с идиотскими замечаниями высказались?

нет, нет, можно мне еще?!

asam пишет:

Родной язык в ардуино это машинные команды.

родной язык ардуино - итальянский!

Sono un italiano, Un italiano vero!!

-NMi-
Offline
Зарегистрирован: 20.08.2018

rkit пишет:

Все с идиотскими замечаниями высказались?

Нет! Тема сисег нираскрыта!!!  Хде-ж можно "пагамить" дурдуину, допустим, с тела или планшета? Уотт фчём вапрос. Йесть варики???

Morroc
Offline
Зарегистрирован: 24.10.2016

Вроде тут можно https://www.tinkercad.com/

-NMi-
Offline
Зарегистрирован: 20.08.2018

Morroc пишет:

Вроде тут можно https://www.tinkercad.com/

Тут ваще бес сисег, ибо не выросли исчо)))

"гамить" на дурдуине с пазло-кодом это очень современно и креативно!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

rkit пишет:

Все с идиотскими замечаниями высказались?

нет, нет, можно мне еще?!

asam пишет:

Родной язык в ардуино это машинные команды.

родной язык ардуино - итальянский!

Sono un italiano, Un italiano vero!!

капитэ итальяно?

НиколаКорень
Offline
Зарегистрирован: 04.06.2016

Пару лет назад писал код в Atmel Studio 7, компилировал, прошивал ардуино мини через самодельный программатор из ардуино уно, при этом использовал CV AVR именно для загрузки hex файла, потому что там есть вариант ардуино прошивать и по-ходу встроен avrdude. Дело было давно, поэтому не помню, сейчас заново вспоминаю, ищу информацию, приобрел программатор UsbAsp, так как с дуней слишком много проводков.

Кто, что знает по этой теме - пишите поподробнее, спасибо!

НиколаКорень
Offline
Зарегистрирован: 04.06.2016

У меня было куплено много дунек мини, вот пришлось придумывать как их прошивать языком СИ, и мне понравилось больше, чем процессингом писать, по крайней мере чувствуешь себя программистом) 

b707
Offline
Зарегистрирован: 26.05.2017

НиколаКорень пишет:

по крайней мере чувствуешь себя программистом) 

почувствуй себя хакером, найди информацию о прошивке USB-ASP-ом сам - в гугле инфы море

НиколаКорень
Offline
Зарегистрирован: 04.06.2016

Сегодня как раз это сделал. 

Подключил дуню через этот программатор:

https://aliexpress.ru/item/32670511994.html?spm=a2g0s.9042311.0.0.264d33edhz7NDY&_ga=2.66458862.1772834680.1620046841-1795391527.1606565040

Проверочный код на Си в Atmel Studio 7, работает как положено, моргает встроенный светодиод:

#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
int main(void)
{
	DDRB = 0xFF;
	while(1)
	{
		PORTB = 0xFF;
		_delay_ms(220);
		_delay_ms(220);
		PORTB = 0x00;
		_delay_ms(220);
		_delay_ms(220);
	}
}

Скомпилировал, а на плату закинул через программу:

Программа для USBAsp V2.0

Программу разработал «Боднар Сергей», работает не только с китайским программатором USBAsp v.2.0, но и другими программаторами. Первым делом скачиваем программу, разархивируем и запускаем «AVRDUDEPROG.exe».

b707
Offline
Зарегистрирован: 26.05.2017

шикарный проверочный код :)

НиколаКорень
Offline
Зарегистрирован: 04.06.2016

не стал запариваться, сразу всем портом мигает)

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Фигасе, тема всколыхнулась)) Хоть и не Пятница, накину на вентилятор))))

rkit пишет:

Нету "учебника С/С++".

Таки, есть! Первый же попавшийся в моей жизни - Шилдт, "полное руководство" - первые 200+ страниц про подмножество С. Пока до раздела С++ дочитал, успел несколько больших и важных проектов запилить. Потом пришлось все с нуля на человеческом языке переписывать 

НиколаКорень
Offline
Зарегистрирован: 04.06.2016

Поподробнее о чем речь?

rkit
Offline
Зарегистрирован: 23.11.2016

Rumata пишет:

подмножество С

Подмножество C это не C. Этак у тебя будет учебник по русскому/французскому языку, потому что в обоих есть буква А.

rkit
Offline
Зарегистрирован: 23.11.2016

-

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

rkit пишет:

Подмножество C это не C. 

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Завидоваю я вам... По нескольку больших и важных проектов за один присест делаете. А за второй - переписываете. А то сидишь тут неделями над попытками понять, как в HID report descriptor запихать правильно несколько Usage pages.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

sadman41 пишет:

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

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

А большие они были по количеству строк. Во второй редакции в несколько раз уменьшились))

chip7777
Offline
Зарегистрирован: 29.01.2022

rkit пишет:

Родной язык arduino - C++. Не С, не processing, а C++.

Согласно https://arduino.github.io/arduino-cli/0.20/sketch-specification/ в проект могут входить как .cpp так и

.c Поэтому и вопрос. Можно ли весь проект написать на с, кроме файла .ino. Насколько C для ARDUINO отличается от стандартного. Я пользуюсь книгой "Программирование на языке С" - Подбельский, Фомин

b707
Offline
Зарегистрирован: 26.05.2017

chip7777 пишет:

Можно ли весь проект написать на с, кроме файла .ino. Насколько C для ARDUINO отличается от стандартного. Я пользуюсь книгой "Программирование на языке С" - Подбельский, Фомин

можно, при условии, что вы в своей программе не будете использовать С++.

"С для ардуино" не существует, в ардуино используется стандартный GNU C

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

"С для ардуино" не существует, в ардуино используется стандартный GNU C

только без std::   Примеры  с cout и cin работать не будут

chip7777
Offline
Зарегистрирован: 29.01.2022

b707 пишет:

chip7777 пишет:

Можно ли весь проект написать на с, кроме файла .ino. Насколько C для ARDUINO отличается от стандартного. Я пользуюсь книгой "Программирование на языке С" - Подбельский, Фомин

можно, при условии, что вы в своей программе не будете использовать С++.

"С для ардуино" не существует, в ардуино используется стандартный GNU C

Спасибо

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

chip7777 пишет:

Поэтому и вопрос. Можно ли весь проект написать на с, кроме файла .ino. Насколько C для ARDUINO отличается от стандартного. Я пользуюсь книгой "Программирование на языке С" - Подбельский, Фомин

Весь проект написать на Си можно.

Но только именно - весь проект.

Использование каких-либо сторонних библиотек - под большим вопросом.