Ох. Нельзя два лайка поставить. Один ставлю как полагается. Второй держи устно (Like). Лучшие уроки по Ардуинке, что встречал на просторах Ютуба. С нетерпением жду продолжения.
Годный канал, отличная подача! Где же Ты был, когда Я робота клепал, по косым урокам, в которых говорилось "делай так, просто делай так и не спрашивай почему", а не рассказывалось откуда ноги растут! А теперь Я делаю наливайку для пива, по Твоим урокам и это здорово! Спасибо Тебе огромное!
Спасибо тебе огромное!!! Всё разложено по полочкам от А до Я и не остаётся вопросов от слова *absolutely*. Качественный контент от человека со знанием своего дела и как показывает практика, думающего за нас, а это очень важный момент!. P. S. Вперёд в кремниевую долину!
@@Obeme77777Serial.println() - команда, которая выводит на экран то, что ты ввёл в скобочках или что записано в переменной. Но при этом переводит на следующую строку. A Serial.print() - тоже самое, но не переводит на след. строку Легче на самом деле попробовать самому пописать код, тогда станет ясно)
На 4-м курсе универа, код знаю очень плохо, да и не особо было интересно. Недавно узнал про ардуино, стало интересно кодить. А посмотрев твои ролики все понятно стало сразу. Спасибо тебе)
Спасибо ! Четко и просто без лишнего! А то начинаешь понимать этот язык программирования и каааааак загадят буфер обмена (мозги) так сразу все забываешь . Давно искал искал подобные видосики.
'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 другими словами это совпадение и удача, что цифры от 0 до 9 идут по-порядку в таблице ASCII и можно таким "лайфхаком" превратить индексы символов (индекс цифры 1 = 49 например) в их цифровое значение (по умолчанию вместо 1 получаешь 49, а так вычитая 48 получаешь 49-48 = 1)
Отличный урок, Спасибо! У меня из порта приходило число, а потом приходил 0. т.е. отправляю 678 получаю 678 0 отправляю 12345 получаю 12345 0 Текст был такой же, как в видео if (Serial.available() > 0) Я начинающий и ничего не понимаю пока, но в голову пришла идея if (Serial.available() > 1) теперь все происходит четко, что отправляешь, то и получаешь. Да, и максимальное отправляемое число это 2^15 - 1, т.е. 32767 а дальше будут приходить отрицательные числа.
Небольшое уточнение: название Serial это название библиотеки Serial.h; ко всем функциям библиотек надо обращаться по названию библиотеки и через точку название функции. Это может быть не понятно потому, что нужно объявлять библиотеку, но есть библиотеки, которым не требуется объявление типа: Arduino.h, Serial.h и другие, которые сами добавляются (те, что Вы не скачивали или делали сами).
библиотека Serial, а в ней класс Serial к методам которого надо обращаться, если бы класс назывался как-то по другому а библиотека так же, то обращение к методам было бы по названию класс а не библиотеки
Почему, когда я использую int s = Serial.read() - '0'; мне возвращает не только то, что ввожу я, но и - 38. А при использовании int s = Serial.parseInt(); кроме вводимых чисел возвращается 0?
Спасибо тебе, мне 13 лет и для программирования далеко, а идеи лезут и лезут из головы. Спасибо тебе,.AlexGyver. За эти знания!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Начал писать маленькие скетчики с комментариями напротив строчек кода по этим урокам. Пользуюсь ими как шпаргалками. Проще стало что то делать. Просто готовый код подставляешь в проект, допустим кнопку с антидребезгом, какие нибуть условия. Дело веселее пошло. А то вроде пока смотрю всё понимаю, закрою видео, через два часа и уже не помню где там запятая, как команда пишется. Мне уроки очень понравились. Больше // комментариев напротив кода, и можно самому разбираться потихоньку. Ещё бы хотелось увидеть работу с EEPROM. С библиотеками и т.д. Жду с нетерпением следующих уроков, эта тема так затягивает. Удачи и побольше видео!!!
спасибо большое за уроки ) мне для проектов ) как раз нужно умение программировать в данной сфере) все очень понятно ) и когда будет время ) начну вести интрадей с записями )
Алекс, сделай плиз такой же(досканальный и понятный) курс по c++ и главное поглубже залезь в кроссплатформенность... ну плиз... что я стараюсь, меня всё равно не увидят...
Саня, спасай! При выполнении 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). Как лечить, а главное кого, код, ардуинку или меня?
полностью повторял код, нет никакого отличия, но при варианте с -'0' на любое введенное число ответ -38, а при варианте с parsInt при любом введенном числе и цыфре выдает ноль. это почему так ?
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
Год прошел, но все-таки спрошу. Что делать если после ввода числа в буфер через серию команд "Эхо": if (Serial.available() > 0) { int val = Serial.parseInt(); Serial.println(val); } В буфере порта вместе со значением заданной переменной val, которую я ввел, появляется еще и число 0. Вне зависимости от от моего числа далее идет число 0. Это работает и с условными операторами, таже проблема. На сколько я понимаю в будущем при построении сложных программ, это может мешать. Заранее спасибо за ответ.
У Вас есть видео как передавать данные видеоизображения камеры (через радиоканал 2Ггц), к примеру с квадрокоптера, на пульт снабженный дисплеем nexton? Если такого нет, то запишите такое видео. Будет очень интересно узнать способы реализации такого проекта.
Видимо я рукожоп.. Alex, я всё делал как ты показывал на видео. Но вместо "HELLO, WORLD!", СОМ порт выводил вообще лютую дичь, типо такой : ЂxxxшxшxшxшxЂшxxшxЂxшxЂx. Пожалуйста помогите моему рукожопству) и видосы у тебя всегда годные Alex)
хотел бы заметить, надо обращать внимание на тип данных которые вводим в буфер. если хотите вывести число 123456 используя тип int - то не получите 123456, а получите -7616 потому для такого числа надо использовать тип long. при вводе в буфер числа 32768 с типом int - получится результат -32768.
Alex, монитор порта это хорошо, а как на счет написания проги под виндой на чем нить с пояснениями (у вас довольно доходчиво получается) и управлять ардуино... Ну типа пара кнопок в программе, через ком порт на ардуино управлять вкл выкл светильника.
Камрад, ценные видосы, спасибо! вот одну тонкость только не пойму - у меня кириллица не работает при выводе в монитор сом-порта, наверняка нужно какую-то библиотеку куда-либо добавить.. вот только какую и куда - не знаю.
В среде Arduino применяется обработка данных по прерыванию ? Например, когда для выбранной платы есть аппаратная поддержка какого-то протокола (SPI, UART, Ethernet и т. д.), используется режим ожидания приёма (Salve) и приходит пакет, можно ли вызвать программное прерывание и читать приёмный буфер только тогда, когда в нём что-то есть ?
У меня какие-то проблемы. Когда я ввожу число через Serial.read() - '0', у меня выводит -38. Так на всех числах, кроме 7, на нем, почему-то, выводит -7. Все списал, как у вас и цифры вводил те же. Потом когда я ввожу через Serial.parseInt(), у меня сначала выводит то, что надо, но потом я беру какое-нибудь число большое, например 198765, и выводит непонятно что. То вывело минусовое число, то число на 10000 больше, не понимаю. Помогите, пожалуйста. У меня Ардуино Уно, заказывал набор целый. Только бы не была сломана(
У меня при чтении чисел через Serial.read() - '0', сначала выводи число которое я ввел а потом -38, это я так понимаю выводит команду enter( кнопка "отправить" COM порта ардуины) , которую необходимо нажать после ввода числа. А при Serial.parseInt() выводит непонятно что, когда ты выходишь за диапазон значений переменных типа int , который лежит от -32768 до 32767 в первом уроке он рассказывал.
АЛЕКС ГАЙВЕР скажите на минуте 5:36, я сделал как Вы и сказали( int in_data = Serial.read() - '0';) вычел 0, но у меня в мониторе порта после каждого ввода символа на выходе получалось то самое число, но потом шло число -38. Как это решить и что это такое?
Алекс, огомное вам спасибо. Скажите пож-та, почему вы выбрали тип данных String для объявления переменной mystring = OLOLOLO? Можно ли другой тип данных использовать для переменной, где значением является текст?
Очень интересно, юзаю аппаратный уарт в связке с esp подкинул dfplyer на нано к soft серял и все на аппаратом данные вроде идут ток не доходят. Подскажите пожалуйста что они в месте не дружат? Скорость 4800 на аппаратной на программной 9600
Алекс благодарю, но у меня проблема в void setup() работает только Serial.begin(9600); Serial.print("qwerty"); не выполняется, void loop(); работает мой скетч: void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.print("QWERTY"); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) { int in_data = Serial.parseInt(); Serial.println(in_data); } } только после возврата числа следующей строчкой отправляется 0, интересно почему так
Спасибо вам за Ваше творчество, все понятно и доступно даже для новичков (такого как я) . Можно ли где-то задать Вам простенький вопрос с приложением простенького скетча ? кое что не понятно
Привет. Подскажи как сделать так что бы дисплей NEXTION взаимодействовал с двумя ардуинами одновременно. Может какие модули нужны или вся намного проще?
Алекс, а что если какая-то программа будет постоянно слать в порт определенный набор в 64 символа, но ардуино не будет забирать их все, а только ситуативно? Переполнение буфера очевидно, интересно заберёт ли ардуино целый (с точки зрения структуры данных) набор? Или он как стек сдвигает влево/вправо?
И так господа. На дворе 2022год и я ,решил после с++, поучить ардуинку. Столкнулся с проблемой вывода в порт, просто не выводило нечего. Serial.begin(9600); Serial.print("Hello"); По видосу должно было вывести слово: Hello. Но не выводилось. Решением стала команда задежки delay. Serial.begin(9600); delay(1000); // задержка в одну секунду Serial.print("Hello"); Только после этого у вас все заработает :)
3:06. Так ведь можно тогда сделать автономный калькулятор сист. счисления на ардуино, просто докупить отдельный дисплей и прицепить штук 10 кнопок. Главное чтоб пинов хватило. Хотя это очень грубый,конечно, получится калькулятор. И в школке на уроке информатики на к\р быстро переводить числа из одной системы в другую.
Весьма познавательно. Начал изучать эту среду по Вашим урокам. Возник вопрос: когда я отправил данные в порт, то назад получил тоже значение, но также на следующей строке было число -38. Т.е я отправляю 1 а назад получаю это: 1 -38 Или отправляю в порт 1234 и получаю это: 1 2 3 4 -38 Хотел бы знать с чем это связано и как убрать это раздражающее число. Код проверил, полностью идентичен с Вашим
Думаю за год ты нашел решение, но вдруг кто-то как и я будет искать ответ на этот вопрос, еще раз продублирую то что нашел тут в комментах. Нужно внизу компорта вместо "NL(новая строка)" выбрать "Нет конца строки"
Всем здравия! Почему у меня при вводе Serial.println ("Русский текст"); - выводятся спец символы? серый ромбик со знаком вопроса внутри. Программа и сохранения специально установлены без кириллических символов в пути сохранения. С Serial.println ("English text"); проблем нет.
Алекс привет! У меня научная работа имеется. Так вот для съёма данных требуется аналоговый вольтметр и амперметр до 60 вольт и 5 ампер и всё это выводить на экран в виде графика. С программой я разобрался а вот с вольт метром нет. Может ты что знаешь по этой теме и как её решить.
У меня по последней части кода с in_data после нажатия Enter в монитор сначала прилетает 0, потом мое число... код один в один, плата wemos d1 mini. Откуда 0 вылез? И в следующем уроке схожая фигня... Ввожу 1 или 5 , монитор выводит "Вы ввели 1 или 5!" и сразу следующая строка "Мимо!" , ввожу что то другое, монитор выводит "Мимо!" и сразу следующей строкой еще раз "Мимо!"...
Спасибо вам за ваше творчество и труд.Очень понравился ваше уроки.Прошёл обучение до конца.Хочу задать вам один вопрос.Как передать в порт состояния пинов (High/Low) в массиве для дальнейшей работы в стороне компа?
Все просто Если вы имеете дело с аналог пинами просто пишите Serial.println (analog.Read (ваш пин)); Для цифровых пинов же : Serial.println (digital.Read (ваш пин)); Для цифрового пина будет выдовать только 1 или 0 А в аналовом пине будет выдавать значение от 0 до 255
Все хорошо! Но, в дополнение хочу сказать что скорость инициализации порта должна соответствовать скорости монитора порта, иначе в мониторе будут крокозябры.
После ввода значения какого-то в мониторе порта, оно в буфере остаётся или как? И ввод значение через Enter производится? Вот скетч такой в рамках 1 и 2 урока: int del = 500; void setup() { Serial.begin(9600); Serial.print("Задержка: ");Serial.print(del);Serial.println(" милисекунд."); pinMode(13, OUTPUT); } void loop() { if (Serial.available() > 1) { del = Serial.parseInt(); Serial.print("Задержка: ");Serial.print(del);Serial.println(" милисекунд."); }
digitalWrite(13, HIGH); delay(del); digitalWrite(13, LOW); delay(del); } Вот если оставлять if (Serial.available() > 0), как в примере, то в моём скетче нормально вводится первый раз задержка, потом следующий же цикл Serial.available() остаётся 1, срабатывает условие и переменной del присваивается 0, т.к. в Serial.parseInt() я ничего не ввёл. Ну вот я вместо 0 в условии указал более 1 и только тогда программа заработала так, как я и хотел - ввожу с монитора порта задержку и с ней начинает мигать светодиод. Как бэ задача выполнена, но я не понял почему так происходит и Serial.available() у меня всегда 1… ну в рамках вводимых 20 … 2000 миллисекунд задержки.
Невозможно оторваться! Жду не дождусь своих собственных компонентов, чтобы начать практиковаться.
Ох. Нельзя два лайка поставить. Один ставлю как полагается. Второй держи устно (Like). Лучшие уроки по Ардуинке, что встречал на просторах Ютуба. С нетерпением жду продолжения.
Годный канал, отличная подача!
Где же Ты был, когда Я робота клепал, по косым урокам, в которых говорилось "делай так, просто делай так и не спрашивай почему", а не рассказывалось откуда ноги растут!
А теперь Я делаю наливайку для пива, по Твоим урокам и это здорово! Спасибо Тебе огромное!
Начал изучать ардуино по вашим видео, очень доступно и понятно!
Максим Морган ага
мне тоже
Ну как, два года спустя, чему научился?
@@optimanshow А два?
Максим Морган шел 2019 год, как освоил ардуино?
Спасибо тебе огромное!!!
Всё разложено по полочкам от А до Я и не остаётся вопросов от слова *absolutely*. Качественный контент от человека со знанием своего дела и как показывает практика, думающего за нас, а это очень важный момент!.
P. S. Вперёд в кремниевую долину!
Неа. Я уже задолбался пересматривать на 4:28 всё как-то слишком непонятно.
@@Obeme77777Serial.println() - команда, которая выводит на экран то, что ты ввёл в скобочках или что записано в переменной. Но при этом переводит на следующую строку.
A Serial.print() - тоже самое, но не переводит на след. строку
Легче на самом деле попробовать самому пописать код, тогда станет ясно)
на выборах за тебя проголосую
Да. Может ардуино в России подешевеет....
На выборах надо за компетентных в вопросе людей голосовать, а не абы за любимого блогера...
Я из будущего... Эх
@@Not_932 В ютубе надо воспринимать информацию в юмористическом контексте, а не буквально...
+ )
На 4-м курсе универа, код знаю очень плохо, да и не особо было интересно. Недавно узнал про ардуино, стало интересно кодить. А посмотрев твои ролики все понятно стало сразу. Спасибо тебе)
Твои уроки лучшие! Продолжай в том же духе!
веду конспект...честное слово)) ..так лучше запоминается
+Nikita Degterev молодец)
И чё, как, выучил?
@@КиноПёс-ъ5н та всё, видишь, пропал человек. Больше нет его. Ушел программировать наверное
@@vitalin5953 а я не пропал)
@@КиноПёс-ъ5н а зачем учить ? пользоваться нужно.
супер конспект. от нас лайк.
Вот оно. Будущее Ютуба!
Уже настоящее. Ютуб - двигатель прогресса.
Кто сдесь уже в 2021?
@Roomit YT я тоже :)
Я тоже
@@ТИМУРУС-д1з я
самые годные уроки что я сейчас нашёл!!!
Спасибо ! Четко и просто без лишнего! А то начинаешь понимать этот язык программирования и каааааак загадят буфер обмена (мозги) так сразу все забываешь . Давно искал искал подобные видосики.
'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 спасибо
Вот почему бы в уроке автору этого не сказать! Да? А то "это придётся просто запомнить" =( Мне вот, например, всегда лучше понять... Спасибо.
Боже мой, большое спасибо тебе, святой человек, а то я реально не понимал, как работает Serial.flush
Cпасибо, все понятно и доступно. Всех благ!
Молодец. Проект очень очень полезный. Многих тебе сил. Не слушай троллей и неудачников.
Спасибо за уроки!!! ардуинка мигает, радуюсь как ребенок )))!!!!!!!!
А у меня клиэнты рады я и папа радуемся как ребенок деньгам)))
Отличный урок, Спасибо!
У меня из порта приходило число, а потом приходил 0.
т.е. отправляю 678
получаю
678
0
отправляю 12345
получаю
12345
0
Текст был такой же, как в видео
if (Serial.available() > 0)
Я начинающий и ничего не понимаю пока, но в голову пришла идея
if (Serial.available() > 1)
теперь все происходит четко, что отправляешь, то и получаешь.
Да, и максимальное отправляемое число это 2^15 - 1, т.е. 32767 а дальше будут приходить отрицательные числа.
У меня такая же проблема была
Попробовал помогло, спасибо 🙏, мне кажется это из-за разности чипов, у меня нано на ATmega328P (старый загрузчик/Old Bootloader)
Небольшое уточнение: название Serial это название библиотеки Serial.h; ко всем функциям библиотек надо обращаться по названию библиотеки и через точку название функции. Это может быть не понятно потому, что нужно объявлять библиотеку, но есть библиотеки, которым не требуется объявление типа: Arduino.h, Serial.h и другие, которые сами добавляются (те, что Вы не скачивали или делали сами).
библиотека Serial, а в ней класс Serial к методам которого надо обращаться, если бы класс назывался как-то по другому а библиотека так же, то обращение к методам было бы по названию класс а не библиотеки
....................
.....
Что?
оаоаоао почему мне так тяжело в это вникать...
@@АртемПетренко-л7н еще раз что? Библиотеки??? можно подробней)
@@aguypassingby1945 см. ООП любого Си-подобного языка)
Ты все очень доходчиво объясняешь и надо бы упомянуть о действиях с физической системой
Почему, когда я использую int s = Serial.read() - '0'; мне возвращает не только то, что ввожу я, но и - 38.
А при использовании int s = Serial.parseInt(); кроме вводимых чисел возвращается 0?
В мониторе порта слева от выбора скорости есть параметр переноса строки, нужно выбрать "Нет конца строки" и вывод станет нормальным.
Спасибо тебе, мне 13 лет и для программирования далеко, а идеи лезут и лезут из головы. Спасибо тебе,.AlexGyver. За эти знания!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Всмысле далеко? Там все просто, же
Спасибо за поддержку
Почему далеко, закажи а Китае ардуинку попроще, пару датчиков и занимайся. С практикой и теория понятнее.
Я в пятом классе со small basic работал
Ты лучший! Спасибо! Благодаря тебе я научился работать с Arduino!
Отличные видео!!! Автору респект!!! Мне как начинающему - просто находка!!!!! Ждем новых видео...
еслиб не забывал бы то каждому видосику бы лайк и комент ставил бы!!! респект!молодец!
Начал писать маленькие скетчики с комментариями напротив строчек кода по этим урокам. Пользуюсь ими как шпаргалками. Проще стало что то делать. Просто готовый код подставляешь в проект, допустим кнопку с антидребезгом, какие нибуть условия. Дело веселее пошло. А то вроде пока смотрю всё понимаю, закрою видео, через два часа и уже не помню где там запятая, как команда пишется. Мне уроки очень понравились. Больше // комментариев напротив кода, и можно самому разбираться потихоньку. Ещё бы хотелось увидеть работу с EEPROM. С библиотеками и т.д. Жду с нетерпением следующих уроков, эта тема так затягивает. Удачи и побольше видео!!!
спасибо большое за уроки ) мне для проектов ) как раз нужно умение программировать в данной сфере) все очень понятно ) и когда будет время ) начну вести интрадей с записями )
Алекс, сделай плиз такой же(досканальный и понятный) курс по c++ и главное поглубже залезь в кроссплатформенность... ну плиз... что я стараюсь, меня всё равно не увидят...
Очень качественные и доступные материалы. Спасибо!
ох где же ты был, когда мы с++ проходили :(
В нашем классе проходят по информатике с++ а я как всгда получай чут ли не 6 за то что я обяснил училке новую команду а про домашки я ваше не говорю))
Саня, спасай!
При выполнении 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).
Как лечить, а главное кого, код, ардуинку или меня?
полностью повторял код, нет никакого отличия, но при варианте с -'0' на любое введенное число ответ -38, а при варианте с parsInt при любом введенном числе и цыфре выдает ноль. это почему так ?
Спасибо за ваши уроки!! Продолжайте в том же духе! Упорно веду конспект)))
Спасибо, очень хорошее видео 📹)
Спасибо, очень помог. Наконец-то разорался
Орать то зачем)
@@Auzenable опЫчатка =)
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
Чёт прям Паскаль вспомнил
Аж прослезился...
Так в одном выпуске говорили что если вы знаете этот язык программирования, то вы освоили 90% Ардуино.
Этот язык напоминает как паскаль так и с++
Всё очень подробно и понятно тоже веду конспект!
Вот , СПАСИБО .
Так это то что я искал !
Ардуинщик, а если копипастить из конспекта в "описание к видео", людям будет удобней искать нужные вопросы в инете.
Спасибо, а то намучился с отправкой данных. А как отправить массив с данными? Только парсингом вытаскивать данные?
очень полезное обучение у вас , спасибо
Год прошел, но все-таки спрошу. Что делать если после ввода числа в буфер через серию команд "Эхо":
if (Serial.available() > 0) {
int val = Serial.parseInt();
Serial.println(val);
}
В буфере порта вместе со значением заданной переменной val, которую я ввел, появляется еще и число 0. Вне зависимости от от моего числа далее идет число 0. Это работает и с условными операторами, таже проблема. На сколько я понимаю в будущем при построении сложных программ, это может мешать. Заранее спасибо за ответ.
Такая же фигня, дайте ответ пожалуйста!
Нашёл ниже: "В мониторе порта нужно выбрать вместо "Новая Строка " -"Нет конца строки""
@@ВсесамоеинтересноеО_о Спасибо огромное!
с нулём баг исправил и какой-то непонятный баг. Не выводит первую цифру а если ввожу например 1 то вывожит 0
Понял в чём баг. Вместо Serial.available заюзал Serial.read
У меня ,когда я прописываю " - '0' ", выводится цифра,которую я вписал и "-38", в чем может быть проблема?
a - '0' прописывали к функции read или parseInt?
В COM порте выбери "Нет конца строки".
@@Pryxa4 Спасибо
Pryxa4 спасибо
@@Pryxa4 Господи, спасибо огромнейшее, успел задолбаться пока выяснял почему это происходит.
Классное видео! Мне оно очень помогло!
Здравствуйте, я когда пишу скорость бит в сек, там совпадает с монитором, 9600, но показывает иероглифы, заметьте пожалуйста.
Спасибо за классный видос. Лайк!
Доходчиво. Спасибо!
Спасибо, хорошее преподавание!
Спасибо за видео и советы
У Вас есть видео как передавать данные видеоизображения камеры (через радиоканал 2Ггц), к примеру с квадрокоптера, на пульт снабженный дисплеем nexton? Если такого нет, то запишите такое видео. Будет очень интересно узнать способы реализации такого проекта.
Вряд ли буду когда нибудь ардуинить, смотрю твои видосы просто потому что она ахуенные ^___^
@ssch ебать ты стремный тип тебе наверное сейчас стыдно за себя прошлого
@@isakneuman9995 как то ты не в тему, или не въехал?
Могу повторить то же. Повторить?
@@TheWladberlin я хз что имел ввиду в тот момент, но я был прав.
@@isakneuman9995 Не здаешься, борешься до конца :)))
Видимо я рукожоп.. Alex, я всё делал как ты показывал на видео. Но вместо "HELLO, WORLD!", СОМ порт выводил вообще лютую дичь, типо такой : ЂxxxшxшxшxшxЂшxxшxЂxшxЂx. Пожалуйста помогите моему рукожопству) и видосы у тебя всегда годные Alex)
Отлично. ТО, что надо.
благодарю за приятную музыку на фоне, а не какой-нибудь манальный deephouse.
Спасибо! Учимся)
смотрю второй видос, ардуино для новичка! Если с первым зашло то со второго урока вообще не понятно. Буду больше изучать.
Спасибо большое! Вы мне очень помогли. Уже подписался!
Хочу купить ребенку, подумала вдруг не потяну. начала смотреть уроки, оказалось не зря 20 лет назад в школе учила бейсик и паскаль.😂
хотел бы заметить, надо обращать внимание на тип данных которые вводим в буфер. если хотите вывести число 123456 используя тип int - то не получите 123456, а получите -7616 потому для такого числа надо использовать тип long. при вводе в буфер числа 32768 с типом int - получится результат -32768.
Об этом было в предыдущем уроке
Хотел было ссылку добавить на предыдущий урок)))
Alex, монитор порта это хорошо, а как на счет написания проги под виндой на чем нить с пояснениями (у вас довольно доходчиво получается) и управлять ардуино... Ну типа пара кнопок в программе, через ком порт на ардуино управлять вкл выкл светильника.
Отлично,спасибо!
void setup() {
Serial.begin(9600);
Serial.print("hello");
}
Ошибка открытия последовательного порта "COM4" (Port busy)
не могу понять в чём проблема?
Подскажите пожалуйста, я сделал это "эхо", но каждый раз после вывода числа выводится 0 с новой строки
такая же проблема, сразу сбрасывает значение переменной до нуля
Гавер, у меня вместо русских букв выходят квадратики на компорте. Помоги плиз
Камрад, ценные видосы, спасибо! вот одну тонкость только не пойму - у меня кириллица не работает при выводе в монитор сом-порта, наверняка нужно какую-то библиотеку куда-либо добавить.. вот только какую и куда - не знаю.
В среде Arduino применяется обработка данных по прерыванию ? Например, когда для выбранной платы есть аппаратная поддержка какого-то протокола (SPI, UART, Ethernet и т. д.), используется режим ожидания приёма (Salve) и приходит пакет, можно ли вызвать программное прерывание и читать приёмный буфер только тогда, когда в нём что-то есть ?
Что делать если функция parseint возвращает не только цифру которую я ввёл, но и ноль впридачу. Помогите, пожалуйста!
Что-то не так написал
Надо выбрать "нет конца строки" в порте
У меня какие-то проблемы. Когда я ввожу число через Serial.read() - '0', у меня выводит -38. Так на всех числах, кроме 7, на нем, почему-то, выводит -7. Все списал, как у вас и цифры вводил те же. Потом когда я ввожу через Serial.parseInt(), у меня сначала выводит то, что надо, но потом я беру какое-нибудь число большое, например 198765, и выводит непонятно что. То вывело минусовое число, то число на 10000 больше, не понимаю. Помогите, пожалуйста. У меня Ардуино Уно, заказывал набор целый. Только бы не была сломана(
У меня при чтении чисел через Serial.read() - '0', сначала выводи число которое я ввел а потом -38, это я так понимаю выводит команду enter( кнопка "отправить" COM порта ардуины) , которую необходимо нажать после ввода числа. А при Serial.parseInt() выводит непонятно что, когда ты выходишь за диапазон значений переменных типа int , который лежит от -32768 до 32767 в первом уроке он рассказывал.
В мониторе порта нужно выбрать вместо "Новая Строка " -"Нет конца строки"
спасибо помогло
АЛЕКС ГАЙВЕР скажите на минуте 5:36, я сделал как Вы и сказали( int in_data = Serial.read() - '0';) вычел 0, но у меня в мониторе порта после каждого ввода символа на выходе получалось то самое число, но потом шло число -38. Как это решить и что это такое?
Выключи отправку служебных символов в мониторе порта
@@ArduNotes Спасибо
@@maxichannel9080 Привет, обьясни пожалуйста более подробно, как отключить отправку служебных символов в мониторе порта?? (Не нашел эту кнопку)
@@ArduNotes объясни пожалуйста более подробно, как отключить отправку служебных символов в мониторе порта?? (Не нашел эту кнопку)
@@Iz9l Открой монитор порта, справа в низу нписано "9600 бод", чуть левее поставь "Нет конца строки", вместо "Новая строка" или "Возврат коретки".
Алекс, огомное вам спасибо. Скажите пож-та, почему вы выбрали тип данных String для объявления переменной mystring = OLOLOLO? Можно ли другой тип данных использовать для переменной, где значением является текст?
Очень интересно, юзаю аппаратный уарт в связке с esp подкинул dfplyer на нано к soft серял и все на аппаратом данные вроде идут ток не доходят. Подскажите пожалуйста что они в месте не дружат? Скорость 4800 на аппаратной на программной 9600
5:40 у меня этот код после каждого ввода добавляет строчку "-38"
у меня тоже
Как исправил?
@@raufgimadeyev , В окне COM-порта внизу справа выбери в выпадающем списке "Нет конца строки"
@@ВикторВикторович-ч1щ спасибо большое)
@@ВикторВикторович-ч1щ Час сидел бился над этой хренью, пока не залез в каменты. Спасибо.
Алекс благодарю, но у меня проблема в void setup() работает только Serial.begin(9600); Serial.print("qwerty"); не выполняется, void loop(); работает мой скетч:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("QWERTY");
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available() > 0) {
int in_data = Serial.parseInt();
Serial.println(in_data);
}
}
только после возврата числа следующей строчкой отправляется 0, интересно почему так
Здравствуй!!! Подскажи почему в порт выводятся в место русских букв эроглифы какие то!!!?
может быть это из-за разницы кодировок
Спасибо вам за Ваше творчество, все понятно и доступно даже для новичков (такого как я) .
Можно ли где-то задать Вам простенький вопрос с приложением простенького скетча ? кое что не понятно
Здадите мне) наверно справлючь
и во вторых алекс работает за деньги можно заказать код у него
На счет Serial.parseint () можно убрать эту задержку при помощи Serial.Timeout (2) в setup()😊
а можешь подробнее друг рассказать об этом
Спасибо!
Привет. Подскажи как сделать так что бы дисплей NEXTION взаимодействовал с двумя ардуинами одновременно. Может какие модули нужны или вся намного проще?
Алекс, а что если какая-то программа будет постоянно слать в порт определенный набор в 64 символа, но ардуино не будет забирать их все, а только ситуативно? Переполнение буфера очевидно, интересно заберёт ли ардуино целый (с точки зрения структуры данных) набор? Или он как стек сдвигает влево/вправо?
И так господа. На дворе 2022год и я ,решил после с++, поучить ардуинку. Столкнулся с проблемой вывода в порт, просто не выводило нечего. Serial.begin(9600);
Serial.print("Hello");
По видосу должно было вывести слово: Hello. Но не выводилось. Решением стала команда задежки delay.
Serial.begin(9600);
delay(1000); // задержка в одну секунду
Serial.print("Hello");
Только после этого у вас все заработает :)
Очищение пригодится если мы хотим получать значение с физ кнопок а в порт выводить картинку "игры"
мне 12 и всё понятно ,супер
3:06. Так ведь можно тогда сделать автономный калькулятор сист. счисления на ардуино, просто докупить отдельный дисплей и прицепить штук 10 кнопок. Главное чтоб пинов хватило. Хотя это очень грубый,конечно, получится калькулятор. И в школке на уроке информатики на к\р быстро переводить числа из одной системы в другую.
Весьма познавательно. Начал изучать эту среду по Вашим урокам. Возник вопрос: когда я отправил данные в порт, то назад получил тоже значение, но также на следующей строке было число -38. Т.е я отправляю 1 а назад получаю это:
1
-38
Или отправляю в порт 1234 и получаю это:
1
2
3
4
-38
Хотел бы знать с чем это связано и как убрать это раздражающее число. Код проверил, полностью идентичен с Вашим
Думаю за год ты нашел решение, но вдруг кто-то как и я будет искать ответ на этот вопрос, еще раз продублирую то что нашел тут в комментах. Нужно внизу компорта вместо "NL(новая строка)" выбрать "Нет конца строки"
@@Sobakak Спасибо
У Serial.read есть какой-нибудь буфер или символ конца сообщения, когда мы посылаем несколько символов/цифр за раз?
Автор: "чтобы автоматически вывести новую строку, есть специальная команда"
Я: "endl , или
!"
Автор: " println "
Я : " непонял......"
- это символ, а не команда
то есть чтобы что то выводить на экран нужно подключить ардуинку?
есть идеи как не подключать экран?)
@@ArduNotes есть.Просто берешь лсд дисплей и выводишь
Привет Алекс.
Как совместить это с твоей копилкой??
Всем здравия! Почему у меня при вводе Serial.println ("Русский текст"); - выводятся спец символы? серый ромбик со знаком вопроса внутри. Программа и сохранения специально установлены без кириллических символов в пути сохранения. С Serial.println ("English text"); проблем нет.
у меня вылетает вводимое число и следом ниже -38 при любом числе. Что с этим сделать ?
Алекс привет! У меня научная работа имеется. Так вот для съёма данных требуется аналоговый вольтметр и амперметр до 60 вольт и 5 ампер и всё это выводить на экран в виде графика. С программой я разобрался а вот с вольт метром нет. Может ты что знаешь по этой теме и как её решить.
Чесно говоря я за 3серии ничего не понял! И СПАСИБО ЗА ЭТИ УРОКИ надеюсь все пойму через время!
У меня по последней части кода с in_data после нажатия Enter в монитор сначала прилетает 0, потом мое число... код один в один, плата wemos d1 mini. Откуда 0 вылез?
И в следующем уроке схожая фигня... Ввожу 1 или 5 , монитор выводит "Вы ввели 1 или 5!" и сразу следующая строка "Мимо!" , ввожу что то другое, монитор выводит "Мимо!" и сразу следующей строкой еще раз "Мимо!"...
Спасибо вам за ваше творчество и труд.Очень понравился ваше уроки.Прошёл обучение до конца.Хочу задать вам один вопрос.Как передать в порт состояния пинов (High/Low) в массиве для дальнейшей работы в стороне компа?
Все просто
Если вы имеете дело с аналог пинами просто пишите
Serial.println (analog.Read (ваш пин));
Для цифровых пинов же :
Serial.println (digital.Read (ваш пин));
Для цифрового пина будет выдовать только 1 или 0
А в аналовом пине будет выдавать значение от 0 до 255
ты супер!
Знатоки, подскажите как писать на ASM для Arduino?
Все хорошо! Но, в дополнение хочу сказать что скорость инициализации порта должна соответствовать скорости монитора порта, иначе в мониторе будут крокозябры.
+Alexei Belousov кстати да, допишу в шпаргалку. Спасибо!
Всё это хорошо, но у меня есть один вопрос;- можно ли прошить ардуинку, с планшетов андроид?
После ввода значения какого-то в мониторе порта, оно в буфере остаётся или как? И ввод значение через Enter производится?
Вот скетч такой в рамках 1 и 2 урока:
int del = 500;
void setup() {
Serial.begin(9600);
Serial.print("Задержка: ");Serial.print(del);Serial.println(" милисекунд.");
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 1) {
del = Serial.parseInt();
Serial.print("Задержка: ");Serial.print(del);Serial.println(" милисекунд.");
}
digitalWrite(13, HIGH);
delay(del);
digitalWrite(13, LOW);
delay(del);
}
Вот если оставлять if (Serial.available() > 0), как в примере, то в моём скетче нормально вводится первый раз задержка, потом следующий же цикл Serial.available() остаётся 1, срабатывает условие и переменной del присваивается 0, т.к. в Serial.parseInt() я ничего не ввёл. Ну вот я вместо 0 в условии указал более 1 и только тогда программа заработала так, как я и хотел - ввожу с монитора порта задержку и с ней начинает мигать светодиод. Как бэ задача выполнена, но я не понял почему так происходит и Serial.available() у меня всегда 1… ну в рамках вводимых 20 … 2000 миллисекунд задержки.
когда сначала написал скетч передачи в формате JSON, а потом решил посмотреть уроки чтобы разобраться )))