Bu basit bir ön işlemci makrosu ile elde edilebilir:
#define readEE(VAR) VAR = readEEPROM(AT24C32_ADDRESS, 1, VAR ## Pos)
Daha sonra kullanabilirsiniz:
readEE(foo);
ve genişletilecek:
foo = readEEPROM(AT24C32_ADDRESS, 1, fooPos);
Makrolardaki ##
operatörü, her iki tarafı da genişletir (VAR ve Pos) ve ardından sonuçları birlikte birleştirir. VAR'ın kendisi bir makro olduğu için (makroyu çağırdığınızda geçtiğiniz her ne olursa olsun) o değerle değiştirilir, ancak Pos, makro olmadığından sadece Pos olarak kalır. Yani, Pos ismiyle birleştirilmiş değişken isminiz ile sonuçlanırsınız.
Bir dizide değişken isimleri olan bir döngüde kullanamayacağınızı unutmayın - sadece değişken isimleri kaynak kodunda değil, derlenmiş kodda yer aldığından, koddan sonra bu değişken adlarıyla hiçbir şey yapamazsınız. derlenmiş. Bu nedenle işi yapmak için önişlemci kullanmanız gerekir.
Evet, bu, tüm 120 değişken için 120 satırlık kod yazmanız gerektiği anlamına gelir, ancak readEE (varname);
ile kısaltılmıştır.
Ancak daha iyi bir çözüm, ya Mikael'in struct yöntemini kullanmak, ya da sadece bir dizi kullanmak ve isimler kavramı hakkında farklı düşünmek:
uint8_t data[120];
for (int i = 0; i < 120; i++) {
data[i] = readEEPROM(AT24C32_ADDRESS, 1, i);
);
Yani şimdi tüm değişken değerleriniz data []
dizgesindedir ve programınızda hangi değerin hangisinin olduğunu bilmek zorundasınız - ve bunu ön işlemci olarak her pozisyon için isimleri tanımlayarak yapabilirsiniz. makrolar:
#define FAN_SPEED 12
#define N1_TOGGLE 95
#define LEDS_TOGGLE 7
Sonra bu makroları sayıların yerine kullanın:
Serial.println(data[FAN_SPEED]);
Alternatif olarak, değişken isimleri "maskelemek" için makroları kullanabilirsiniz:
#define fanSpeed data[12]
#define n1Toggle data[95]
#define ledsToggle data[7]
Yine de fark edebileceğiniz bir şey var: Burada hiçbir şey kodunuzu kısaltmaz, sadece bir şeyleri biraz hareket ettirir. Yüzleşelim - 120 yerde saklanan 120 değişken var. Ne yaparsanız yapın, yine de, bu değişkenlere ve konumlarına 120 formluk bir form vermeniz gerekecektir. Gerçekten yapabileceğiniz tek şey, en okunabilirliği sağlayan yöntemi seçmektir, böylece kodunuza bakacak başka biri, neler olup bittiğini anlayabilir. Ne yaparsanız yapın, tanımlamak veya kurmak için uzun bir değişkenler listesi veya değişken isimleriniz vardır, bu da çok fazla yazım anlamına gelir.