Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
214 / 10 / 2
Регистрация: 23.05.2016
Сообщений: 380
1

Объявление длинных массивов в дополнительных .ino

29.04.2021, 05:47. Показов 2180. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Нужна небольшая консультация по ардуино.
В программе используется несколько одномерных массивов.
Т.к. эти массивы длинные (более 1000 значений в каждом) было решено выделить их в отдельные
файлы .ino чтобы не загромождать основной код.
В каждом таком файле присутствует строка примерно такого вида:
C
1
float Syp_5[] = {-5.188, 0.56, 20.196, ... };
При компиляции никаких ошибок не возникает.
Но как только я в loop включаю использование любого из этих массивов, например в виде:
C
1
 rm32 =  Syp_5[567];
я получаю ошибку:
'Syp_5' was not declared in this scope

Предполагаю, что объявление переменных, включая массивы, не могут быть включены в дополнительные файлы .ino

Есть ли способ решить эту проблему или все-таки придется включать все массивы в тело основного кода?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2021, 05:47
Ответы с готовыми решениями:

дополнительных массивов и файлов не использовать((
помогите решить задачу на СИ: вот условие исходное "В ИСХОДНОМ БИНАРНОМ ФАЙЛЕ (СОЗДАТЬ И ВВЕСТИ)...

Перестановка. Не используя дополнительных массивов, переставить начало и конец
Дан массив целых чисел x..x, рассматриваемый как соединение двух его отрезков: начала x..x длины m...

Не используя дополнительных массивов переставить начало и конец массива
Помогите решыть задачу: Дан масив целых чисел x....x рассматриваемый как соединение двух его...

Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать
Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать. Функции...

7
363 / 346 / 74
Регистрация: 18.03.2015
Сообщений: 1,292
29.04.2021, 08:09 2
C++
1
2
3
void loop() {
 float rm32 =  Syp_5[567];
}
Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
float Syp_5[] = {-5.188, 0.56, 20.196, };
 
float rm32;
void setup() {
  }
 
void loop() {
  rm32 =  Syp_5[567];
}
0
7 / 3 / 4
Регистрация: 01.08.2016
Сообщений: 7
29.04.2021, 10:40 3
Лучший ответ Сообщение было отмечено ARTMED как решение

Решение

Выделить их в отдельный/отдельные *.h файл/файлы и подключить этот/эти *.h в основном ino.
1
214 / 10 / 2
Регистрация: 23.05.2016
Сообщений: 380
29.04.2021, 14:20  [ТС] 4
Сергей 190, само собой переменная rm32 заранее объявлена как float. И проблема не с переменной rm32, а с массивом, который основной .ino то ли не видит, то ли не желает его видеть как источник объявленных переменных. Кстати проблема даже не с массивом, а с переменной. То есть объявить переменную в дополнительном ino и попытаться использовать её в loop, получим ту же ошибку.

Feofanus, то есть дополнительный файл *.ino переименовываем в *.h и инклюдим его в основном .ino?

попробовал с описанием переменной в файле .h, и... получилось.
Счас массивы перелопачу.
0
7 / 3 / 4
Регистрация: 01.08.2016
Сообщений: 7
29.04.2021, 14:28 5
Лучший ответ Сообщение было отмечено ARTMED как решение

Решение

Цитата Сообщение от ARTMED Посмотреть сообщение
то есть дополнительный файл *.ino переименовываем в *.h и инклюдим его в основном .ino?
Если в дополнительный.ino не напихано ничего лишнего, то да. К примеру, #include "old_ino.h"
1
214 / 10 / 2
Регистрация: 23.05.2016
Сообщений: 380
29.04.2021, 14:35  [ТС] 6
Цитата Сообщение от Feofanus Посмотреть сообщение
Если в дополнительный.ino не напихано ничего лишнего, то да. К примеру, #include "old_ino.h"
Заработало!
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
29.04.2021, 20:04 7
Цитата Сообщение от ARTMED Посмотреть сообщение
Заработало!
это еще те грабли
и когда-нибудь это выстрелит
Изучайте С++, хотя бы основы
директива #include не подключает никакие библиотеки, как бы не утверждали ардуинщики, она просто переносит содержимое файла из одного в другой
в данном случае решение в использовании ключевого слова extern
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
04.05.2021, 10:12 8
Цитата Сообщение от ARTMED Посмотреть сообщение
было решено выделить их в отдельные файлы .ino чтобы не загромождать основной код.
Не надо заниматься заведением дополнительных файлов .ino. Пусть файл .ino будет только один.

Заведите дополнительные .h/.cpp файлы и объявите/определите эти массивы по старинке: в .cpp файле определение, а в .h файле - объявление.

.h файл включайте через #include везде, где вам нужен доступ к массиву.
0
04.05.2021, 10:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2021, 10:12
Помогаю со студенческими работами здесь

Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать
Упорядочить массив размера N по возрастанию. Дополнительных массивов не использовать.

Удалить числа из файла, без использования дополнительных массивов и файлов
Всем привет, насколько я понимаю, само удаление из файла и не удаление вовсе, открываем файл и...

Отсортировать числа в бинарном файле, не использу дополнительных файлов и массивов
Здравствуйте, дали такое задание, а что оно значит и как его делать не знаю. Отсортировать числа в...

Как во время работы программы создать несколько дополнительных массивов
Добрый день. Вопрос в следующем: подскажите, как во время работы программы создать несколько доп....

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

Объявление массивов
Здравствуйте хотел спросить и разобраться я работаю щас в компиляторе dev-c++ и при решении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru