3 LED

hi.
This program lighten up 3 LED's, one at a time.

It also writes status of led's to monitor.

However, the 3rd status is allways wrong.

// definer, variablene, teller og timer som type integer (max verdi 32768)

int teller,a = 0;
int timer=3000;
// definer LED som en tabell som inneholder verdiene 2, 3 og 4 LED[0]=2 LED[1]=3 LED[2]=4
int LED[] = {2, 3, 4};

// det som står i funksjonen setup kjøres kun en gang
void setup()
{
// definer serieoverføring til monitor med hastighet 9600 b/s
Serial.begin(9600);

// definer LED[teller] som utganger på pinne 2,3,4
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);

}

// det som står i funksjonen loop kjøres inntil du lager avbrudd
void loop()
{

for (teller=0;teller<3;teller++)
{
// sett utgang LED[teller] høy
digitalWrite(LED[teller], HIGH);
// les verdien på utgang LED[teller] og legg verdien inn i variabel a;
a=digitalRead(LED[teller]);

//skriv "LED"+verdi på teller+ "= " + verdi av a til seriell monitor
Serial.print("LED");
Serial.print(teller);
Serial.print("= ");
Serial.print(a);
// lag ny linje (enter)
Serial.println("");

// vent den tiden timer inneholder
delay(timer);

// sett ugteng LED[teller] lav
digitalWrite(LED[teller], LOW);

a=digitalRead(LED[teller]);

//skriv "LED"+verdi på teller+ "= " + verdi av a til seriell monitor
Serial.print("LED");
Serial.print(teller);
Serial.print("= ");
Serial.print(a);
// lag ny linje (enter)
Serial.println("");
Serial.println("neste lysdiode");
delay(timer);
}

}

You know the state that you just set the LED to. Why do you need to read it?

The digitalRead function expects the pinMode for the pin that it is to read to be INPUT. The pinMode for the pins you are trying to read is OUTPUT.

PaulS

Thanks for reply.

I wanted to know the lvl on the output pin.

Ill check if thats stored somewhere.

I could also wire the output to a input and read status ,but that was not the original thought.

Wonder if theres a statusregister for the outputs that can be monitored?

regards

Store the value to write to the pin in a variable, first.

        digitalWrite(LED[teller], HIGH);

Then, you don't need to ask what value was last written to the LED. You'll know.