Использовать динамическое имя переменной в цикле for

Всем привет, прошу помощи, есть в коде много констант, мне их нужно поочереди перебрать, с помощью цикла for. То что ниже написал, так он не хочет работать, кто может подсказать вариант решения проблемы

#include “AA_MCP2515.h”
const CANBitrate::Config CAN_BITRATE = CANBitrate::Config_8MHz_500kbps;
const uint8_t CAN_PIN_CS = 10;
const int8_t CAN_PIN_INT = 2;
CANConfig config(CAN_BITRATE, CAN_PIN_CS, CAN_PIN_INT);
CANController CAN(config);
uint8_t data1 = { 0x42, 0xF0, 0xE4, 0x4E, 0xE5, 0x04, 0x04, 0x00 };
uint8_t data2 = { 0x42, 0xF0, 0xE4, 0x61, 0xE5, 0x16, 0x04, 0x00 };
uint8_t data3 = { 0x42, 0xE9, 0xE4, 0x73, 0xE5, 0x29, 0x06, 0x00 };
uint8_t data4 = { 0x42, 0xFE, 0xE4, 0x86, 0xE5, 0x3B, 0x06, 0x00 };
uint8_t data5 = { 0x43, 0x0D, 0xE4, 0x98, 0xE5, 0x4E, 0x04, 0x00 };
uint8_t data6 = { 0x43, 0x0D, 0xE4, 0xAA, 0xE5, 0x60, 0x04, 0x00 };
uint8_t data7 = { 0x43, 0x14, 0xE4, 0xBC, 0xE5, 0x72, 0x06, 0x00 };
uint8_t data8 = { 0x43, 0x14, 0xE4, 0xCF, 0xE5, 0x84, 0x06, 0x00 };
uint8_t data9 = { 0x43, 0x1B, 0xE4, 0xE1, 0xE5, 0x97, 0x05, 0x00 };
uint8_t data10 = { 0x43, 0x2A, 0xE4, 0xF4, 0xE5, 0xAA, 0x04, 0x00 };
int m= 2000;
void setup() {
Serial.begin(115200);
while(CAN.begin(CANController::Mode::Normal) != CANController::OK) ;
}
void loop() {
int n;
for(int i=1;i<9;i++) {
n=n+1;
CANFrame frame1(0x215,(data(n)), 8);
CAN.write(frame1);
delay(m);}
}

Многомерный массив спасёт Вас ?
Вставьте код по правилам !!!

Хорошо, благодарю попробую

const CANBitrate::Config CAN_BITRATE = CANBitrate::Config_8MHz_500kbps;
const uint8_t CAN_PIN_CS = 10;
const int8_t CAN_PIN_INT = 2;
CANConfig config(CAN_BITRATE, CAN_PIN_CS, CAN_PIN_INT);
CANController CAN(config);
uint8_t data1[] = { 0x42, 0xF0, 0xE4, 0x4E, 0xE5, 0x04, 0x04, 0x00 };
uint8_t data2[] = { 0x42, 0xF0, 0xE4, 0x61, 0xE5, 0x16, 0x04, 0x00 };
uint8_t data3[] = { 0x42, 0xE9, 0xE4, 0x73, 0xE5, 0x29, 0x06, 0x00 };
uint8_t data4[] = { 0x42, 0xFE, 0xE4, 0x86, 0xE5, 0x3B, 0x06, 0x00 };
uint8_t data5[] = { 0x43, 0x0D, 0xE4, 0x98, 0xE5, 0x4E, 0x04, 0x00 };
uint8_t data6[] = { 0x43, 0x0D, 0xE4, 0xAA, 0xE5, 0x60, 0x04, 0x00 };
uint8_t data7[] = { 0x43, 0x14, 0xE4, 0xBC, 0xE5, 0x72, 0x06, 0x00 };
uint8_t data8[] = { 0x43, 0x14, 0xE4, 0xCF, 0xE5, 0x84, 0x06, 0x00 };
uint8_t data9[] = { 0x43, 0x1B, 0xE4, 0xE1, 0xE5, 0x97, 0x05, 0x00 };
uint8_t data10[] = { 0x43, 0x2A, 0xE4, 0xF4, 0xE5, 0xAA, 0x04, 0x00 };
int m= 2000;
void setup() {
Serial.begin(115200);
while(CAN.begin(CANController::Mode::Normal) != CANController::OK) ;
}
void loop() {
int n;
for(int i=1;i<9;i++) {
n=n+1;
CANFrame frame1(0x215,(data(n)), 8);
CAN.write(frame1);
delay(m);}
}
[/quote] ```

Вопросительный знак лишний ))

Лживый С++ позволяет взять адрес const и менять ее потом по собственному усмотрению. А вот с constexpr такое не прокатит, еслишто.

1 лайк

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

Это вы Командиру благодарность отправьте нажав на его сообщении “решено”.

1 лайк

Это если const есть, а если, как у ТС, его нет, то как взять ея адрес?

Нет такого

На переменные состряпать массив указателей и обращаться к ним по индексу.

И это поможет менять имя переменной?))

На кой менять имя? Не МК для человека, а человек для МК)))
Ему ж надо “перебирать” переменные. Что бы это не значило))