Программно найти имя эскиза Arduino?

Я хотел бы определить имя эскиза Arduino, работающего на моем Arduino Leonardo. Это так, когда я подготавливаю Arduino, я могу изменить имя файла, и скетч автоматически изменит номер в сценарии.

Это возможно?

Чтобы дать представление о том, почему мы это делаем, мы должны предоставить 50 Arduinos, и вместо того, чтобы вручную редактировать кучу скриптов, я бы предпочел просто изменить имя файла.

Я понятия не имею, как сделать то, что я хочу сделать, но в качестве демонстрации добросовестности для зрителей вот код, в котором я устанавливаю EEPROM на Arduino:

#include <EEPROM.h>
#include "EEPROMAnything.h"

// begin EDIT ME

char CONFIG_NUMBER[]="##"; // Config Number goes here

// end EDIT ME

char IPADDRESS[]="XX.XX.XX.XXX";
char APN[]="myapn";

const int buflen = 32;

struct config_t {
  char model[buflen];
  char serial_num[buflen];
  char ipaddress[buflen];
  char apn[buflen];
}configuration;

int ee_addr=0;


boolean registrationDone = false;

void setup(){
    Serial.begin(115200);
    Serial.println(F("Starting Up"));

}

void loop()
{
  config_t configuration;
  strcpy(configuration.model, MODEL);
  strcpy(configuration.serial_num, SERIAL_NUM);
  strcpy(configuration.ipaddress, IPADDRESS);
  strcpy(configuration.apn, APN);
   if (!registrationDone){
    EEPROM_writeAnything(ee_addr,configuration);
  registrationDone = true;
  }
  EEPROM_readAnything(ee_addr, configuration);
  Serial.println(F("Settings"));
  Serial.println(String(configuration.model));
  Serial.println(String(configuration.serial_num));
  Serial.println(String(configuration.ipaddress));
  Serial.println(String(configuration.apn));
  delay(5000);
}

Заранее спасибо за любые идеи! Сара


person saranicole    schedule 03.01.2013    source источник
comment
Итак, что вы пытаетесь сделать, это иметь 50 Arduino, на которых работает один и тот же скрипт, но с загруженным в них некоторым идентификационным номером, чтобы отличить их друг от друга? Вам нужно сделать это, изменив имя файла (достаточно ли другого решения, не связанного с изменением сценария)?   -  person Matthew Murdoch    schedule 04.01.2013
comment
Да, мне нравится решение skinnyTOD, поскольку оно делает это. Спасибо!   -  person saranicole    schedule 05.01.2013


Ответы (1)


Я не тестировал этот код, но, похоже, делать то, что вы хотите сделать.

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

person spring    schedule 03.01.2013
comment
Потрясающий! В настоящее время я подготавливаю Arduinos, так что это звучит как ответ для меня. Спасибо большое! - person saranicole; 05.01.2013