Автоматическое создание переменных. Помогите советом.
- Войдите на сайт для отправки комментариев
Сб, 05/03/2016 - 23:45
Всем привет.
Таквой вот вопрос. Как можно реализовать следующую штуку:
При старте контроллер создает столько однотипных, глобальных переменных сколько прописано в ячейке EEPROM.
Скажем в ячейе записано 10
При старте контроллер получает 10 и создает 10 глобальных переменных например:
a1, a2, a3 ... a10
Как такое реализовать?
Если переменные однотипные, то копайте в сторону массивов http://arduino.ru/Reference/Array
byte* a=new byte(EEPROM.read(10));
a[0]=111;
a[1]=22;
Спасибо. Работает!
Все проще, чем я думал)
Еще вопрос, а как собрать имя которое будет выводиться в Serial или станет параметром массива или строки?
Напримет: Чайник 1, Чайник 2 .... (ну в сериал оно понятно и просто, а вот если сделать ее параметром?
Все, сам спросил, сам разобрался.
Спасибо за помощь)))
Почему, когда тип массива задаю char и пытаюсь ввести a[0]="что то"; то выдает ошибку invalid conversion from 'const char*' to 'char'.
Как быть?
Почему, когда тип массива задаю char и пытаюсь ввести a[0]="что то"; то выдает ошибку invalid conversion from 'const char*' to 'char'.
Как быть?
потому, что char это один символ, в строка - массив символов
проще всего использовать тип String. Только учтите, что оперативной памяти у ардуины всего ничего (у UNO ее 2кб) и строками и тем более массивами строк ее моментально можно всю забить. При этом не всегда будет ругаться компилятор, часто бывает так, что вроде все работает, но глючит мама не горюй
потому, что char это один символ, в строка - массив символов
проще всего использовать тип String. Только учтите, что оперативной памяти у ардуины всего ничего (у UNO ее 2кб) и строками и тем более массивами строк ее моментально можно всю забить. При этом не всегда будет ругаться компилятор, часто бывает так, что вроде все работает, но глючит мама не горюй
Да, сталкивался с этой проблемой. Забавно получается. Вроде все как работает, а ка кто не очень.
Кстати нашел решение: char** abc=new char*[10];
P.S. Я правильно понимаю, что вообще выражение char** abc=new char*[10]; это объявления массива "abc" длиной 10, а вот abc[1], abc[2], abc[3].. может быть без ограничения? (на сколько памяти хватит?
Ну почитайте уже чего нибудь... Ну нельзя же так... Выход за пределы массива скорее всего приведет к краху программы, то есть непредсказуемым результатам. Если объявил массив из 10 символов, то и последний символ в массиве долже иметь индекс не больше 9 !!! Это и является ограничением массива !
Да, сталкивался с этой проблемой. Забавно получается. Вроде все как работает, а ка кто не очень.
Кстати нашел решение: char** abc=new char*[10];
P.S. Я правильно понимаю, что вообще выражение char** abc=new char*[10]; это объявления массива "abc" длиной 10, а вот abc[1], abc[2], abc[3].. может быть без ограничения? (на сколько памяти хватит?
Вот, полистайте 5 раздел. А потом и остальное :) http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf
Выход за пределы массива скорее всего приведет к краху программы, то есть непредсказуемым результатам. Если объявил массив из 10 символов, то и последний символ в массиве долже иметь индекс не больше 9 !!! Это и является ограничением массива !
Да это я понимаю, тут вопрос про то, что в таком случае я могу задать только abc[0] ... abc[9] и каждый неограниченной длины,
или я могу задать сколь угодно abc[0] ... abc[100] но каждый из них будет ограничен 10?
Вот, полистайте 5 раздел. А потом и остальное :) http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf
Спасибо. Выглядит полноценно и интересно)