Уроки Arduino #2 - работа с монитором COM порта
HTML-код
- Опубликовано: 1 фев 2017
- В этом уроке рассмотрим такую важную часть работы с Arduino как монитор порта. Научимся отправлять данные с Ардуино и читать их на компьютере, а также принимать отправленные с компьютера данные самой Ардуиной.
Следующий Arduino урок будет про условные операторы и операторы выбора.
▼ Текстовая версия ▼
alexgyver.ru/lessons/serial/
▼ Огромный стартовый набор GyverKIT ▼
kit.alexgyver.ru/
▼ Уроки Arduino на сайте ▼
alexgyver.ru/lessons/
▼ Модули и датчики с Али ▼
alexgyver.ru/arduino_shop/
▼ Страница "Заметок Ардуинщика" ▼
alexgyver.ru/arduino_lessons/
Теги: #arduino #уроки #ардуино #alexgyver
●●●●●●●●●●●●●●●●●●●●
► Основной канал: / alexgyvershow
► Поддержать автора alexgyver.ru/support_alex/
► Официальный сайт: alexgyver.ru/
► Почта: alex@alexgyver.ru Наука
Невозможно оторваться! Жду не дождусь своих собственных компонентов, чтобы начать практиковаться.
На 4-м курсе универа, код знаю очень плохо, да и не особо было интересно. Недавно узнал про ардуино, стало интересно кодить. А посмотрев твои ролики все понятно стало сразу. Спасибо тебе)
Начал изучать ардуино по вашим видео, очень доступно и понятно!
Максим Морган ага
мне тоже
Ну как, два года спустя, чему научился?
@@optimanshow А два?
Максим Морган шел 2019 год, как освоил ардуино?
супер конспект. от нас лайк.
Ох. Нельзя два лайка поставить. Один ставлю как полагается. Второй держи устно (Like). Лучшие уроки по Ардуинке, что встречал на просторах Ютуба. С нетерпением жду продолжения.
Годный канал, отличная подача!
Где же Ты был, когда Я робота клепал, по косым урокам, в которых говорилось "делай так, просто делай так и не спрашивай почему", а не рассказывалось откуда ноги растут!
А теперь Я делаю наливайку для пива, по Твоим урокам и это здорово! Спасибо Тебе огромное!
Cпасибо, все понятно и доступно. Всех благ!
Спасибо тебе огромное!!!
Всё разложено по полочкам от А до Я и не остаётся вопросов от слова *absolutely*. Качественный контент от человека со знанием своего дела и как показывает практика, думающего за нас, а это очень важный момент!.
P. S. Вперёд в кремниевую долину!
Неа. Я уже задолбался пересматривать на 4:28 всё как-то слишком непонятно.
@@Obeme77777Serial.println() - команда, которая выводит на экран то, что ты ввёл в скобочках или что записано в переменной. Но при этом переводит на следующую строку.
A Serial.print() - тоже самое, но не переводит на след. строку
Легче на самом деле попробовать самому пописать код, тогда станет ясно)
Очень качественные и доступные материалы. Спасибо!
Отличные видео!!! Автору респект!!! Мне как начинающему - просто находка!!!!! Ждем новых видео...
самые годные уроки что я сейчас нашёл!!!
Молодец. Проект очень очень полезный. Многих тебе сил. Не слушай троллей и неудачников.
Спасибо ! Четко и просто без лишнего! А то начинаешь понимать этот язык программирования и каааааак загадят буфер обмена (мозги) так сразу все забываешь . Давно искал искал подобные видосики.
Ты все очень доходчиво объясняешь и надо бы упомянуть о действиях с физической системой
Твои уроки лучшие! Продолжай в том же духе!
веду конспект...честное слово)) ..так лучше запоминается
+Nikita Degterev молодец)
И чё, как, выучил?
@@user-tq1lr3uv5t та всё, видишь, пропал человек. Больше нет его. Ушел программировать наверное
@@vitalin5953 а я не пропал)
@@user-tq1lr3uv5t а зачем учить ? пользоваться нужно.
Спасибо за ваши уроки!! Продолжайте в том же духе! Упорно веду конспект)))
Ты лучший! Спасибо! Благодаря тебе я научился работать с Arduino!
спасибо большое за уроки ) мне для проектов ) как раз нужно умение программировать в данной сфере) все очень понятно ) и когда будет время ) начну вести интрадей с записями )
Вот оно. Будущее Ютуба!
Уже настоящее. Ютуб - двигатель прогресса.
Кто сдесь уже в 2021?
@Roomit YT я тоже :)
Я тоже
@@user-gm7jy5xs2y я
очень полезное обучение у вас , спасибо
Спасибо, хорошее преподавание!
Спасибо, очень хорошее видео 📹)
на выборах за тебя проголосую
Да. Может ардуино в России подешевеет....
На выборах надо за компетентных в вопросе людей голосовать, а не абы за любимого блогера...
Я из будущего... Эх
@@Not_932 В ютубе надо воспринимать информацию в юмористическом контексте, а не буквально...
+ )
Спасибо большое! Вы мне очень помогли. Уже подписался!
Боже мой, большое спасибо тебе, святой человек, а то я реально не понимал, как работает Serial.flush
Спасибо за уроки!!! ардуинка мигает, радуюсь как ребенок )))!!!!!!!!
А у меня клиэнты рады я и папа радуемся как ребенок деньгам)))
еслиб не забывал бы то каждому видосику бы лайк и комент ставил бы!!! респект!молодец!
Классное видео! Мне оно очень помогло!
Всё очень подробно и понятно тоже веду конспект!
Доходчиво. Спасибо!
'0' - это 0х30 или 48 в десятичной системе.
позиция 48 в таблице ASCII - это позиция символа '0', 49 - символа '1' и т.д., но проще в HEX
0x30 - '0'
0x31 - '1'
0x32 - '2'
0x33 - '3'
0x34 - '4'
0x35 - '5'
и т.д. поэтому вычитание '0' или 0х30 - это просто перевод индекса таблицы в число.
ничего не понял
@@yraron открой таблицу ASCII и станет все понятно
@@yraron другими словами это совпадение и удача, что цифры от 0 до 9 идут по-порядку в таблице ASCII и можно таким "лайфхаком" превратить индексы символов (индекс цифры 1 = 49 например) в их цифровое значение (по умолчанию вместо 1 получаешь 49, а так вычитая 48 получаешь 49-48 = 1)
@@passenger000 спасибо
Вот почему бы в уроке автору этого не сказать! Да? А то "это придётся просто запомнить" =( Мне вот, например, всегда лучше понять... Спасибо.
Спасибо за классный видос. Лайк!
Вот , СПАСИБО .
Так это то что я искал !
Ардуинщик, а если копипастить из конспекта в "описание к видео", людям будет удобней искать нужные вопросы в инете.
Отлично. ТО, что надо.
Спасибо за видео и советы
Начал писать маленькие скетчики с комментариями напротив строчек кода по этим урокам. Пользуюсь ими как шпаргалками. Проще стало что то делать. Просто готовый код подставляешь в проект, допустим кнопку с антидребезгом, какие нибуть условия. Дело веселее пошло. А то вроде пока смотрю всё понимаю, закрою видео, через два часа и уже не помню где там запятая, как команда пишется. Мне уроки очень понравились. Больше // комментариев напротив кода, и можно самому разбираться потихоньку. Ещё бы хотелось увидеть работу с EEPROM. С библиотеками и т.д. Жду с нетерпением следующих уроков, эта тема так затягивает. Удачи и побольше видео!!!
Спасибо, очень помог. Наконец-то разорался
Орать то зачем)
@@Auzenable опЫчатка =)
Спасибо! Учимся)
Отлично,спасибо!
Спасибо!
Разобрался, спасибо
мне 12 и всё понятно ,супер
Почему, когда я использую int s = Serial.read() - '0'; мне возвращает не только то, что ввожу я, но и - 38.
А при использовании int s = Serial.parseInt(); кроме вводимых чисел возвращается 0?
В мониторе порта слева от выбора скорости есть параметр переноса строки, нужно выбрать "Нет конца строки" и вывод станет нормальным.
Небольшое уточнение: название Serial это название библиотеки Serial.h; ко всем функциям библиотек надо обращаться по названию библиотеки и через точку название функции. Это может быть не понятно потому, что нужно объявлять библиотеку, но есть библиотеки, которым не требуется объявление типа: Arduino.h, Serial.h и другие, которые сами добавляются (те, что Вы не скачивали или делали сами).
библиотека Serial, а в ней класс Serial к методам которого надо обращаться, если бы класс назывался как-то по другому а библиотека так же, то обращение к методам было бы по названию класс а не библиотеки
....................
.....
Что?
оаоаоао почему мне так тяжело в это вникать...
@@user-gl5wi8ig8h еще раз что? Библиотеки??? можно подробней)
@@aguypassingby1945 см. ООП любого Си-подобного языка)
Для 1с-ника всё понятно)
Спасибо
Отличный урок, Спасибо!
У меня из порта приходило число, а потом приходил 0.
т.е. отправляю 678
получаю
678
0
отправляю 12345
получаю
12345
0
Текст был такой же, как в видео
if (Serial.available() > 0)
Я начинающий и ничего не понимаю пока, но в голову пришла идея
if (Serial.available() > 1)
теперь все происходит четко, что отправляешь, то и получаешь.
Да, и максимальное отправляемое число это 2^15 - 1, т.е. 32767 а дальше будут приходить отрицательные числа.
У меня такая же проблема была
Попробовал помогло, спасибо 🙏, мне кажется это из-за разности чипов, у меня нано на ATmega328P (старый загрузчик/Old Bootloader)
ты супер!
Круто
Спасибо тебе, мне 13 лет и для программирования далеко, а идеи лезут и лезут из головы. Спасибо тебе,.AlexGyver. За эти знания!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Всмысле далеко? Там все просто, же
Спасибо за поддержку
Почему далеко, закажи а Китае ардуинку попроще, пару датчиков и занимайся. С практикой и теория понятнее.
Я в пятом классе со small basic работал
Алекс, сделай плиз такой же(досканальный и понятный) курс по c++ и главное поглубже залезь в кроссплатформенность... ну плиз... что я стараюсь, меня всё равно не увидят...
Чёт прям Паскаль вспомнил
Аж прослезился...
Так в одном выпуске говорили что если вы знаете этот язык программирования, то вы освоили 90% Ардуино.
Этот язык напоминает как паскаль так и с++
Саня, спасай!
При выполнении Serial.avaliable() через Serial.read() в мониторе порта вместе с символами выдает число 10 (сразу после табличного символа) (то есть, вводим в монитор порта 1, получаем 49 -38).
При выполнении Serial.avaliable через Serial.read() - '0' в мониторе порта вместе с числами выдает число -38 (сразу после числа) (то есть, вводим в монитор порта 1, получаем 1 -38).
При выполнении Serial.avaliable через Serial.parseInt() в мониторе порта вместе с числами выдает число 0 (сразу после числа) (то есть, вводим в монитор порта 123, получаем 123 0).
Как лечить, а главное кого, код, ардуинку или меня?
ох где же ты был, когда мы с++ проходили :(
В нашем классе проходят по информатике с++ а я как всгда получай чут ли не 6 за то что я обяснил училке новую команду а про домашки я ваше не говорю))
смотрю второй видос, ардуино для новичка! Если с первым зашло то со второго урока вообще не понятно. Буду больше изучать.
Алекс, огомное вам спасибо. Скажите пож-та, почему вы выбрали тип данных String для объявления переменной mystring = OLOLOLO? Можно ли другой тип данных использовать для переменной, где значением является текст?
а ты молодец
благодарю за приятную музыку на фоне, а не какой-нибудь манальный deephouse.
Очищение пригодится если мы хотим получать значение с физ кнопок а в порт выводить картинку "игры"
У Вас есть видео как передавать данные видеоизображения камеры (через радиоканал 2Ггц), к примеру с квадрокоптера, на пульт снабженный дисплеем nexton? Если такого нет, то запишите такое видео. Будет очень интересно узнать способы реализации такого проекта.
Спасибо вам за Ваше творчество, все понятно и доступно даже для новичков (такого как я) .
Можно ли где-то задать Вам простенький вопрос с приложением простенького скетча ? кое что не понятно
Здадите мне) наверно справлючь
и во вторых алекс работает за деньги можно заказать код у него
Камрад, ценные видосы, спасибо! вот одну тонкость только не пойму - у меня кириллица не работает при выводе в монитор сом-порта, наверняка нужно какую-то библиотеку куда-либо добавить.. вот только какую и куда - не знаю.
важно для свази двух ардуинок по rx-tx
Чесно говоря я за 3серии ничего не понял! И СПАСИБО ЗА ЭТИ УРОКИ надеюсь все пойму через время!
Alex, монитор порта это хорошо, а как на счет написания проги под виндой на чем нить с пояснениями (у вас довольно доходчиво получается) и управлять ардуино... Ну типа пара кнопок в программе, через ком порт на ардуино управлять вкл выкл светильника.
3:06. Так ведь можно тогда сделать автономный калькулятор сист. счисления на ардуино, просто докупить отдельный дисплей и прицепить штук 10 кнопок. Главное чтоб пинов хватило. Хотя это очень грубый,конечно, получится калькулятор. И в школке на уроке информатики на к\р быстро переводить числа из одной системы в другую.
Видимо я рукожоп.. Alex, я всё делал как ты показывал на видео. Но вместо "HELLO, WORLD!", СОМ порт выводил вообще лютую дичь, типо такой : ЂxxxшxшxшxшxЂшxxшxЂxшxЂx. Пожалуйста помогите моему рукожопству) и видосы у тебя всегда годные Alex)
Вряд ли буду когда нибудь ардуинить, смотрю твои видосы просто потому что она ахуенные ^___^
@ssch ебать ты стремный тип тебе наверное сейчас стыдно за себя прошлого
@@isakneuman9995 как то ты не в тему, или не въехал?
Могу повторить то же. Повторить?
@@TheWladberlin я хз что имел ввиду в тот момент, но я был прав.
@@isakneuman9995 Не здаешься, борешься до конца :)))
На счет Serial.parseint () можно убрать эту задержку при помощи Serial.Timeout (2) в setup()😊
а можешь подробнее друг рассказать об этом
Спасибо, а то намучился с отправкой данных. А как отправить массив с данными? Только парсингом вытаскивать данные?
Спасибо вам за ваше творчество и труд.Очень понравился ваше уроки.Прошёл обучение до конца.Хочу задать вам один вопрос.Как передать в порт состояния пинов (High/Low) в массиве для дальнейшей работы в стороне компа?
Все просто
Если вы имеете дело с аналог пинами просто пишите
Serial.println (analog.Read (ваш пин));
Для цифровых пинов же :
Serial.println (digital.Read (ваш пин));
Для цифрового пина будет выдовать только 1 или 0
А в аналовом пине будет выдавать значение от 0 до 255
Привет. Подскажи как сделать так что бы дисплей NEXTION взаимодействовал с двумя ардуинами одновременно. Может какие модули нужны или вся намного проще?
Описание методов у Serial www.arduino.cc/reference/en/language/functions/communication/serial/
например readString и readStringUntil('
')
Тут хоть что-то понятно)
хотел бы заметить, надо обращать внимание на тип данных которые вводим в буфер. если хотите вывести число 123456 используя тип int - то не получите 123456, а получите -7616 потому для такого числа надо использовать тип long. при вводе в буфер числа 32768 с типом int - получится результат -32768.
Об этом было в предыдущем уроке
Хотел было ссылку добавить на предыдущий урок)))
В среде Arduino применяется обработка данных по прерыванию ? Например, когда для выбранной платы есть аппаратная поддержка какого-то протокола (SPI, UART, Ethernet и т. д.), используется режим ожидания приёма (Salve) и приходит пакет, можно ли вызвать программное прерывание и читать приёмный буфер только тогда, когда в нём что-то есть ?
void setup() {
Serial.begin (9600);
}
void loop() {
if (Serial.available () > 0 ) {
int in_data = Serial.parseInt ();
Serial.println (in_data);
}
}
// Не могу понять. Пишу в порт любое число,
//затем ардуинка печатает это число в порт
// Но через секунду число становится нулем и ноль отправляется в порт.
// Почему у тебя так не происходит?
Выводится так потому что в мониторе порта радом со скоростью 9600 не выбрано "нет конца строки". В следующем видео по сериалу от автора это показано ruclips.net/video/Ul03Vkg9A40/видео.html
Алекс, а что если какая-то программа будет постоянно слать в порт определенный набор в 64 символа, но ардуино не будет забирать их все, а только ситуативно? Переполнение буфера очевидно, интересно заберёт ли ардуино целый (с точки зрения структуры данных) набор? Или он как стек сдвигает влево/вправо?
Здравствуйте! классные видео! всплыл вопрос - может ли ардуино считывать коды с COM порта которые "кидает" сторонняя программа? если да, то буду ждать когда видос запилите 👋
Пермяков Михаил может, почему нет. Вот только это уже не про ардуино, это про программирование окошек.
Автор: "чтобы автоматически вывести новую строку, есть специальная команда"
Я: "endl , или
!"
Автор: " println "
Я : " непонял......"
- это символ, а не команда
👌👍👍👍👍
сделай пожалуйcта урок про подключение Mp3 плеера к ардуино!
Спасибо!
На языке С+ можно писать для ардуино?
полностью повторял код, нет никакого отличия, но при варианте с -'0' на любое введенное число ответ -38, а при варианте с parsInt при любом введенном числе и цыфре выдает ноль. это почему так ?
Посоветуйте, как принимать и обрабатывать на Ардуине картинку с камеры и на что эту картинку записывать.
4:51 функция Serial.read принимает один байт, а уже в какой тип его нужно перевести остаётся на усмотрение ардуинщика.
Товарищи всем доброго времени. можно ли написать скетч на основе которого можно было бы кнопки на самодельном джостике нажатие которых заставить отображаться в среде винды и назначать на исполнение в игре?
пожалуйста, сделайте видео Arduino + Bluetooth HC6
Алекс привет! У меня научная работа имеется. Так вот для съёма данных требуется аналоговый вольтметр и амперметр до 60 вольт и 5 ампер и всё это выводить на экран в виде графика. С программой я разобрался а вот с вольт метром нет. Может ты что знаешь по этой теме и как её решить.
Привет Алекс.
Как совместить это с твоей копилкой??
Все хорошо! Но, в дополнение хочу сказать что скорость инициализации порта должна соответствовать скорости монитора порта, иначе в мониторе будут крокозябры.
+Alexei Belousov кстати да, допишу в шпаргалку. Спасибо!
Hey Alex, serial Plot is also a good feature, will you do a video on this?
+Mateusz “esavier” Matejuk dont know about this! I should google for it first =)
а вот мне хочется построить кокпит для авиасима, dcs- вот с механникой мне всё понятно, и с тем что нужно пилить сверлить варить клеить и тд., а вот с электроникой большие проблемы... и как это всё сгенерировать?
Год прошел, но все-таки спрошу. Что делать если после ввода числа в буфер через серию команд "Эхо":
if (Serial.available() > 0) {
int val = Serial.parseInt();
Serial.println(val);
}
В буфере порта вместе со значением заданной переменной val, которую я ввел, появляется еще и число 0. Вне зависимости от от моего числа далее идет число 0. Это работает и с условными операторами, таже проблема. На сколько я понимаю в будущем при построении сложных программ, это может мешать. Заранее спасибо за ответ.
Такая же фигня, дайте ответ пожалуйста!
Нашёл ниже: "В мониторе порта нужно выбрать вместо "Новая Строка " -"Нет конца строки""
@@user-el9nt8fu9q Спасибо огромное!
с нулём баг исправил и какой-то непонятный баг. Не выводит первую цифру а если ввожу например 1 то вывожит 0
Понял в чём баг. Вместо Serial.available заюзал Serial.read
4:36 практичнее будет использовать String, потому что пользователь может ведь не только числа написать
Like)
Привет.
Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта.
Как собрать плату для данного задач. Сделайте пожалуйста видеоролик по этой направления.
Спасибо заранее
Очень интересно, юзаю аппаратный уарт в связке с esp подкинул dfplyer на нано к soft серял и все на аппаратом данные вроде идут ток не доходят. Подскажите пожалуйста что они в месте не дружат? Скорость 4800 на аппаратной на программной 9600
пж сними видео с ртс модулем
У меня ,когда я прописываю " - '0' ", выводится цифра,которую я вписал и "-38", в чем может быть проблема?
a - '0' прописывали к функции read или parseInt?
В COM порте выбери "Нет конца строки".
@@Pryxa4 Спасибо
Pryxa4 спасибо
@@Pryxa4 Господи, спасибо огромнейшее, успел задолбаться пока выяснял почему это происходит.