hallo alle zusammen,
habe eine frage zur programmierung. in meinem projekt steuere ich 2 servos mit einer infrarotfernbedienung. dazu frage ich mit switch() mehrere tasten ab. jedesmal wird fast der gleiche code ausgeführt, er unterscheidet sich nur in den zahlen und vorzeichen. hier ein ausschnitt:
if (irrecv.decode(&results)) {
switch (results.value) {
case 0x20DF40BF:
digitalWrite(led_pin1, HIGH);
servoval1 = servoval1+grad;
myservo1.write(servoval1);
digitalWrite(led_pin1, LOW);
lastcase = 1;
break;
case 0x20DFC03F:
digitalWrite(led_pin1, HIGH);
servoval1 = servoval1-grad;
myservo1.write(servoval1);
digitalWrite(led_pin1, LOW);
lastcase = 2;
break;
case 0x20DF00FF:
digitalWrite(led_pin2, HIGH);
servoval2 = servoval2+grad;
myservo2.write(servoval2);
digitalWrite(led_pin2, LOW);
lastcase = 3;
break;
case 0x20DF807F:
digitalWrite(led_pin2, HIGH);
servoval2 = servoval2-grad;
myservo2.write(servoval2);
digitalWrite(led_pin2, LOW);
lastcase = 4;
break;
}
}
ich würde gerne
digitalWrite(led_pin1, HIGH);
servoval1 = servoval1+grad;
myservo1.write(servoval1);
digitalWrite(led_pin1, LOW);
in eine eigene funktion auslagern. es ändert sich ja immer nur servoval1 zu z.b. servoval2 oder das + bei den werten in ein -.
habe so begonnen (und mit dem digitalWrite funktionierts auch schon):
void adjust(char nummer) {
digitalWrite("led_pin"[nummer], HIGH);
digitalWrite("led_pin"[nummer], LOW);
}
leider klappt das nicht mit diesem, teil...
servoval1 = servoval1+grad;
myservo1.write(servoval1);
wenn ich "myservo"[nummer].write("servoval"[nummer]); schreibe, kommt folgender fehler:
servo_ir.cpp: In function 'void adjust(char)':
servo_ir:27: error: request for member 'write' in '"myservo"[((int)nummer)]', which is of non-class type 'const char'.
meine funktion möchte ich so aufrufen: adjust(1,+); ... servo 1 soll seine position vergrößern.
was mache ich falsch, bzw. ist das überhaupt möglich? =)
vielen dank schonmal!!
stefan