Optron
11.Апрель.2025 22:44:04
1
Здравствуйте!
В массив m
типа char
некоторым образом добавляются символы.
Завершается массив добавлением символа /0
Допускается ли выводить в порт так: Serial.println(m);?
char m[20];
void setup()
{
Serial.begin(9600);
// Здесь заполнение массива
Serial.println(m);
}
void loop()
{
}
Попробовать пока не на чем.
Спасибо!
Optron
11.Апрель.2025 22:59:07
3
В #1
Скетч использует 1488 байт (4%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 208 байт (10%) динамической памяти, оставляя 1840 байт для локальных переменных. Максимум: 2048 байт.
А если так:
String s="";
void setup()
{
Serial.begin(9600);
s="12345678901234567890";
Serial.println(s);
}
void loop()
{
}
то вот так:
Скетч использует 2970 байт (9%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 224 байт (10%) динамической памяти, оставляя 1824 байт для локальных переменных. Максимум: 2048 байт.
MMM
11.Апрель.2025 23:04:08
4
Странный вопрос…
Я бы понял, если бы стпросили наоборот - допускается ли печатать String напрямую в порт…?
То что можно печатать char* - вроде бы очевидно, это ж базовый тип, не то что String
вы зарегились почти год назад… когда ж вы ардуину свою заведете?
3 лайка
Optron
11.Апрель.2025 23:27:57
5
Внедрил еще в августе прошлого года. Сейчас она используется в моем проекте. А запасов пока нет.
Просто выясняю некоторые нюансы по C++.
MMM
11.Апрель.2025 23:30:08
6
Optron:
А запасов пока нет.
за год увлечения ардуиной так и не выделили 150р на плату?
а как этот вопрос связан с С++?
То что какая-то функция умеет выводить на печать данные char* или String - не является каким-то правилом или стандартом С++.
Как напишете функцию - так и будет.
Optron
11.Апрель.2025 23:37:01
7
Ну почему же? Сейчас ожидаю четыре платы.
И ещё вот это.
kolyn
12.Апрель.2025 03:24:26
8
Для таких простых примеров есть онлайн-симуляторы. New Arduino Uno Project - Wokwi Simulator
1 лайк
А как Вы разместили на форуме это сообщение, если у Вас нет компьютера?
Optron
12.Апрель.2025 08:03:24
10
Компьютеров у меня два. У меня нет сводбодного МК. Если на нем пробовать #1 , то надо ломать какой-то действующий проект.
Нет. Завершающий ноль записан неправильно. Ни хрена так работать не будет.
Optron:
Компьютеров у меня два.
Так запустите на одном из них симулятор и пробуйте всё, что Вам нужно!
Optron
12.Апрель.2025 09:12:12
13
Вот так ОДИН РАЗ симулятор отработал так, как и ожидалось. Затем отказался работать.
int i;
char m[20];
void setup()
{
Serial.begin(9600);
// Здесь заполнение массива
for (i = 0; i = 10; i++) m[i] = 'a';
m[i] = '\0';
Serial.println(m);
}
void loop()
{
}
MMM
12.Апрель.2025 09:19:43
14
Optron:
for (i = 0; i = 10; i++)
вот это что за условие в цикле? Надеюсь опечатка?
Optron
12.Апрель.2025 09:23:33
15
Там же
for (i = 0; i = 10; i++) m[i] = 'a';
Массив заполняется символом a
MMM
12.Апрель.2025 09:26:08
16
понятно… не опечатка.
Год обсуждений, вопросы про классы и указатели… а цикл FOR до сих пор не выучили.
Добавка
Давайте так - вы сами разберетесь, где в этой строке бред и подробно распишете, почему она не работает. Исправление на правильный код без обьяснений не принимается, искать в сети все умеют.
3 лайка
MMM
12.Апрель.2025 09:32:02
17
это потому что симулятор. Железная ардуина зависла бы сразу.
kolyn
12.Апрель.2025 09:34:40
18
Не врите. Ни разу не получите вы вашего ааааа…
Optron
12.Апрель.2025 10:18:46
19
Да. Там опечатка. Там надо i<=10
.
@MMM Хотелось, чтобы Вы отправили свой e-mail на georg-sk@mail.ru . Так как я не имею права отправлять Вам личные сообщения.
MMM
12.Апрель.2025 10:20:37
20
хотелось бы получить развернутое обьяснение, почему это ошибка и к чему она приводит.
Ну, для закрепления.
с целью?