Gut, dann versuche ich etwas weiter auszuholen, vlt. kann man mir dann besser helfen, bzw. verraten, wie man mein Problem umgeht.
Ich schreibe momentan an einem Framework, womit ich den Arduino vom Pc aus steuern kann. Ich sage dem Board also über den Serial-Anschluss, an welchen Pin wieviel Strom gelegt werden soll. Auslesen, an welchem Pin wieviel Strom liegt ist natürlich auch möglich. Das sieht dann so aus:
#include "Board.h"
#include <iostream>
int main()
{
Ard::Board mega("Com2");
Ard::OutputPin o(13, Ard::DIGITAL, mega.GetSerial());
mega.AddPin(o);
Ard::InputPin i(0, Ard::ANALOG, mega.GetSerial());
mega.AddPin(i);
while(true)
{
auto k = i.ReadVoltage();
o.SetVoltage(k);
}
}
Nun gab ich mich natürlich nicht damit zufrieden, einfach nur Spannungen an Pins zu legen. Ich will auch Servos/Stepper etc. ansteuern können. Da ich es nun nicht unbedingt als nötig ansehe, die Servo-Lib neu zu implementieren, sieht die Ansteuerung von Servos intern so aus:
Servo s; // global
void loop()
{
if(operation == servo)
{
s.attach(pin);
s.write(map(value, 0, 255, 0, 180));
}
}
Diese Methode funktioniert mit nur einem angesteuerten Servo sehr gut. Sobald aber mehrere Servos angeschlossen sind, kann man das vergessen (was eigentlich auch abzusehen war). Dieses Problem wollte ich nun umgehen, indem ich ne map habe, und teste, ob der Servo bereits "existiert", wenn nicht, dann wird ein neuer hinzugefügt. Wenn ja, dann wird der bestehende Servo genommen, und auf die neue Position gesetzt.
Jetzt habe ich aber keine map zur Verfügung. Was soll ich machen? Klar, ich könne das ganze mit nem Array in Übergrösse umgehen, elegant ist aber was anderes.
Könnt ihr mir da aushelfen?

Valentin