problema con codigo para encender leds

Hola, estoy empezando en esto de la programación con arduino y tengo un problema con uno de mis primeros programas, quiero hacer un ``termómetro´´ con 9 leds, que dependiendo de la temperatura se vayan encendiendo o apagando, al ir subiendo la temperatura se van encendiendo los leds (cada grado 1 led) y al ir bajando se apagan. También da la temperatura al puerto de serie.
El problema es que los leds hacen lo que les da la gana, a veces se encienden unos cuantos, a veces todos, unas veces se encienden a medias otras se encienden del todo...
Dejo el codigo, que seguramente tenga algo mal (o todo)

int led []={13,12,11,10,9,8,7,6,5};
int TemPin=0;
int TemVal=0;

void setup(){
Serial.begin (9600);
pinMode(TemPin, INPUT);
pinMode (led, OUTPUT);
digitalWrite (led, OUTPUT);
}

void loop(){
//calculo de temperatura del LM35
TemVal=((5.0*analogRead(TemPin)*100)/1024);
delay(1000);
Serial.println (TemVal);

//que leds se encienden en funcion de la temperatura

if (TemVal>=26) digitalWrite (led [13],HIGH);
if (TemVal<26) digitalWrite (led [13],LOW);

if (TemVal>=25) digitalWrite (led [12],HIGH);
if (TemVal<25) digitalWrite (led [12],LOW);

if (TemVal>=24) digitalWrite (led [11],HIGH);
if (TemVal<24) digitalWrite (led [11],LOW);

if (TemVal>=23) digitalWrite (led [10],HIGH);
if (TemVal<23) digitalWrite (led [10],LOW);

if (TemVal>=22) digitalWrite (led [9],HIGH);
if (TemVal<22) digitalWrite (led [9],LOW);

if (TemVal>=21) digitalWrite (led [8],HIGH);
if (TemVal<21) digitalWrite (led [8],LOW);

if (TemVal>=20) digitalWrite (led [7],HIGH);
if (TemVal<20) digitalWrite (led [7],LOW);

if (TemVal>=19) digitalWrite (led [6],HIGH);
if (TemVal<19) digitalWrite (led [6],LOW);

if (TemVal>=18) digitalWrite (led [5],HIGH);
if (TemVal<18) digitalWrite (led [5],LOW);

}

de entrada tienes una confusion sobre el funcionamiento de los arrays que confundes con el numero de pin.tienes un array de nueve elementos .los indices de un array comienzan por 0 ,para acceder al pin 13 por ejempo ,que esta en la primera posicion :

led[0]

el pin 12:

led[1]

etc,etc,asi que repasa tambien como declaras en el setup los pines como OUTPUT.por otro lado declaras el pin 0 como entrada (no se si has conectado ahi el sensor de temperatura),en muchos modelos de arduino los pines 0 y 1 son los usados por el serial monitor,no deberias usarlos.

jose:
de entrada tienes una confusion sobre el funcionamiento de los arrays que confundes con el numero de pin.tienes un array de nueve elementos .los indices de un array comienzan por 0 ,para acceder al pin 13 por ejempo ,que esta en la primera posicion :

led[0]

el pin 12:

led[1]

etc,etc,asi que repasa tambien como declaras en el setup los pines como OUTPUT.por otro lado declaras el pin 0 como entrada (no se si has conectado ahi el sensor de temperatura),en muchos modelos de arduino los pines 0 y 1 son los usados por el serial monitor,no deberias usarlos.

gracias, era por el tema de los arrays que no funcionaba el programa, al final he accedido a los pines directamente y ya funciona.

int TemPin=0;
int TemVal=0;

void setup(){
  
Serial.begin (9600);
pinMode(TemPin, INPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
}

void loop(){
//calculo de temperatura del LM35
TemVal=((5.0*analogRead(TemPin)*100)/1024);
delay(1000);
Serial.println (TemVal);

//que leds se encienden en funcion de la temperatura

if (TemVal>=26) digitalWrite (13,HIGH);
if (TemVal<26) digitalWrite (13,LOW);

if (TemVal>=25) digitalWrite (12,HIGH);
if (TemVal<25) digitalWrite (12,LOW);

if (TemVal>=24) digitalWrite (11,HIGH);
if (TemVal<24) digitalWrite (11,LOW);

if (TemVal>=23) digitalWrite (10,HIGH);
if (TemVal<23) digitalWrite (10,LOW);

if (TemVal>=22) digitalWrite (9,HIGH);
if (TemVal<22) digitalWrite (9,LOW);

if (TemVal>=21) digitalWrite (8,HIGH);
if (TemVal<21) digitalWrite (8,LOW);

if (TemVal>=20) digitalWrite (7,HIGH);
if (TemVal<20) digitalWrite (7,LOW);

if (TemVal>=19) digitalWrite (6,HIGH);
if (TemVal<19) digitalWrite (6,LOW);

if (TemVal>=18) digitalWrite (5,HIGH);
if (TemVal<18) digitalWrite (5,LOW);

}

Este código será algo mas eficiente

void loop(){
	//calculo de temperatura del LM35
	TemVal= analogRead(TemPin)*500/1024;
	
	Serial.println (TemVal);

	//que leds se encienden en funcion de la temperatura

	if (TemVal>=26) 
		digitalWrite (13,HIGH);
	else {
		digitalWrite (13,LOW);
		if (TemVal>=25) 
			digitalWrite (12,HIGH);
		else {
			digitalWrite (12,LOW);
			if (TemVal>=24) 
				digitalWrite (11,HIGH);
			else {
				digitalWrite (11,LOW);
				if (TemVal>=23) 
					digitalWrite (10,HIGH);
				else {
					digitalWrite (10,LOW);
					if (TemVal>=22) 
						digitalWrite (9,HIGH);
					else {
						digitalWrite (9,LOW);
						if (TemVal>=21) 
							digitalWrite (8,HIGH);
						else {
							digitalWrite (8,LOW);
							if (TemVal>=20) 
								digitalWrite (7,HIGH);
							else {
								digitalWrite (7,LOW);
								if (TemVal>=19) 
									digitalWrite (6,HIGH);
								else {
									digitalWrite (6,LOW);
									if (TemVal>=18) 
										digitalWrite (5,HIGH);
									else 
										digitalWrite (5,LOW);}
								 
							} 
						}
					}
				}
			}
		}
	}
	delay(1000);
}

Busqué una mejor solución pero no la encontré.

Sabes @ArduMyth que pense y pensé en un método mejor y no se me ocurrió tu linea.
Muy bien!!! Anotada.