Ох. Нельзя два лайка поставить. Один ставлю как полагается. Второй держи устно (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)
Начал писать маленькие скетчики с комментариями напротив строчек кода по этим урокам. Пользуюсь ими как шпаргалками. Проще стало что то делать. Просто готовый код подставляешь в проект, допустим кнопку с антидребезгом, какие нибуть условия. Дело веселее пошло. А то вроде пока смотрю всё понимаю, закрою видео, через два часа и уже не помню где там запятая, как команда пишется. Мне уроки очень понравились. Больше // комментариев напротив кода, и можно самому разбираться потихоньку. Ещё бы хотелось увидеть работу с EEPROM. С библиотеками и т.д. Жду с нетерпением следующих уроков, эта тема так затягивает. Удачи и побольше видео!!!
Отличный урок, Спасибо! У меня из порта приходило число, а потом приходил 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 к методам которого надо обращаться, если бы класс назывался как-то по другому а библиотека так же, то обращение к методам было бы по названию класс а не библиотеки
Спасибо тебе, мне 13 лет и для программирования далеко, а идеи лезут и лезут из головы. Спасибо тебе,.AlexGyver. За эти знания!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Почему, когда я использую int s = Serial.read() - '0'; мне возвращает не только то, что ввожу я, но и - 38. А при использовании int s = Serial.parseInt(); кроме вводимых чисел возвращается 0?
спасибо большое за уроки ) мне для проектов ) как раз нужно умение программировать в данной сфере) все очень понятно ) и когда будет время ) начну вести интрадей с записями )
Алекс, сделай плиз такой же(досканальный и понятный) курс по c++ и главное поглубже залезь в кроссплатформенность... ну плиз... что я стараюсь, меня всё равно не увидят...
полностью повторял код, нет никакого отличия, но при варианте с -'0' на любое введенное число ответ -38, а при варианте с parsInt при любом введенном числе и цыфре выдает ноль. это почему так ?
Саня, спасай! При выполнении 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). Как лечить, а главное кого, код, ардуинку или меня?
хотел бы заметить, надо обращать внимание на тип данных которые вводим в буфер. если хотите вывести число 123456 используя тип int - то не получите 123456, а получите -7616 потому для такого числа надо использовать тип long. при вводе в буфер числа 32768 с типом int - получится результат -32768.
void setup() { Serial.begin (9600); } void loop() { if (Serial.available () > 0 ) { int in_data = Serial.parseInt (); Serial.println (in_data); } } // Не могу понять. Пишу в порт любое число, //затем ардуинка печатает это число в порт // Но через секунду число становится нулем и ноль отправляется в порт. // Почему у тебя так не происходит?
Выводится так потому что в мониторе порта радом со скоростью 9600 не выбрано "нет конца строки". В следующем видео по сериалу от автора это показано th-cam.com/video/Ul03Vkg9A40/w-d-xo.html
У Вас есть видео как передавать данные видеоизображения камеры (через радиоканал 2Ггц), к примеру с квадрокоптера, на пульт снабженный дисплеем nexton? Если такого нет, то запишите такое видео. Будет очень интересно узнать способы реализации такого проекта.
Год прошел, но все-таки спрошу. Что делать если после ввода числа в буфер через серию команд "Эхо": if (Serial.available() > 0) { int val = Serial.parseInt(); Serial.println(val); } В буфере порта вместе со значением заданной переменной val, которую я ввел, появляется еще и число 0. Вне зависимости от от моего числа далее идет число 0. Это работает и с условными операторами, таже проблема. На сколько я понимаю в будущем при построении сложных программ, это может мешать. Заранее спасибо за ответ.
Спасибо вам за Ваше творчество, все понятно и доступно даже для новичков (такого как я) . Можно ли где-то задать Вам простенький вопрос с приложением простенького скетча ? кое что не понятно
Alex, монитор порта это хорошо, а как на счет написания проги под виндой на чем нить с пояснениями (у вас довольно доходчиво получается) и управлять ардуино... Ну типа пара кнопок в программе, через ком порт на ардуино управлять вкл выкл светильника.
Видимо я рукожоп.. Alex, я всё делал как ты показывал на видео. Но вместо "HELLO, WORLD!", СОМ порт выводил вообще лютую дичь, типо такой : ЂxxxшxшxшxшxЂшxxшxЂxшxЂx. Пожалуйста помогите моему рукожопству) и видосы у тебя всегда годные Alex)
Спасибо вам за ваше творчество и труд.Очень понравился ваше уроки.Прошёл обучение до конца.Хочу задать вам один вопрос.Как передать в порт состояния пинов (High/Low) в массиве для дальнейшей работы в стороне компа?
Все просто Если вы имеете дело с аналог пинами просто пишите Serial.println (analog.Read (ваш пин)); Для цифровых пинов же : Serial.println (digital.Read (ваш пин)); Для цифрового пина будет выдовать только 1 или 0 А в аналовом пине будет выдавать значение от 0 до 255
Камрад, ценные видосы, спасибо! вот одну тонкость только не пойму - у меня кириллица не работает при выводе в монитор сом-порта, наверняка нужно какую-то библиотеку куда-либо добавить.. вот только какую и куда - не знаю.
Весьма познавательно. Начал изучать эту среду по Вашим урокам. Возник вопрос: когда я отправил данные в порт, то назад получил тоже значение, но также на следующей строке было число -38. Т.е я отправляю 1 а назад получаю это: 1 -38 Или отправляю в порт 1234 и получаю это: 1 2 3 4 -38 Хотел бы знать с чем это связано и как убрать это раздражающее число. Код проверил, полностью идентичен с Вашим
Думаю за год ты нашел решение, но вдруг кто-то как и я будет искать ответ на этот вопрос, еще раз продублирую то что нашел тут в комментах. Нужно внизу компорта вместо "NL(новая строка)" выбрать "Нет конца строки"
Все хорошо! Но, в дополнение хочу сказать что скорость инициализации порта должна соответствовать скорости монитора порта, иначе в мониторе будут крокозябры.
Привет. Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта. Как собрать плату для данного задач. Сделайте пожалуйста видеоролик по этой направления. Спасибо заранее
В среде Arduino применяется обработка данных по прерыванию ? Например, когда для выбранной платы есть аппаратная поддержка какого-то протокола (SPI, UART, Ethernet и т. д.), используется режим ожидания приёма (Salve) и приходит пакет, можно ли вызвать программное прерывание и читать приёмный буфер только тогда, когда в нём что-то есть ?
доброго времени суток есть ряд проблем от одной избавиля, это после вода цифр в строчку вдругой сто роке появляется* 0 * путём ()>1); а вот при введении 6 и более чисел происходит какоето вычетание и пишет со знаком -- другое число
3:06. Так ведь можно тогда сделать автономный калькулятор сист. счисления на ардуино, просто докупить отдельный дисплей и прицепить штук 10 кнопок. Главное чтоб пинов хватило. Хотя это очень грубый,конечно, получится калькулятор. И в школке на уроке информатики на к\р быстро переводить числа из одной системы в другую.
АЛЕКС ГАЙВЕР скажите на минуте 5:36, я сделал как Вы и сказали( int in_data = Serial.read() - '0';) вычел 0, но у меня в мониторе порта после каждого ввода символа на выходе получалось то самое число, но потом шло число -38. Как это решить и что это такое?
И так господа. На дворе 2022год и я ,решил после с++, поучить ардуинку. Столкнулся с проблемой вывода в порт, просто не выводило нечего. Serial.begin(9600); Serial.print("Hello"); По видосу должно было вывести слово: Hello. Но не выводилось. Решением стала команда задежки delay. Serial.begin(9600); delay(1000); // задержка в одну секунду Serial.print("Hello"); Только после этого у вас все заработает :)
У меня какие-то проблемы. Когда я ввожу число через Serial.read() - '0', у меня выводит -38. Так на всех числах, кроме 7, на нем, почему-то, выводит -7. Все списал, как у вас и цифры вводил те же. Потом когда я ввожу через Serial.parseInt(), у меня сначала выводит то, что надо, но потом я беру какое-нибудь число большое, например 198765, и выводит непонятно что. То вывело минусовое число, то число на 10000 больше, не понимаю. Помогите, пожалуйста. У меня Ардуино Уно, заказывал набор целый. Только бы не была сломана(
У меня при чтении чисел через Serial.read() - '0', сначала выводи число которое я ввел а потом -38, это я так понимаю выводит команду enter( кнопка "отправить" COM порта ардуины) , которую необходимо нажать после ввода числа. А при Serial.parseInt() выводит непонятно что, когда ты выходишь за диапазон значений переменных типа int , который лежит от -32768 до 32767 в первом уроке он рассказывал.
Привет! Вопрос такой-есть такая тема в машине можно делать диагностику с помощью обыкновенного резистора и светодиода. суть того что светодиод маргает при разных временных прерываниях с небольшой паузой между указанием на ошибку, так вот что я хочу сделать но не могу догнать как если тот же трюк пропустить через ардуино при помощи оптрона то как указать контроллеру когда и какая ошибка должна быть зафексирована а также при помощи TFT экрана вывести на него ошибки в писменном формате например показание с датчика допустим пришло такое "15" то нужно чтоб на экране вышла фраза "датчикДМРВ". проблема в том что между показаниями ошибки не как нельзя выставить интервал времени так как каждая цифра ошибки выводиться с тактом своего времени допустим если это 10-тки то светосигнал длинный если меньше-10 то сигналы короткие и еще порт автомобиля может выдать не одну а две три а то и более паказаний за раз. от сюда проблема как зациклить эти паказания а также научить ардуино разпозновать каждую ошибку.
наверняка такой проект уже есть на ардуино готовый.. а вообще такое без оптрона можно сделать, наверняка там какая нибудь диагностическая шина данных, к ней можно подключить ардуино напрямую, почитайте про прерывания в ардуино, это то что вам надо
Гуглим CAN bus arduino, получаем тонны материалов. например такая готовая инструкция: www.instructables.com/id/CAN-Bus-Sniffing-and-Broadcasting-with-Arduino/ В автоэлектронике очень много "подводных грабель" на которые можно наступать постоянно, необходимо иметь полный технический мануал на каждый автомобиль.
спасибо за материал. все вроде доступно, подскажи если знаешь делал как у тебя в этом уроке Но на мониторе выводит кто знает что, не так как у тебя , вставляет, какие то ряды квадратов... бред! если можно сбросить тебе фото чтоб лично просмотрел буду очень признателен.
а вот мне хочется построить кокпит для авиасима, dcs- вот с механникой мне всё понятно, и с тем что нужно пилить сверлить варить клеить и тд., а вот с электроникой большие проблемы... и как это всё сгенерировать?
Всем здравия! Почему у меня при вводе Serial.println ("Русский текст"); - выводятся спец символы? серый ромбик со знаком вопроса внутри. Программа и сохранения специально установлены без кириллических символов в пути сохранения. С Serial.println ("English text"); проблем нет.
Прикольно, спасибо. Но есть вопрос - я хочу ввести 3 значения по очередно, к примеру ввёл 1 нажал ентер 2 нажал ентер 3 нажал ентер и после третьего нажатия вывести в лог?
+sasha gaziev создавать бесконечный цикл вида while(1), каждое нажатие увеличивать переменную, хранящую число отправок , и по условию выходить из цикла командой break. Это грубый способ, несовсем корректный, но рабочий. Про него будет видео я надеюсь
Алекс, огомное вам спасибо. Скажите пож-та, почему вы выбрали тип данных String для объявления переменной mystring = OLOLOLO? Можно ли другой тип данных использовать для переменной, где значением является текст?
Алекс благодарю, но у меня проблема в 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, интересно почему так
Здравствуйте! классные видео! всплыл вопрос - может ли ардуино считывать коды с COM порта которые "кидает" сторонняя программа? если да, то буду ждать когда видос запилите 👋
Заметки Ардуинщика Скажи пожалуйста, что значит возвращает количество байт лежащих в буфере? Именно слово "возвращает". Я не понимаю само его значение (смысл). Заранее спасибо!
@@grenka1370 Я так-же не понимал :) Если у Тебя есть переменная "Х" со значением 10, а Ты возвращаешь ей данные из буфера, допустим 5, переменная "Х" принимает значение 5. Я и по сей день не понимаю почему "возвращает", просто запомнил возвращает = присваивает. Ну меняет.
Ох. Нельзя два лайка поставить. Один ставлю как полагается. Второй держи устно (Like). Лучшие уроки по Ардуинке, что встречал на просторах Ютуба. С нетерпением жду продолжения.
Невозможно оторваться! Жду не дождусь своих собственных компонентов, чтобы начать практиковаться.
Спасибо тебе огромное!!!
Всё разложено по полочкам от А до Я и не остаётся вопросов от слова *absolutely*. Качественный контент от человека со знанием своего дела и как показывает практика, думающего за нас, а это очень важный момент!.
P. S. Вперёд в кремниевую долину!
Неа. Я уже задолбался пересматривать на 4:28 всё как-то слишком непонятно.
@@Obeme77777Serial.println() - команда, которая выводит на экран то, что ты ввёл в скобочках или что записано в переменной. Но при этом переводит на следующую строку.
A Serial.print() - тоже самое, но не переводит на след. строку
Легче на самом деле попробовать самому пописать код, тогда станет ясно)
Начал изучать ардуино по вашим видео, очень доступно и понятно!
Максим Морган ага
мне тоже
Ну как, два года спустя, чему научился?
@@optimanshow А два?
Максим Морган шел 2019 год, как освоил ардуино?
Годный канал, отличная подача!
Где же Ты был, когда Я робота клепал, по косым урокам, в которых говорилось "делай так, просто делай так и не спрашивай почему", а не рассказывалось откуда ноги растут!
А теперь Я делаю наливайку для пива, по Твоим урокам и это здорово! Спасибо Тебе огромное!
На 4-м курсе универа, код знаю очень плохо, да и не особо было интересно. Недавно узнал про ардуино, стало интересно кодить. А посмотрев твои ролики все понятно стало сразу. Спасибо тебе)
Вот оно. Будущее Ютуба!
Уже настоящее. Ютуб - двигатель прогресса.
Кто сдесь уже в 2021?
@Roomit YT я тоже :)
Я тоже
@@ТИМУРУС-д1з я
Твои уроки лучшие! Продолжай в том же духе!
веду конспект...честное слово)) ..так лучше запоминается
+Nikita Degterev молодец)
И чё, как, выучил?
@@КиноПёс-ъ5н та всё, видишь, пропал человек. Больше нет его. Ушел программировать наверное
@@vitalin5953 а я не пропал)
@@КиноПёс-ъ5н а зачем учить ? пользоваться нужно.
Спасибо ! Четко и просто без лишнего! А то начинаешь понимать этот язык программирования и каааааак загадят буфер обмена (мозги) так сразу все забываешь . Давно искал искал подобные видосики.
супер конспект. от нас лайк.
на выборах за тебя проголосую
Да. Может ардуино в России подешевеет....
На выборах надо за компетентных в вопросе людей голосовать, а не абы за любимого блогера...
Я из будущего... Эх
@@Not_932 В ютубе надо воспринимать информацию в юмористическом контексте, а не буквально...
+ )
'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. С библиотеками и т.д. Жду с нетерпением следующих уроков, эта тема так затягивает. Удачи и побольше видео!!!
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 см. ООП любого Си-подобного языка)
Боже мой, большое спасибо тебе, святой человек, а то я реально не понимал, как работает Serial.flush
Спасибо тебе, мне 13 лет и для программирования далеко, а идеи лезут и лезут из головы. Спасибо тебе,.AlexGyver. За эти знания!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Всмысле далеко? Там все просто, же
Спасибо за поддержку
Почему далеко, закажи а Китае ардуинку попроще, пару датчиков и занимайся. С практикой и теория понятнее.
Я в пятом классе со small basic работал
Ты все очень доходчиво объясняешь и надо бы упомянуть о действиях с физической системой
Почему, когда я использую int s = Serial.read() - '0'; мне возвращает не только то, что ввожу я, но и - 38.
А при использовании int s = Serial.parseInt(); кроме вводимых чисел возвращается 0?
В мониторе порта слева от выбора скорости есть параметр переноса строки, нужно выбрать "Нет конца строки" и вывод станет нормальным.
Очень качественные и доступные материалы. Спасибо!
Ты лучший! Спасибо! Благодаря тебе я научился работать с Arduino!
спасибо большое за уроки ) мне для проектов ) как раз нужно умение программировать в данной сфере) все очень понятно ) и когда будет время ) начну вести интрадей с записями )
Спасибо за ваши уроки!! Продолжайте в том же духе! Упорно веду конспект)))
еслиб не забывал бы то каждому видосику бы лайк и комент ставил бы!!! респект!молодец!
Алекс, сделай плиз такой же(досканальный и понятный) курс по c++ и главное поглубже залезь в кроссплатформенность... ну плиз... что я стараюсь, меня всё равно не увидят...
Спасибо, очень помог. Наконец-то разорался
Орать то зачем)
@@Auzenable опЫчатка =)
Спасибо, очень хорошее видео 📹)
Вот , СПАСИБО .
Так это то что я искал !
Ардуинщик, а если копипастить из конспекта в "описание к видео", людям будет удобней искать нужные вопросы в инете.
очень полезное обучение у вас , спасибо
полностью повторял код, нет никакого отличия, но при варианте с -'0' на любое введенное число ответ -38, а при варианте с parsInt при любом введенном числе и цыфре выдает ноль. это почему так ?
Всё очень подробно и понятно тоже веду конспект!
Классное видео! Мне оно очень помогло!
Саня, спасай!
При выполнении 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 за то что я обяснил училке новую команду а про домашки я ваше не говорю))
У меня ,когда я прописываю " - '0' ", выводится цифра,которую я вписал и "-38", в чем может быть проблема?
a - '0' прописывали к функции read или parseInt?
В COM порте выбери "Нет конца строки".
@@Pryxa4 Спасибо
Pryxa4 спасибо
@@Pryxa4 Господи, спасибо огромнейшее, успел задолбаться пока выяснял почему это происходит.
хотел бы заметить, надо обращать внимание на тип данных которые вводим в буфер. если хотите вывести число 123456 используя тип int - то не получите 123456, а получите -7616 потому для такого числа надо использовать тип long. при вводе в буфер числа 32768 с типом int - получится результат -32768.
Об этом было в предыдущем уроке
Хотел было ссылку добавить на предыдущий урок)))
Чёт прям Паскаль вспомнил
Аж прослезился...
Так в одном выпуске говорили что если вы знаете этот язык программирования, то вы освоили 90% Ардуино.
Этот язык напоминает как паскаль так и с++
void setup() {
Serial.begin (9600);
}
void loop() {
if (Serial.available () > 0 ) {
int in_data = Serial.parseInt ();
Serial.println (in_data);
}
}
// Не могу понять. Пишу в порт любое число,
//затем ардуинка печатает это число в порт
// Но через секунду число становится нулем и ноль отправляется в порт.
// Почему у тебя так не происходит?
Выводится так потому что в мониторе порта радом со скоростью 9600 не выбрано "нет конца строки". В следующем видео по сериалу от автора это показано th-cam.com/video/Ul03Vkg9A40/w-d-xo.html
У Вас есть видео как передавать данные видеоизображения камеры (через радиоканал 2Ггц), к примеру с квадрокоптера, на пульт снабженный дисплеем nexton? Если такого нет, то запишите такое видео. Будет очень интересно узнать способы реализации такого проекта.
Спасибо, хорошее преподавание!
Спасибо, а то намучился с отправкой данных. А как отправить массив с данными? Только парсингом вытаскивать данные?
Год прошел, но все-таки спрошу. Что делать если после ввода числа в буфер через серию команд "Эхо":
if (Serial.available() > 0) {
int val = Serial.parseInt();
Serial.println(val);
}
В буфере порта вместе со значением заданной переменной val, которую я ввел, появляется еще и число 0. Вне зависимости от от моего числа далее идет число 0. Это работает и с условными операторами, таже проблема. На сколько я понимаю в будущем при построении сложных программ, это может мешать. Заранее спасибо за ответ.
Такая же фигня, дайте ответ пожалуйста!
Нашёл ниже: "В мониторе порта нужно выбрать вместо "Новая Строка " -"Нет конца строки""
@@ВсесамоеинтересноеО_о Спасибо огромное!
с нулём баг исправил и какой-то непонятный баг. Не выводит первую цифру а если ввожу например 1 то вывожит 0
Понял в чём баг. Вместо Serial.available заюзал Serial.read
Спасибо большое! Вы мне очень помогли. Уже подписался!
5:40 у меня этот код после каждого ввода добавляет строчку "-38"
у меня тоже
Как исправил?
@@raufgimadeyev , В окне COM-порта внизу справа выбери в выпадающем списке "Нет конца строки"
@@ВикторВикторович-ч1щ спасибо большое)
@@ВикторВикторович-ч1щ Час сидел бился над этой хренью, пока не залез в каменты. Спасибо.
Спасибо за классный видос. Лайк!
Спасибо вам за Ваше творчество, все понятно и доступно даже для новичков (такого как я) .
Можно ли где-то задать Вам простенький вопрос с приложением простенького скетча ? кое что не понятно
Здадите мне) наверно справлючь
и во вторых алекс работает за деньги можно заказать код у него
Доходчиво. Спасибо!
Alex, монитор порта это хорошо, а как на счет написания проги под виндой на чем нить с пояснениями (у вас довольно доходчиво получается) и управлять ардуино... Ну типа пара кнопок в программе, через ком порт на ардуино управлять вкл выкл светильника.
Отлично. ТО, что надо.
смотрю второй видос, ардуино для новичка! Если с первым зашло то со второго урока вообще не понятно. Буду больше изучать.
Видимо я рукожоп.. Alex, я всё делал как ты показывал на видео. Но вместо "HELLO, WORLD!", СОМ порт выводил вообще лютую дичь, типо такой : ЂxxxшxшxшxшxЂшxxшxЂxшxЂx. Пожалуйста помогите моему рукожопству) и видосы у тебя всегда годные Alex)
На счет Serial.parseint () можно убрать эту задержку при помощи Serial.Timeout (2) в setup()😊
а можешь подробнее друг рассказать об этом
Спасибо вам за ваше творчество и труд.Очень понравился ваше уроки.Прошёл обучение до конца.Хочу задать вам один вопрос.Как передать в порт состояния пинов (High/Low) в массиве для дальнейшей работы в стороне компа?
Все просто
Если вы имеете дело с аналог пинами просто пишите
Serial.println (analog.Read (ваш пин));
Для цифровых пинов же :
Serial.println (digital.Read (ваш пин));
Для цифрового пина будет выдовать только 1 или 0
А в аналовом пине будет выдавать значение от 0 до 255
Спасибо за видео и советы
Камрад, ценные видосы, спасибо! вот одну тонкость только не пойму - у меня кириллица не работает при выводе в монитор сом-порта, наверняка нужно какую-то библиотеку куда-либо добавить.. вот только какую и куда - не знаю.
Весьма познавательно. Начал изучать эту среду по Вашим урокам. Возник вопрос: когда я отправил данные в порт, то назад получил тоже значение, но также на следующей строке было число -38. Т.е я отправляю 1 а назад получаю это:
1
-38
Или отправляю в порт 1234 и получаю это:
1
2
3
4
-38
Хотел бы знать с чем это связано и как убрать это раздражающее число. Код проверил, полностью идентичен с Вашим
Думаю за год ты нашел решение, но вдруг кто-то как и я будет искать ответ на этот вопрос, еще раз продублирую то что нашел тут в комментах. Нужно внизу компорта вместо "NL(новая строка)" выбрать "Нет конца строки"
@@Sobakak Спасибо
Все хорошо! Но, в дополнение хочу сказать что скорость инициализации порта должна соответствовать скорости монитора порта, иначе в мониторе будут крокозябры.
+Alexei Belousov кстати да, допишу в шпаргалку. Спасибо!
Привет.
Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта.
Как собрать плату для данного задач. Сделайте пожалуйста видеоролик по этой направления.
Спасибо заранее
Спасибо! Учимся)
В среде Arduino применяется обработка данных по прерыванию ? Например, когда для выбранной платы есть аппаратная поддержка какого-то протокола (SPI, UART, Ethernet и т. д.), используется режим ожидания приёма (Salve) и приходит пакет, можно ли вызвать программное прерывание и читать приёмный буфер только тогда, когда в нём что-то есть ?
Очищение пригодится если мы хотим получать значение с физ кнопок а в порт выводить картинку "игры"
доброго времени суток есть ряд проблем от одной избавиля, это после вода цифр в строчку вдругой сто
роке появляется* 0 * путём ()>1); а вот при введении 6 и более чисел происходит какоето вычетание и пишет со знаком -- другое число
Отлично,спасибо!
3:06. Так ведь можно тогда сделать автономный калькулятор сист. счисления на ардуино, просто докупить отдельный дисплей и прицепить штук 10 кнопок. Главное чтоб пинов хватило. Хотя это очень грубый,конечно, получится калькулятор. И в школке на уроке информатики на к\р быстро переводить числа из одной системы в другую.
Спасибо!
Вряд ли буду когда нибудь ардуинить, смотрю твои видосы просто потому что она ахуенные ^___^
@ssch ебать ты стремный тип тебе наверное сейчас стыдно за себя прошлого
@@isakneuman9995 как то ты не в тему, или не въехал?
Могу повторить то же. Повторить?
@@TheWladberlin я хз что имел ввиду в тот момент, но я был прав.
@@isakneuman9995 Не здаешься, борешься до конца :)))
АЛЕКС ГАЙВЕР скажите на минуте 5:36, я сделал как Вы и сказали( int in_data = Serial.read() - '0';) вычел 0, но у меня в мониторе порта после каждого ввода символа на выходе получалось то самое число, но потом шло число -38. Как это решить и что это такое?
Выключи отправку служебных символов в мониторе порта
@@ArduNotes Спасибо
@@maxichannel9080 Привет, обьясни пожалуйста более подробно, как отключить отправку служебных символов в мониторе порта?? (Не нашел эту кнопку)
@@ArduNotes объясни пожалуйста более подробно, как отключить отправку служебных символов в мониторе порта?? (Не нашел эту кнопку)
@@Iz9l Открой монитор порта, справа в низу нписано "9600 бод", чуть левее поставь "Нет конца строки", вместо "Новая строка" или "Возврат коретки".
И так господа. На дворе 2022год и я ,решил после с++, поучить ардуинку. Столкнулся с проблемой вывода в порт, просто не выводило нечего. Serial.begin(9600);
Serial.print("Hello");
По видосу должно было вывести слово: Hello. Но не выводилось. Решением стала команда задежки delay.
Serial.begin(9600);
delay(1000); // задержка в одну секунду
Serial.print("Hello");
Только после этого у вас все заработает :)
то есть чтобы что то выводить на экран нужно подключить ардуинку?
есть идеи как не подключать экран?)
@@ArduNotes есть.Просто берешь лсд дисплей и выводишь
У меня какие-то проблемы. Когда я ввожу число через Serial.read() - '0', у меня выводит -38. Так на всех числах, кроме 7, на нем, почему-то, выводит -7. Все списал, как у вас и цифры вводил те же. Потом когда я ввожу через Serial.parseInt(), у меня сначала выводит то, что надо, но потом я беру какое-нибудь число большое, например 198765, и выводит непонятно что. То вывело минусовое число, то число на 10000 больше, не понимаю. Помогите, пожалуйста. У меня Ардуино Уно, заказывал набор целый. Только бы не была сломана(
У меня при чтении чисел через Serial.read() - '0', сначала выводи число которое я ввел а потом -38, это я так понимаю выводит команду enter( кнопка "отправить" COM порта ардуины) , которую необходимо нажать после ввода числа. А при Serial.parseInt() выводит непонятно что, когда ты выходишь за диапазон значений переменных типа int , который лежит от -32768 до 32767 в первом уроке он рассказывал.
В мониторе порта нужно выбрать вместо "Новая Строка " -"Нет конца строки"
спасибо помогло
Привет! Вопрос такой-есть такая тема в машине можно делать диагностику с помощью обыкновенного резистора и светодиода. суть того что светодиод маргает при разных временных прерываниях с небольшой паузой между указанием на ошибку, так вот что я хочу сделать но не могу догнать как если тот же трюк пропустить через ардуино при помощи оптрона то как указать контроллеру когда и какая ошибка должна быть зафексирована а также при помощи TFT экрана вывести на него ошибки в писменном формате например показание с датчика допустим пришло такое "15" то нужно чтоб на экране вышла фраза "датчикДМРВ". проблема в том что между показаниями ошибки не как нельзя выставить интервал времени так как каждая цифра ошибки выводиться с тактом своего времени допустим если это 10-тки то светосигнал длинный если меньше-10 то сигналы короткие и еще порт автомобиля может выдать не одну а две три а то и более паказаний за раз.
от сюда проблема как зациклить эти паказания а также научить ардуино разпозновать каждую ошибку.
и еще забыл дополнить при диагностики если ошибки показал Эбу их повтаряет по кругу допустим 10, 18, 23 и по новой 10, 18, 23 и так пока не исправиш
наверняка такой проект уже есть на ардуино готовый.. а вообще такое без оптрона можно сделать, наверняка там какая нибудь диагностическая шина данных, к ней можно подключить ардуино напрямую, почитайте про прерывания в ардуино, это то что вам надо
Гуглим CAN bus arduino, получаем тонны материалов.
например такая готовая инструкция: www.instructables.com/id/CAN-Bus-Sniffing-and-Broadcasting-with-Arduino/
В автоэлектронике очень много "подводных грабель" на которые можно наступать постоянно, необходимо иметь полный технический мануал на каждый автомобиль.
спасибо за материал. все вроде доступно, подскажи если знаешь делал как у тебя в этом уроке Но на мониторе выводит кто знает что, не так как у тебя , вставляет, какие то ряды квадратов... бред!
если можно сбросить тебе фото чтоб лично просмотрел буду очень признателен.
скорость порта в терминале (справа снизу) поставить 9600
4:51 функция Serial.read принимает один байт, а уже в какой тип его нужно перевести остаётся на усмотрение ардуинщика.
мне 12 и всё понятно ,супер
а вот мне хочется построить кокпит для авиасима, dcs- вот с механникой мне всё понятно, и с тем что нужно пилить сверлить варить клеить и тд., а вот с электроникой большие проблемы... и как это всё сгенерировать?
Всем здравия! Почему у меня при вводе Serial.println ("Русский текст"); - выводятся спец символы? серый ромбик со знаком вопроса внутри. Программа и сохранения специально установлены без кириллических символов в пути сохранения. С Serial.println ("English text"); проблем нет.
Здравствуйте, я когда пишу скорость бит в сек, там совпадает с монитором, 9600, но показывает иероглифы, заметьте пожалуйста.
Прикольно, спасибо. Но есть вопрос - я хочу ввести 3 значения по очередно, к примеру ввёл 1 нажал ентер 2 нажал ентер 3 нажал ентер и после третьего нажатия вывести в лог?
+sasha gaziev создавать бесконечный цикл вида while(1), каждое нажатие увеличивать переменную, хранящую число отправок , и по условию выходить из цикла командой break. Это грубый способ, несовсем корректный, но рабочий. Про него будет видео я надеюсь
благодарю за приятную музыку на фоне, а не какой-нибудь манальный deephouse.
Что делать если функция parseint возвращает не только цифру которую я ввёл, но и ноль впридачу. Помогите, пожалуйста!
Что-то не так написал
Надо выбрать "нет конца строки" в порте
сделай пожалуйcта урок про подключение Mp3 плеера к ардуино!
Подскажите пожалуйста, я сделал это "эхо", но каждый раз после вывода числа выводится 0 с новой строки
такая же проблема, сразу сбрасывает значение переменной до нуля
Алекс, огомное вам спасибо. Скажите пож-та, почему вы выбрали тип данных String для объявления переменной mystring = OLOLOLO? Можно ли другой тип данных использовать для переменной, где значением является текст?
Я так понимаю, выводить можно цифры и в кавычках, как текст, если я не собираюсь их как то преобразовывать или делать с ними действия
void setup() {
Serial.begin(9600);
Serial.print("hello");
}
Ошибка открытия последовательного порта "COM4" (Port busy)
не могу понять в чём проблема?
Посоветуйте, как принимать и обрабатывать на Ардуине картинку с камеры и на что эту картинку записывать.
parseInt для чисел а что нужно вписать для слов
Алекс благодарю, но у меня проблема в 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, интересно почему так
Для 1с-ника всё понятно)
Здравствуйте! классные видео! всплыл вопрос - может ли ардуино считывать коды с COM порта которые "кидает" сторонняя программа? если да, то буду ждать когда видос запилите 👋
Пермяков Михаил может, почему нет. Вот только это уже не про ардуино, это про программирование окошек.
Хочу купить ребенку, подумала вдруг не потяну. начала смотреть уроки, оказалось не зря 20 лет назад в школе учила бейсик и паскаль.😂
4:36 практичнее будет использовать String, потому что пользователь может ведь не только числа написать
а данные буфера по умолчанию измеряются в байтах или КБайтах?
+Hh Gg здесь все в байтах измеряется
Заметки Ардуинщика Скажи пожалуйста, что значит возвращает количество байт лежащих в буфере? Именно слово "возвращает". Я не понимаю само его значение (смысл). Заранее спасибо!
@@grenka1370 Я так-же не понимал :)
Если у Тебя есть переменная "Х" со значением 10, а Ты возвращаешь ей данные из буфера, допустим 5, переменная "Х" принимает значение 5.
Я и по сей день не понимаю почему "возвращает", просто запомнил возвращает = присваивает. Ну меняет.
А я не понял, что за com порт. Вроде бы это юсб, но в интернете компорт выглядит совсем по другому. Может еще разберусь. Только начал изучение.
А что делать если вместо тго чтоя ввожу выводит -38