For-Loop Leuchtdioden leuchten gedimmt

Hallo!

Ich möchte über eine For - Loop eine Leuchtdioden Reihe schalten, das Programm funktioniert und schaltet auch die einzelnen Dioden nur, das Problem ist das diese nur gedimmt sind und nicht vollkommen erleuchtet sind.

Hier der Code:

float x = 16; //Voreinstellung des Gerätes z.b 16
int y = 0; // Runter Regelung auf 0, während LEDs geschalten werden
int z = 39; // Digitaleingänge 20 Led [Daher 16/20] = Pro LED 0,8

void setup() {
  Serial.begin(9600);
  pinMode(z,OUTPUT);

}

void loop() {

  for(x;(x>=y&&z<61);x=x-0.8){
    z++;
    digitalWrite(z,OUTPUT);
    Serial.print(z);
    Serial.print("          ");
    Serial.println(x);

  }
}

LG

digitalWrite(z,OUTPUT);

digitalWrite() erwartet nicht OUTPUT, sondern HIGH oder LOW

Außerdem riecht es danach, als wolltest du deinen ATMega gerne überlasten.
Bitte tue das nicht.

Weil Du nur 1 Pin als Ausgang definierst:

pinMode(z,OUTPUT);

Was soll den x in dieser Schleife? und warum gibst Du keinen Anfangswert an? Wieso ein Float?

for(x;(x>=y&&z<61);x=x-0.8){
    z++;
    digitalWrite(z,OUTPUT);
    Serial.print(z);
    Serial.print("          ");
    Serial.println(x);

Du setzt weder x noch z zurück.

Bei deriner Chaotischen Programmierung kannst Du leicht ein falsches Pin setzen und etwas kaputmachen.
Grüße Uwe

Deine for-Schleifen Bedingung ist in der Tat sehr seltsam und erklärungsbedürftig. Da Du keinen Anfangswert setzt, wird die Schleife auch nur einmal ausgeführt, und danach dreht sich der mega im loop nur noch schwindelig.

Da der Wert von OUTPUT auch '1' ist, wird er als true oder HIGH interpretiert (Was nicht heißt, dass die Verwendung im digitalWrite-Befehl korrekt ist - es funktioniert nur zufällig) . Du setzt allerdings keinen der angesteuerten Ports als Ausgang, deshalb bleiben die auf default, was 'Input' bedeutet. Mit dem digitalwrite schaltest Du dann nur den internen PullUp-Widerstand ein, was deine Led's schwach zum Leuchten bringt ( ich geh mal davon aus, dass die direkt an den Pins 40-59 angeschlossen sind - zumindest werden diese Pins in der for-Schleife angesprochen ).

P.S. habe gerade gesehen, dass der Mega gar nicht soviele Pins hat. Was da passiert??
P.P.S. ok, Pins 54-69 sind die analogen Eingänge, die man ja auch als Digitaloutput verwenden kann. Aber hast Du das wirklich so angeschlossen?

Hallo!

Vielen Dank für eure Antworten =)

  1. Ich benutze keinen Arduino Mega sondern einen Crumbuino.
    (http://www.chip45.com/products/crumbuino-mega_arduino_compatible_atmega2560_module_board_usb.php)

Deswegen ist es vielleicht für euch irreführend, welche Pins ich für was benutze =)

  1. Für “x” habe ich nur zum Testen einen stationären Wert angenommen , später werde ich “x” mithilfe eines Potentiometers vorgeben, und dieser Wert kann eben auch eine Kommazahl werden.

  2. Wegen der Ausgangsdefinition. Kann ich die Ausgänge die ich benutzen werde [ Nummer 40 bis 59 ] mithilfe eines Arrays als Ausgang definieren damit diese korrekt leuchten ?

LG

Hey Leute danke für eure Antworten, ich habe das Problem selbst lösen können.

LG

Speedcore016:
Hey Leute danke für eure Antworten, ich habe das Problem selbst lösen können.

LG

Und wie?

Gruß

Gregor

Ich habe im Void Setup eine for-Loop hineingeschrieben, welche die Ausgänge von 40 bis 60 als Ausgang definiert.