Уроки Ардуино. Работа с текстом, String и char[]

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 มิ.ย. 2024
  • В этом уроке углубимся в работу с текстом: String и cstring, трюки и особенности использования, решение реальных задач, парсинг.
    ► Огромный стартовый набор GyverKIT: kit.alexgyver.ru/
    ► Примеры из урока: github.com/AlexGyver/tutorials/
    ► Текстовый урок: alexgyver.ru/lessons/strings/
    ► Библиотека mString.h: github.com/AlexGyver/GyverLib...
    ► Доки на String (англ): www.arduino.cc/reference/en/l...
    ► Доки на строки (англ): www.nongnu.org/avr-libc/user-...
    ► Доки на P строки (англ): www.nongnu.org/avr-libc/user-...
    ► Модули и датчики с Али: alexgyver.ru/arduino_shop/
    ► Страница "Заметок Ардуинщика": alexgyver.ru/arduino_lessons/
    00:00 - Начало
    01:32 - Начинаем разбирать cstring
    02:26 - Организация данных в памяти
    04:28 - Работаем с cstring, длина строки
    05:39 - Задача №1
    07:48 - Задача №2
    08:07 - Задача №3
    10:24 - Библиотека mString.h
    Теги: #arduino #уроки #ардуино #alexgyver
    ●●●●●●●●●●●●●●●●●●●●
    ► Основной канал: / alexgyvershow
    ► Поддержать автора alexgyver.ru/support_alex/
    ► Официальный сайт: alexgyver.ru/
    ► Почта: alex@alexgyver.ru
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 261

  • @0lympy
    @0lympy 3 ปีที่แล้ว +63

    5:00 str[11] = NULL это неправильно, должно быть = '\0' тогда уж, потому что NULL это константа нулевого указателя (неинициализированного) типа адрес в памяти, а str[11] типа char. Получается лишнее преобразование типов, и в теории на некоторых системах может работать некорректно (если смотреть как на язык С в целом). То есть это все равно что написать str[11] = false, к 0 преобразуется, работать будет, но это лишнее неявное преобразование типов и логически некрасивый код.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +10

      однако да!

    • @dima12011201
      @dima12011201 3 ปีที่แล้ว +5

      Вроде все норм. Тк char это 1байт. Null - 32 битный указатель (константа) преобразование 32 -> 8 работает норм и это статически при компиляции. Плохо если нулл используем на 64 бита. Там нужен nullptr

    • @lykabraine2766
      @lykabraine2766 3 ปีที่แล้ว

      @@dima12011201 +

    • @lykabraine2766
      @lykabraine2766 3 ปีที่แล้ว

      @@dima12011201 +

    • @lykabraine2766
      @lykabraine2766 3 ปีที่แล้ว +5

      Вопрос почему я смотрю то шо знаю давно

  • @Aptekar_
    @Aptekar_ 3 ปีที่แล้ว +42

    Как программист -нетрадиционной- объектной ориентации, пожалуй всё же буду использовать стринги)

  • @dms1304
    @dms1304 3 ปีที่แล้ว +29

    Спасиьо за труды. Пожалуй, вы лучшее сообщество по этой тематике

    • @inqurity
      @inqurity 3 ปีที่แล้ว

      *Лучшее в России, так-то уроков по С++ и Ардуино миллион

    • @MAD_ALEX
      @MAD_ALEX 3 ปีที่แล้ว

      @@inqurity неужели в Казахстане есть лучше уроки?)

    • @inqurity
      @inqurity 3 ปีที่แล้ว

      @@MAD_ALEX Упс, я имел ввиду на Русском

    • @maksimma_ko6321
      @maksimma_ko6321 3 ปีที่แล้ว +2

      Подтверждаю круть да и только из за этого засранца я купил себе ардуинку

    • @user-ju6bl8zh9g
      @user-ju6bl8zh9g 3 ปีที่แล้ว

      @@maksimma_ko6321 транжира Вы, однако)))

  • @Syjalo
    @Syjalo 3 ปีที่แล้ว +30

    Я уже совсем запутался о каких стрингах идет речь

  • @Romulus1988
    @Romulus1988 3 ปีที่แล้ว +85

    Гайвер наконец-то объяснил, что лучше жить без стрингов

    • @mmiro
      @mmiro 3 ปีที่แล้ว +2

      На самом деле нет

    • @Al.Sy.
      @Al.Sy. 3 ปีที่แล้ว +2

      "За всё приходится платить." Старий амэрыканский поговорька.

    • @user-dq2ci5ln5g
      @user-dq2ci5ln5g 3 ปีที่แล้ว +1

      Да, зачот! Ходите в семейниках! 👍😁🤪

    • @user-dq2ci5ln5g
      @user-dq2ci5ln5g 3 ปีที่แล้ว

      @@Al.Sy. Пронька рулит! 👍😁🤪

    • @Al.Sy.
      @Al.Sy. 3 ปีที่แล้ว +2

      @@user-dq2ci5ln5g В США наши туристы как-то вводили моду на семейные трусы на пляже. И американцы купились, подумав, что это новомодная фишка. :)

  • @iqubik
    @iqubik 3 ปีที่แล้ว +2

    Я как раз в конце ждал что-то такое как сделал Алекс. Ведь оно прям напрашивалось! Спасибо

  • @StoneTL
    @StoneTL 3 ปีที่แล้ว +4

    Как раз этого мне и не хватало в одном проекте месяца 2 назад! Но зато теперь всё понятно и под рукой) Спасибо

  • @Slavasil
    @Slavasil 3 ปีที่แล้ว +9

    Зашел не по колокольчику, а по расписанию!)

  • @cvitaly2033
    @cvitaly2033 3 ปีที่แล้ว +4

    Отлично. Надо пересмотреть свои скетчи

  • @vladimirshumilov7846
    @vladimirshumilov7846 3 ปีที่แล้ว +1

    Alex, спасибо за видео. Ждём продолжения

  • @omygod1984
    @omygod1984 3 ปีที่แล้ว +1

    Ура😬🍻
    Новое, интересное видео🎥
    Спасибо Алексу 👍
    Ждем продолжения 🤓

  • @azikamel5624
    @azikamel5624 ปีที่แล้ว

    Вы замечательный человек, большое спасибо за ваше красивое и быстрое объяснение

  • @antonzavidov7328
    @antonzavidov7328 3 ปีที่แล้ว +2

    Огромное спасибо тебе за этот материал!

  • @masterkit9517
    @masterkit9517 3 ปีที่แล้ว +4

    Побольше бы таких уроков

  • @AlejandroFedorov
    @AlejandroFedorov 3 ปีที่แล้ว +2

    Полезненько. Убавит времени копания в доках. Сенкью

  • @Nachmed
    @Nachmed 3 ปีที่แล้ว +1

    Спасибо за урок и Mstring!

  • @konstantingolinskiy4944
    @konstantingolinskiy4944 3 ปีที่แล้ว +4

    Чтобы помещать в строки разные значения float int и .т.д а также из строки извлекать их можно воспользоваться функцией sprintf() sscanf()

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +4

      одна эта функция тяжелее чем весь String, а выполняется лучше даже не знать сколько))

  • @user-wd2qe9rb8o
    @user-wd2qe9rb8o 3 ปีที่แล้ว +1

    Благодарю за уроки!!!

  • @Codeman47Rus
    @Codeman47Rus 3 ปีที่แล้ว +1

    Спасибо. Еще не досмотрел, но уже очень круто и понятно. Может так и до ассемблера дойдем)))

  • @alexanderilyin2136
    @alexanderilyin2136 3 ปีที่แล้ว +6

    Сделай следующий урок как лекция про указатели и память от А до Я, очень полезно

  • @user-iv5bk3bq1w
    @user-iv5bk3bq1w 3 ปีที่แล้ว +1

    Спасибо Алекс Гайвер полезный урок был.

  • @Disorrder
    @Disorrder 3 ปีที่แล้ว +2

    0:30 даа, именно поэтому в ledOS (или как там называется твоя библиотека для светодиодных лент) используется именно String, для обычного вывода строк на экран. Стоит убрать захардкоженные 2 строки и сразу памяти хватит на лишние 30-40 лампочек D:

  • @hutoryanin
    @hutoryanin 3 ปีที่แล้ว

    Кайфы) Теперь мне яснее стало как работать с указателями.
    *Л. а. й. к.*

  • @user-vs4vv6ev2m
    @user-vs4vv6ev2m 3 ปีที่แล้ว +1

    Шикарный урок!

  • @antonmoshkovich492
    @antonmoshkovich492 3 ปีที่แล้ว +2

    Спасибо! Очень полезно!

  • @AlexLink-rb5by
    @AlexLink-rb5by 3 ปีที่แล้ว +1

    Прикольно.. только всё это проходил на занятиях и сдал экзамены по с++))) спасибо!!! Лайк!!!

  • @inqurity
    @inqurity 3 ปีที่แล้ว +2

    Отличный урок!

  • @maxim190840
    @maxim190840 3 ปีที่แล้ว

    Алекс, ты супер молодец!

  • @EugeneTit1
    @EugeneTit1 3 ปีที่แล้ว +4

    Я делаю так : Serial.println(F("initialization done.")); // оптимизировано для экономии памяти

  • @KelevraSelevin
    @KelevraSelevin 3 ปีที่แล้ว

    Здоровья тебе большого и крепкого )

  • @user-uw6nh4rt3k
    @user-uw6nh4rt3k 3 ปีที่แล้ว +2

    Видеоурок улеттт!

  • @user-bb3bx6gl7j
    @user-bb3bx6gl7j 3 ปีที่แล้ว +2

    Привет! Полезная информация! Приятно слушать!
    А если по факту - всю голову мне сломал)))

  • @Gameplayer55055
    @Gameplayer55055 3 ปีที่แล้ว +48

    Указатель, это когда по очереди пробуешь text *text &text, пока линтер не перестанет ругаться

    • @nemoderator2043
      @nemoderator2043 3 ปีที่แล้ว +2

      Гы

    • @inqurity
      @inqurity 3 ปีที่แล้ว +1

      Да

    • @disinvis
      @disinvis 3 ปีที่แล้ว +1

      Первый курс вспомнился :)

    • @lykabraine2766
      @lykabraine2766 3 ปีที่แล้ว +1

      Жиза

    • @AlexLink-rb5by
      @AlexLink-rb5by 3 ปีที่แล้ว +1

      & - это ссылка)))

  • @siddha13
    @siddha13 2 ปีที่แล้ว +2

    Алекс, огромная благодарность тебе за твои труды! Благодаря твоим урокам хочется изучать более низкоуровневые вещи

    • @XpIOHdeJIb3000
      @XpIOHdeJIb3000 2 ปีที่แล้ว

      а нафига ардуинщикам знать низкоуровневые вещи?

    • @user-wm4cs1us2q
      @user-wm4cs1us2q ปีที่แล้ว

      @@XpIOHdeJIb3000 Чтобы с ардуино пересесть на более продвинутые МК и т.д. Ардуино ведь начальный уровень

    • @XpIOHdeJIb3000
      @XpIOHdeJIb3000 ปีที่แล้ว

      @@user-wm4cs1us2q а по-моему ардуино - это путь куда-то "налево"

    • @user-wm4cs1us2q
      @user-wm4cs1us2q ปีที่แล้ว

      @@XpIOHdeJIb3000 Ардуино - это просто плата с микроконтроллером, и главное в ней именно микроконтроллер. Так что вы можете программировать эту плату хоть на ассемблере, как взрослые дяди это делают, и, также как другие МК программируют, но новичкам это сложно, особенно если они не разбираются в программировании и в архитектурных особенностях того или иного МК.

    • @XpIOHdeJIb3000
      @XpIOHdeJIb3000 ปีที่แล้ว

      @@user-wm4cs1us2q ардуино как раз таки и приучает не разбираться, а пользовать кривоногими библиотеками.

  • @werdy64
    @werdy64 3 ปีที่แล้ว

    Заставка с труселями просто огонь.

  • @andrewgromow1112
    @andrewgromow1112 3 ปีที่แล้ว +1

    Хорошая темка! ))

  • @wad600
    @wad600 3 ปีที่แล้ว +1

    Вау, шик блеск красота

  • @v61kz
    @v61kz 3 ปีที่แล้ว +5

    Большая разница в скорости💪
    Но - не так просто и не так удобно как стринги🙃

  • @txchumberrxnumber6604
    @txchumberrxnumber6604 8 หลายเดือนก่อน

    Pointer points to variable -- указатель указывает на переменную. Value inside variable --значение внутри переменной.

  • @topalek
    @topalek 3 ปีที่แล้ว +1

    крутяк, спасибо

  • @salmantechnologies282
    @salmantechnologies282 3 ปีที่แล้ว +6

    Сэр, пожалуйста, добавьте к видео английские субтитры

  • @user-wq4ft4gy2l
    @user-wq4ft4gy2l 2 ปีที่แล้ว +1

    В задаче 3 cstr и comma при копировании в строку это количество символов до и после запятой?

  • @dmitryefimkin6550
    @dmitryefimkin6550 ปีที่แล้ว +1

    Круто. А как быть с данными падающими с UART?

  • @MimakaGamleT
    @MimakaGamleT 3 ปีที่แล้ว

    Ухх, от души)

  • @jamesblack7412
    @jamesblack7412 3 ปีที่แล้ว +1

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

  • @hottabychable
    @hottabychable 3 ปีที่แล้ว +1

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

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      указатель на указатель - да, типичная схема хранения и использования строк =) в том числе в программной памяти

  • @user-vg9mp5oh3q
    @user-vg9mp5oh3q 3 ปีที่แล้ว +3

    запиши плз ролик по micropython на esp8266 или esp32

  • @alexlinuxoid3507
    @alexlinuxoid3507 3 ปีที่แล้ว +2

    3:40 есть проблема в формулировке, для обычного массива чаров валидно, но при прибавлении чаисла к указателю он сместится не на этл число байтов, а на sizeof(тип_на_который_ссылаемся) * число

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      да, через байт прыгает, массив указан специально byte =)

  • @k160rg
    @k160rg 3 ปีที่แล้ว +2

    Расскажите пожалуйста про оверсемплинг и способы программного увеличения точности встроенного АЦП.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      урок по фильтрам есть на канале

    • @k160rg
      @k160rg 3 ปีที่แล้ว

      @@ArduNotes тема дизеринга не раскрыта еще.

  • @energy_of_nature
    @energy_of_nature 10 หลายเดือนก่อน

    Хорошее видео!
    Но подскажите почему mString и описание и реализация в одном заголовочном файле?
    Пробовал свои создавать в cpp не работают, а в заголовочном реализация работает.
    Благодарю!
    👍

  • @TheDCSamara
    @TheDCSamara 3 ปีที่แล้ว +9

    2:15 "Неуобно"... Хорошо что хотя бы О, а не Ё :)

    • @TheDCSamara
      @TheDCSamara 3 ปีที่แล้ว +4

      Вкурил: это String потерял букву. Дырявые стринги ёпсель.

  • @user-se3bw8ut8e
    @user-se3bw8ut8e 3 ปีที่แล้ว

    Здравствуйте!
    А не хотите сделать уроки по Flprog? По созданию пользовательских блоков.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      здравствуйте, нет

    • @kalobyte
      @kalobyte 3 ปีที่แล้ว

      про это есть у самого автора флпрог и там ничего сложного как раз нет

  • @MrBondarrr
    @MrBondarrr 3 ปีที่แล้ว

    Во млин и в нашей сфере пошел C++, ну как же успеть за всем)

    • @user-wm4cs1us2q
      @user-wm4cs1us2q ปีที่แล้ว

      Работа в ардуино это и есть работа с кодом С++

  • @chinarulit1126
    @chinarulit1126 3 ปีที่แล้ว +7

    Уроаи ардуино превращаются в уроки по
    C++🙂🙂🙂🙂

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +6

      ну ардуино программируется на С++, не по питону же уроки делать =)

    • @Gameplayer55055
      @Gameplayer55055 3 ปีที่แล้ว +2

      @@ArduNotes esp8266 micropython :)
      Скорее как сетап для обучения информатике, практической пользы нет

  • @eng283
    @eng283 3 ปีที่แล้ว +1

    char Str[] = "Температура = Z00.0 C";
    uint8_t Znak, Tcel, Tdrob; // 1, 28, 3
    Str[14] = "-+"[Znak]; // 0 = "-" 1 = "+"
    Str[15] = "0123456789"[Tcel/10];
    Str[16] = "0123456789"[Tcel%10];
    Str[18] = "0123456789"[Tdrob];
    Результат получается строка "Температура = +28.3 C"
    Всегда так строки выводил. Работает очень быстро, памяти надо только на саму строку.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      а также на три строки по 10 байт =)

    • @eng283
      @eng283 3 ปีที่แล้ว

      @@ArduNotes Если таких строк много, то ее можно вынести константой 10 байт. Кста 16 байт стокой можно 16тиричные числа выводить)

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      слышал про индусский код? Вот тут можно почитать lurkmore.to/%D0%98%D0%BD%D0%B4%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%B4
      По сабжу - единичная цифра переводится в символ прибавлением кода символа 0, то есть например символ цифры 5 можно получить как 5 + '0'. А не вот этот трэш что выше))))

    • @eng283
      @eng283 3 ปีที่แล้ว

      @@ArduNotes Спасибо. Как я раньше не догадался, знал же что символ заканчивается /0
      Str[15] = Tcel/10+'/0';
      Str[16] = Tcel%10+'/0';
      Str[18] = Tdrob+'/0';
      Вот так все работает)

  • @neket_
    @neket_ ปีที่แล้ว

    1 задача: решение через sprintf
    2 задача: atoi
    3 задача: sscanf

  • @absoriann
    @absoriann 3 ปีที่แล้ว +1

    2:16 очепятка

  • @joinmods556
    @joinmods556 3 ปีที่แล้ว +1

    Гайвер у меня есть для тебя интересная задача.
    Вот допустим у тебя есть дачик и ты его читаешь в виде float (а точность тебе важна) и надо через шины данных i2c, spi или через nRF передать другому устройству без потери точности, но там только передается unsigned byte или его массив. Как можно это релизовать? (да та еще извращения, но интересно увидеть задумки)

    • @alexkart9239
      @alexkart9239 3 ปีที่แล้ว +2

      Это не "интересная задача", это типичная проверка на знание фундаментальных основ программирования. Такие "задачки" нередко используют, чтобы отсеять гo%нокoдеров на собеседованиях. В 32х-разрядной системе, массив из 4х штук uchar эквивалентен одному float. Можно легко распилить float на байты, при помощи битового сдвига:
      float sens_data=2.345678;
      unsigned char trans_data[4];
      trans_data[0]=*((unsigned int *)&sens_data);
      trans_data[1]=*((unsigned int *)&sens_data)>>8;
      trans_data[2]=*((unsigned int *)&sens_data)>>16;
      trans_data[3]=*((unsigned int *)&sens_data)>>24;
      ..затем передать, и точно также потом скукожить обратно на стороне получателя.

    • @rematender4269
      @rematender4269 2 ปีที่แล้ว

      @@alexkart9239 Спасибо за разбор!

  • @Lesperi
    @Lesperi 3 ปีที่แล้ว

    А код на теплицу перепишешь? Воздаю должное это самый крутой и полезный проект. Безмерно благодарен за проект "теплица".

    • @MAD_ALEX
      @MAD_ALEX 3 ปีที่แล้ว

      Там нечего переписывать

  • @AlexanderGorshkov
    @AlexanderGorshkov 3 ปีที่แล้ว

    Время потроллить Гувера - го микропайтон)

  • @fakeesp1
    @fakeesp1 3 ปีที่แล้ว

    Го урок по твоей библиотеке для тг

  • @goiiia3774
    @goiiia3774 3 ปีที่แล้ว

    Какой объём можно разово послать в монитор порта ?? Есть одна идея, но боюсь упереться в какое нибудь ограничение.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      в целом ограничений нет, если отправная строка уже сформирована

    • @goiiia3774
      @goiiia3774 3 ปีที่แล้ว

      @@ArduNotes , мм, это очень хорошо )

  • @BaHeK1994
    @BaHeK1994 3 ปีที่แล้ว

    5:18, почему на 8-ой строке sizeof вернуло 2?

    • @Al.Sy.
      @Al.Sy. 3 ปีที่แล้ว +2

      strP - указатель на char, в строке 8 вычисляется его размер (2 байта, т.е. может адресовать до 64 килобайт).

  • @user-oh4pf7is3p
    @user-oh4pf7is3p 3 ปีที่แล้ว +1

    Доброго времени суток , немогли бы вы заделать проект "Аквариумный контролер " у меня есть аквариум, и управлять большим аквариумом, и следить постоянно за ним очень сложно а в ардуино я не очень понимаю. Спасибо
    Что должно быть в контролере:
    Таймеры
    Экран управления
    Желатель дозатор удобрения
    Авто долив воды
    Расвет- закат
    Если возможно WiFi управление
    Автоматическое включение охлаждения

    • @MrYbs-ie1jj
      @MrYbs-ie1jj ปีที่แล้ว

      Контроллер теплицы не устраивает?

  • @user-tj4ly7je7w
    @user-tj4ly7je7w 3 ปีที่แล้ว +6

    Ну что, мужики, учимся работать со стрингами

  • @Werbard
    @Werbard 2 ปีที่แล้ว +1

    2:15 "НЕУОБНО" получилось )

  • @neonbrickchannel2136
    @neonbrickchannel2136 2 ปีที่แล้ว

    Алекс Гайвер: там короче все символы в одной цепочке хранятся, и надо короче к ним обращаться как к номерам и т.п.
    Я, который пришел из web: ...что?...
    Короче, Espruino - мой вариант)))

  • @user-wr8dl1ny8t
    @user-wr8dl1ny8t 3 ปีที่แล้ว

    Коммент в момент четыре пять!

  • @CatYoutuberTV
    @CatYoutuberTV 3 ปีที่แล้ว +6

    Скоро: GyverString
    Через 2 года: GyverInt

    • @AlexanderTheMiddle
      @AlexanderTheMiddle 3 ปีที่แล้ว +4

      Gyverduino

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +3

      на самом деле уже есть gyver float, но он не даёт особого прироста в скорости. Но имеет смысл =)

    • @Isemenuk27
      @Isemenuk27 3 ปีที่แล้ว +5

      GyverBoolean...

    • @antonpetrusevich
      @antonpetrusevich 3 ปีที่แล้ว

      @@ArduNotes Неужто переплюнул gcc по эффективности програмной реализации плавучки? Для Арудино больше фикс смысл имеет.

  • @Gartenzwerg
    @Gartenzwerg 3 ปีที่แล้ว

    На 5:52 не понял, зачем "str+" при инициализации переменной. И это гарантированно, что после объявления переменная пустая?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      "str+" чтобы показать, как работает указатель и как сдвигается индекс. Переменные при создании могут быть не пустые, поэтому нужно самому инициализировать, о чём дальше рассказано

    • @Gartenzwerg
      @Gartenzwerg 3 ปีที่แล้ว

      @@ArduNotes понятно, я так и думал.

  • @user-ng2wm3ti1o
    @user-ng2wm3ti1o 3 ปีที่แล้ว

    Где можно найти полный список функций работы с char

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      в текстовом уроке по ссылке в описании, либо как показано в видео - в доках на avrlibs

  • @user-cl6hk8tt6p
    @user-cl6hk8tt6p 3 ปีที่แล้ว

    Уважаемый автор видео,как можно с вами связаться?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      под каждым видео почта указана

  • @persontashik_z
    @persontashik_z ปีที่แล้ว

    Как int преобразовать в char?

  • @ilyamedvedev8943
    @ilyamedvedev8943 ปีที่แล้ว

    У меня у одного возникла сразу идея про авторизацию по логину паролю через Ардуино🤣

  • @technotrolla1254
    @technotrolla1254 3 ปีที่แล้ว

    На esp8266 (если кодить в среде ардуино) String гарантировано приносит проблемы в половине случаев

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      да? А в каких именно? Я не сталкивался, так как стараюсь делать всю обработку строковыми алгоритмами

    • @technotrolla1254
      @technotrolla1254 3 ปีที่แล้ว

      @Заметки Ардуинщика wemos, nodemcu

    • @technotrolla1254
      @technotrolla1254 3 ปีที่แล้ว

      При чтении ответа с сервера по http

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      до 15 тысяч символов он может принять, и сам возвращает стринг. Я много с таким работал, ничего не ломалось

    • @technotrolla1254
      @technotrolla1254 3 ปีที่แล้ว

      @Заметки Ардуинщика дело не в самом стринге, а в том, что он подвешивает программу причём это как правило сразу не видно. Код нормально заводится. Все работает, но периодами плата подвисает. Вылечилось только чистым Си

  • @erlingsigurdson3064
    @erlingsigurdson3064 3 ปีที่แล้ว

    Почему на 5:19 sizeof возвращает 2? Про strlen понятно (длина строки равна 5, от 0 до 4), а про sizeof не очень.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      если массив создан во время работы программы - программа не знает его размер и возвращает размер указателя в байтах, это 2 байта в случае ардуино нано

    • @enter0prise
      @enter0prise 2 ปีที่แล้ว

      Потому что sizeof возвращает размер аргумента в байтах. Если передан массив - возвращает его размер (размер буфера), если указатель (не важно куда указывающий) - размер типа указателя.
      Собственно, это одно из практических отличий массивов (T[]) от указателей на буферы (T*).

  • @absoriann
    @absoriann 3 ปีที่แล้ว

    Чем отличается String из ардуино и string в c++?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +2

      реализацией и синтаксисом

    • @alexkart9239
      @alexkart9239 3 ปีที่แล้ว

      C++ объектно-ориентирован, т.е. всё, что вы найдёте в std:: является классами, от которых можно производить и наследовать. К примеру, я могу, в теории, создать дочерний класс от std::string и добавить то, чего там, по моему мнению, не хватает. Вот так
      class ololoString : std::string
      {
      public:
      void blowjob();
      };
      Теперь я могу создавать инстансы нового класса ololoString, которые умеют делать blowjob.

  • @lazyNavel
    @lazyNavel 3 ปีที่แล้ว

    Очень интересно но ничего не понятно😅👍 Как говорил мой препод в далёком 2010 читай документацию пиши код, а там разберемся 😂😂😂

  • @user-oq3tv1br9r
    @user-oq3tv1br9r 3 ปีที่แล้ว +1

    Нужна лёгкая библиотека ЕЕПРОМ для счётчика, который пишет в еепром и не делает ему износа....

    • @androidpasha
      @androidpasha 3 ปีที่แล้ว

      Пиши просто в следующую ячейку после максимального значения. В конце eeprom пиши в первую. Это самый щадящий способ будет. Одним циклом управишься. При первом старте только обнулить весь епром нужно (если ячейка1==2). Итого два цикла.

  • @denial3874
    @denial3874 ปีที่แล้ว

    Заметки Ардуинщика: Когда будет урок по указателям, это можно сказать самая важная тема и она не раскрыта.

  • @vovanikotin
    @vovanikotin 3 ปีที่แล้ว

    Как 8 байтный double от GPS антенки переделать в ардуиновский 4 байтный float без потери точности в 6 и 7 знаке?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      никак. Хранить в каком нибудь своём составном типе данных, например байт на целые и лонг на дробные

    • @vovanikotin
      @vovanikotin 3 ปีที่แล้ว +1

      @@ArduNotes ок, а как тогда дробную часть корректно засунуть в лонг?
      Конкретный пример, 44.00000012
      12 запишется в лонг как 12, но нули перед 12 пропадут, и их никак не получается учесть.

    • @GoodVrGames
      @GoodVrGames 3 ปีที่แล้ว

      @@vovanikotin А зачем плодить переменные + код, если можно использовать ардуиновский double?

    • @vovanikotin
      @vovanikotin 3 ปีที่แล้ว

      @@GoodVrGames avr-овские чипы не поддерживают double, double компилятором превращается во float, а все что после 6-7 знака превращается в рандом - из-за этого есть проблемы с координатами gps.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      ардуиновский double урезан до 4 бит

  • @user-lg2wd1en6h
    @user-lg2wd1en6h 3 ปีที่แล้ว +2

    Если mString либа действительно резкая как понос, то я в деле

  • @sliders116
    @sliders116 3 ปีที่แล้ว +2

    А утечка памяти?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      куда?

    • @olexangrstetsiuk3092
      @olexangrstetsiuk3092 3 ปีที่แล้ว

      @@ArduNotes , наверное вопрос о : уничтожении динамических массивов, которые загрузят всю оперативку.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +1

      уничтожаются конечно. Но при неудачном менеджменте программы можно создать жуткую дефрагментацию и п*дец

    • @olexangrstetsiuk3092
      @olexangrstetsiuk3092 3 ปีที่แล้ว

      @@ArduNotes , ой, создай урок как не надо делать, чтобы не получить звездулину в работе МК.

  • @user-fr6rq8sk3z
    @user-fr6rq8sk3z 3 ปีที่แล้ว

    Чтобы не заниматься всеми этими сложениями строк и поисками индексов символов человечество придумало замечательные функции sprinf и scanf.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      ага, только вот придуманы они для десктопа, потому что отжирает эта замечательная функция около 2.5кб Flash, а форматирование простейшей строки занимает целую вечность даже по меркам String. Не для микроконтроллеров этот индийский код используется

    • @user-fr6rq8sk3z
      @user-fr6rq8sk3z 3 ปีที่แล้ว

      @@ArduNotesЧто то является частью libc, что другое и индуским кодом это можно называть с большой натяжкой. А что касаемо скорости, то как только речь заходит о формировании строк для дальнейшего вывода (в файл на sd карту к примеру), то тут время затраченное на форматирование строки просто меркнет по сравнению со скоростью работы IO операций, а вот удобочитаемости добавляет сушественно.

  • @edgarfedosov1440
    @edgarfedosov1440 3 ปีที่แล้ว +1

    С тем объемом памяти, что в ардуинках, лучше сразу забыть о типе string.

  • @DART2WADER
    @DART2WADER 3 ปีที่แล้ว

    Не ожидал увидеть шаблоны, тогда может github.com/hanickadot/compile-time-regular-expressions на атмеге запустить.

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      тяжеловато для МК. Есть облегченная либа regexp спецом под аврки

  • @user-bh2ot5ks8f
    @user-bh2ot5ks8f 3 ปีที่แล้ว

    Хех, Алекс по итогу свои стринги сделал 🤣

  • @nemoderator2043
    @nemoderator2043 3 ปีที่แล้ว

    Хелоу

  • @user-il2eu7sy6p
    @user-il2eu7sy6p 3 ปีที่แล้ว

    У тебя ест отпуск? А где ты работаешь?

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +2

      на ютубе

  • @user-hd7hq4lf4y
    @user-hd7hq4lf4y 3 ปีที่แล้ว

    С ходу лайк. Все думал заняться разбором работы со строками, да как обычно то работа, то домашнее хозяйство ... а тут как раз Гайвер.... Полезно иногда захаживать на "тюбик"

  • @int_DrBass
    @int_DrBass 3 ปีที่แล้ว

    а как же сишные sprinf и sscanf? проще и поддерживают создание строки с форматированием, а itoa и atoi надо крайне осторожно использовать
    а вообще мне не понятно почему в крайне ограниченных ресурсах сделали плюсы а не чистый си, который более компактый, пусть и более сложный

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว +2

      никто не делал плюсы, писать можно и на с и на cpp, компилятор разберётся. По sprintf - тема для отдельного урока. Ну и к слову sprintf гораздо тяжелее и медленнее даже чем String, на МК использовать это прям самоубийство

    • @enter0prise
      @enter0prise 3 ปีที่แล้ว

      То есть размер бутлоадера - это ОК, а плюсы помешали?) Исключения отключены, rtti отключен, стандартной библиотеки нет. Все во благо минимального размера хексов. Зато от плюсов есть шаблоны, constexpr, лямбды и в конце-концов классы с нормальным RAII. Вопрос в том, почему ардуинщики этими благами цивилизации практически не пользуются?...

    • @int_DrBass
      @int_DrBass 3 ปีที่แล้ว +1

      @@enter0prise лично мне чистый си ближе чем плюсы. лябмдами и rall не пользуюсь даже на компе, так как нафиг это надо

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      потому что ардуинщики - не сеньоры C++, а полные новички в программировании?

    • @enter0prise
      @enter0prise 3 ปีที่แล้ว

      @@int_DrBass я к тому, что перейдя С-компилятор критически ничего выиграть не получится, а потерять - запросто.

  • @nananight8473
    @nananight8473 3 ปีที่แล้ว +1

    Здравствуйте! Нужен желательно быстрый ответ. Я работаю в программе ардуино. Проблема состоит в том, что бизер играет тогда, когда датчик линии находится над белой поверхностью. Как сделать так, чтоб бизер играл тогда, когда датчик линии находится над черной поверхностью? Заранее, спасибо!

  • @opi03
    @opi03 3 ปีที่แล้ว +1

    Сложно, скучно, но необходимо

  • @Moki1930
    @Moki1930 3 ปีที่แล้ว +1

    Ну и какого хрена ютуб? Где уведомление?

    • @v61kz
      @v61kz 3 ปีที่แล้ว +1

      Хаха, завтра придёт🤣🤣🤣💪

  • @arduroom8494
    @arduroom8494 3 ปีที่แล้ว

    Главное не увлекаться скоростью и размером, а то так можно до ассемблера и изучения даташита дойти. Там точно не стоит новичкам ошиваться.
    А интересная идея с ассемблером

    • @blastedfuse5541
      @blastedfuse5541 3 ปีที่แล้ว +3

      Какой кошмар, даташит, ассемблер. Главное мозг не включать, а то вдруг разберешься в чем то сам, и не будешь как обезьяна бездумно повторять сотворенное другими.

    • @alexkart9239
      @alexkart9239 3 ปีที่แล้ว

      Язык Си иногда называют "высокоуровневым ассемблером". По мере углубления в него, становится понятно, что ты совсем недалеко от машинных инструкций.

  • @pochka7195
    @pochka7195 3 ปีที่แล้ว

    У нас новое слово в видео появилось: неуобно

  • @user-ui4cu4ji1h
    @user-ui4cu4ji1h 3 ปีที่แล้ว

    Скобочек нет, массивов нет, меня нет 🤯 мы в матрице

  • @iAlexTube
    @iAlexTube 3 ปีที่แล้ว +1

    2:13 неуйобно

  • @prostojproekt
    @prostojproekt 3 ปีที่แล้ว

    2:15 явно устал (неуобно)

  • @dj2080s
    @dj2080s 3 ปีที่แล้ว

    2:12 не неуобно а неудобно