Pulsing led ("breading" effect)

Hello,

I want to run pulsing led ("breading" effect) for 10 minutes.
After a push on a button.

How can i do this?

Function:

  1. push on a button
  2. pulsing led for 10 minutes
  3. Sleep mode

The code below is not working.
What i do wrong?

I hope you guys can help me.
Thanks in advance.

// Power save
#include <avr/sleep.h>
#include <avr/wdt.h>
 
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
 
int startNc =3;
int nc;
int pinLed = 4;
volatile boolean f_wdt = 1;
 
void setup(){
setup_watchdog(6); // approximately 1 seconds sleep
pinMode(0, OUTPUT); 
pinMode(2, OUTPUT); 
pinMode(pinLed,OUTPUT);
digitalWrite(3, HIGH); //turn on internal pull up resistors
nc=digitalRead (startNc);

}
 
void loop(){
if (f_wdt==1) {  // wait for timed out watchdog / flag is set when a watchdog timeout occurs
f_wdt=0;       // reset flag
 
digitalWrite(pinLed,HIGH);  // let led blink
delay(5);
digitalWrite(pinLed,LOW);

pinMode(pinLed,INPUT); // set all used port to intput to save power
system_sleep();
pinMode(pinLed,OUTPUT); // set all ports into state before sleep
 
}

if(digitalRead(startNc) == HIGH){

float in, out;
 
  for (in = 0; in < 6.283; in = in + 0.00060)
  {
    out = sin(in) * 127.5 + 127.5;
    analogWrite(LED,out);
    in = in + .0001 * out /255;


}
}


 
// set system into the sleep state
// system wakes up when wtchdog is timed out
void system_sleep() {
cbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter OFF
 
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable();
 
sleep_mode();                        // System sleeps here
 
sleep_disable();                     // System continues execution here when watchdog timed out
sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
}
 
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {
 
byte bb;
int ww;
if (ii > 9 ) ii=9;
bb=ii & 7;
if (ii > 7) bb|= (1<<5);
bb|= (1<<WDCE);
ww=bb;
 
MCUSR &= ~(1<<WDRF);
// start timed sequence
WDTCR |= (1<<WDCE) | (1<<WDE);
// set new watchdog timeout value
WDTCR = bb;
WDTCR |= _BV(WDTIE);
}
 
// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect) {
f_wdt=1;  // set global flag
}

The code below is not working.

That is a very lame description of the problem.

What does it do when you run it ?

I would suggest getting the Arduino Cookbook, Your project in part is published as a fading LED. This response is to help you get started in solving your problem, not solve it for you.
Good Luck & Have Fun!
Gil