Led in dissolvenza

Ciao a Tutti,
in pratica dovrei accendere un led in dissolvenza quando schiaccio un pulsante e farlo spegnere quando lo ri schiaccio.. Ho provato più e più volte ma non funziona mai.. Uso un arduino UNO
Questa è la prima prova:

int led = 9;             
int BUTTON = 7;         
int val = 0;                  
int vecchio_val = 0;       
int stato = 0;            
int brightness = 0; 
int fadeAmount = 5; 

void setup() {  
 pinMode(led, OUTPUT);      
 pinMode(BUTTON, INPUT);   
}  
 
void loop() {  
 val = digitalRead(BUTTON); 
 
 // controlla se è accaduto qualcosa  
 if ((val == HIGH) && (vecchio_val == LOW)){  
   stato = 1 - stato;  
   delay(15);               
 }   
 
 vecchio_val = val;         
 
   if (stato == 1) {  
   analogWrite(led, brightness); 
   brightness = brightness + fadeAmount;
 }   
 else {  
     if (brightness == 0 || brightness == 255) {
   fadeAmount = -fadeAmount ; 
 } 
 }  
}

Questa è la seconda

int value = 0;
#define LED 13                // LED collegato al pin digitale 13  
#define BUTTON 7              // pin di input dove è collegato il pulsante  
int val = 0;                  // si userà val per conservare lo stato del pin di input  
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente  
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso  
 
void setup() {                  
 pinMode(LED, OUTPUT);       // imposta il pin digitale come output  
 pinMode(BUTTON, INPUT);     // imposta il pin digitale come input  
}  
 
void loop() {  
 val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva  
 
 // controlla se è accaduto qualcosa  
 if ((val == HIGH) && (vecchio_val == LOW)){  
   stato = 1 - stato;  
   delay(15);                // attesa di 15 millisecondi  
 }   
 
 vecchio_val = val;            // ricordiamo il valore precedente di val  
 
   if (stato == HIGH)&& (value = 0, value <= 255, value += 5) {
   analogWrite(LED, value);
  delay(40);
 } 
}

ho fatto mille modifiche ma non funziona mai D: AIUTO

Can't read your language, but this stands out as a huge error. You appear to be trying to combine an if statement with the (still incorrect) syntax for a for statement.

if (stato == HIGH)&& (value = 0, value <= 255, value += 5)

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Cross-posting VIETATO.

Cancellato il post doppio.

Primo sketch:
if (brightness == 0 || brightness == 255)
è troppo insicuro. Usa <= e >= per invertire la conta.

Se vuoi una volta accenderlo e una volta spegnerlo in disolvenza devi fermarti quando arriva al valore massiomo o minimo.

Controlla la logica dello sketch.

secondo sketch come giá detto
if (stato == HIGH)&& (value = 0, value <= 255, value += 5) {

non ha nessun senso.

spero che hai messo una resistenza pulldown sul pulsante.

Ciao Uwe

Ciao Uwe