Probleme mit dem Tone-Befehl

Ich versuche momentan ein kleines "Klavier" zu bauen, das Gehäuse ist fertig, mein Problem ist aber die Programmierung des Tone-Befehls, obwohl ich 2 mal den selben Befehl eingebe und beides gleich gesteckt ist, gibt es 2 verschiedene Ergebnisse.

Das ist bloß ein verkürzter Code, hat aber das selbe Problem, wie der Gesamtcode.

int c = 6;
int cis = 7;
int cd = 2;
int cisd = 1;
int i = 0;
int h = 0;

void setup()
{
  pinMode(c,OUTPUT);
  pinMode(cis,OUTPUT);
}

void loop()
{
  i = analogRead(cd);
  h = analogRead(cisd);
  
  if(i > 0)
  {
  tone (c, 500, 10);
  
  }
  if(h > 0)
 {
   tone (cis, 600, 10);
    
}
}

Der Hohe Ton (das fiktive cis), gibt nachdem ich einmal den Drucksensor(cisd) gedrückt habe dauerhaft den Ton mit 600 Hz aus. Der Tiefe Ton (das fiktive c), funktioniert so wie es soll, wenn ich es drücke gibt es den Ton aus, den es soll, und es hört auf wenn ich es loslasse. Wenn nun aber das cis bereits läuft kann, das c nichtmehr den Ton ausgeben.
Meine Frage an euch wie kann ich das Problem lösen, dass der Ton von alleine ausgeht. Bisher geht es bloß, wenn ich den Lautsprecher aus dem "Netz" nehme. Die Einzelteile habe ich schon mehrmals durchgewechselt, aber es ist immer das cis.
Meine zweite Frage ist, kann der Arduino Arduino Duemilanove w/ ATmega328 mehr als einen Lautsprecher gleichzeitig einen Ton ausgeben lassen?

Vielen Dank im Vorraus für eure Hilfe.

xdschokoxd

benutzt du die analogen eingänge oder digitalen?
UNO/MEGA...???

Bei den digitalen sollte man I/O 0 und 1 vermeiden da sie als serielle schnittstelle genutzt werden.
Bei analog werden diese mit A0 usw. betitelt.

wozu analogread obwohl du doch nur nen wahr oder falsch wert brauchst?

int c = 6;
int cis = 7;
int d = 8;
int dis = 9;
int e = 10;
int f = 11;
int cdruck = A0; 
int cisdruck = A1;
int ddruck = A2;
int disdruck = A3;
int edruck = A4;
int fdruck = A5;
int cv = 0;
int cisv = 0;
int dv = 0;
int disv = 0;
int ev = 0;
int fv = 0;
int idruck = 0;
int daue = 10;
int i = 1;

void setup() 
{
  pinMode(c, OUTPUT);
  pinMode(cis, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(dis, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
}

void loop() 
{
  cv = analogRead(c);
  dv = analogRead(d);
  cisv = analogRead(cis); 
  disv = analogRead(dis);
  ev = analogRead(e);
  fv = analogRead(f);
 
 
 if (i == 1)
 {
  
  if (cv > idruck)
  {
    tone(c,130.813,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,138.591,daue);
  }
    if (dv > idruck)
  {
    tone(d,146.832,daue);
  }
    if (disv > idruck)
  {
    tone(dis,155.563,daue);
  }
    if (ev > idruck)
  {
    tone(e,164.814,daue);
  }
    if (fv > idruck)
  {
    tone(f,174.614,daue);
  }
  
}
 if (i <= 0)
 {
  i = 0;
  if (cv > idruck)
  {
    tone(c,65.4064,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,69.2957,daue);
  }
    if (dv > idruck)
  {
    tone(d,73.4162,daue);
  }
    if (disv > idruck)
  {
    tone(dis,77.7817,daue);
  }
    if (ev > idruck)
  {
    tone(e,82.4069,daue);
  }
    if (fv > idruck)
  {
    tone(f,87.3071,daue);
  }
  
}
 if (i == 2)
 {
  
  if (cv > idruck)
  {
    tone(c,261.626,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,277.183,daue);
  }
    if (dv > idruck)
  {
    tone(d,293.665,daue);
  }
    if (disv > idruck)
  {
    tone(dis,311.127,daue);
  }
    if (ev > idruck)
  {
    tone(e,329.628,daue);
  }
    if (fv > idruck)
  {
    tone(f,349.228,daue);
  }
  
}
 if (i == 3)
 {
  
  if (cv > idruck)
  {
    tone(c,523.251,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,554.365,daue);
  }
    if (dv > idruck)
  {
    tone(d,587.330,daue);
  }
    if (disv > idruck)
  {
    tone(dis,622.254,daue);
  }
    if (ev > idruck)
  {
    tone(e,659.255,daue);
  }
    if (fv > idruck)
  {
    tone(f,698.456,daue);
  }
  
}
 if (i == 4)
 {
  
  if (cv > idruck)
  {
    tone(c,1046.50,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,1108.73,daue);
  }
    if (dv > idruck)
  {
    tone(d,1174.66,daue);
  }
    if (disv > idruck)
  {
    tone(dis,1244.51,daue);
  }
    if (ev > idruck)
  {
    tone(e,1318.51,daue);
  }
    if (fv > idruck)
  {
    tone(f,1396.91,daue);
  }
  
}
 if (i == 5)
 {
  
  if (cv > idruck)
  {
    tone(c,2093.00,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,2217.46,daue);
  }
    if (dv > idruck)
  {
    tone(d,2349.32,daue);
  }
    if (disv > idruck)
  {
    tone(dis,2489.02,daue);
  }
    if (ev > idruck)
  {
    tone(e,2637.02,daue);
  }
    if (fv > idruck)
  {
    tone(f,2793.83,daue);
  }
  
}
 if (i >= 6)
 
 {
 i = 6; 
  if (cv > idruck)
  {
    tone(c,32.7032,daue);
  }
    if (cisv > idruck)
  {
    tone(cis,138.591,daue);
  }
    if (dv > idruck)
  {
    tone(d,146.832,daue);
  }
    if (disv > idruck)
  {
    tone(dis,155.563,daue);
  }
    if (ev > idruck)
  {
    tone(e,164.814,daue);
  }
    if (fv > idruck)
  {
    tone(f,174.614,daue);
  }
  
}
}

Hier ist der bisherige vollständige Code. Ein Taster fehlt noch für die Umstellung der Oktave, wofür ich die Variable i nutze. Beachtet bitte ein paar Unregelmäßigkeiten nicht, da ich die während des Ausprobierens zur Lösung meines Problems verschiedenes ausprobierte. Die Analogen Pins nutze ich, da ich die genauen Werte später noch einmal brauche, aber momentan keine Relevanz haben.
Das Problem ist immernoch das selbe, vielen Dank für den Tipp mit A0, A1 etc., hat leider nicht geholfen.
Danke für eure weiteren antworten,

xdschokoxd

Hat niemand eine Idee wie man mein Problem lösen kann?

vielleicht hilft dir ein delay mit der Dauer der Tonausgabe und anschliessend dem Aufruf von notone(), analog zu dem Beispiel