30 seconds delay with millis over a button

Hello everybody,

I try to delay OUT_Buzzer for 30 sec with millis, but i am not able to use millis, can you help me please? :slight_smile:

Greets

/*Begining of Auto generated code by Atmel studio */
#include <Arduino.h>

/*End of auto generated code by Atmel studio */


void X_Test();
void Y_Test();
void LED_Red();
void LED_Yellow();
void Keyswitch();



const int ADC_Xin = A0; //Vertikal
int ADCValue_Xin = 0;   

const int ADC_Yin = A1; //Horizontal
int ADCValue_Yin = 0;  

const int Horizontal_min = 400;
const int Horizontal_max = 600;

const int Vertikal_min = 400;
const int Vertikal_max = 600;

const int OUT_LEDHorizontal = 1; //Horizontal LED
const int OUT_LEDVertikal = 2; //Vertikal LED
const int OUT_Buzzer = 3; //Buzzer
//const int OUT_LEDStatus = 13; //Buzzer

long previousMillis = 0;
long interval = 30000; 

const int IN_LEDrot = 9; //Buzzer
const int IN_LEDgelb = 10; //Buzzer

const int IN_Keyswitch = 8; //Keyswitch

// the setup function runs once when you press reset or power the board
void setup() {

   pinMode(OUT_LEDVertikal, OUTPUT); // Vertical OUT LED Grün
   pinMode(OUT_LEDHorizontal, OUTPUT); // Horizontal OUT LED rot
   pinMode(OUT_Buzzer, OUTPUT); // Buzzer

   pinMode(IN_LEDrot, INPUT); // rote Warn LED
   pinMode(IN_LEDgelb, INPUT); // gelbe Warn LED
   pinMode(IN_Keyswitch, INPUT_PULLUP);//Keyswitch

   ADCValue_Xin = analogRead(ADC_Xin);


   ADCValue_Yin = analogRead(ADC_Yin);

}

// the loop function runs over and over again forever
void loop() 
{
     X_Test(); 
     Y_Test();
     LED_Red();
     LED_Yellow();
     Keyswitch();
}


void X_Test()  //Kippverhalten
{

  if (analogRead(ADC_Xin)> Vertikal_max)
  {
      digitalWrite(OUT_LEDVertikal, HIGH);
      digitalWrite(OUT_Buzzer, HIGH);
    }

     if (analogRead(ADC_Xin)< Vertikal_min)
  {
      digitalWrite(OUT_LEDVertikal, HIGH);
      digitalWrite(OUT_Buzzer, HIGH);
    }

     if (analogRead(ADC_Xin)> Vertikal_min &  analogRead(ADC_Xin) < Vertikal_max)
  {
      digitalWrite(OUT_LEDVertikal, LOW);
      digitalWrite(OUT_Buzzer, LOW);
    }

}

void Y_Test() //Kippverhalten
{
   if (analogRead(ADC_Yin)> Horizontal_max)
    {
      digitalWrite(OUT_LEDHorizontal , HIGH);
      digitalWrite(OUT_Buzzer, HIGH);
    }

     if (analogRead(ADC_Yin)< Horizontal_min)
    {
      digitalWrite(OUT_LEDHorizontal, HIGH);
      digitalWrite(OUT_Buzzer, HIGH);
    }

    if(analogRead(ADC_Yin)> Horizontal_min &  analogRead(ADC_Yin) < Horizontal_max)
    {
      digitalWrite(OUT_LEDHorizontal, LOW);
      digitalWrite(OUT_Buzzer, LOW);
    }
}

void LED_Red() //LED-Rot Ausgabe
{
  if (digitalRead(IN_LEDrot) == HIGH) 
  {
    digitalWrite(OUT_Buzzer, HIGH);
      delay(5);   
      digitalWrite(OUT_Buzzer, LOW);
      delay(5);   
  }

  if (digitalRead(IN_LEDrot) == LOW)
  {
    digitalWrite(OUT_Buzzer, LOW);
  }
}

void LED_Yellow() //LED_Gelb Ausgabe
{
   if (digitalRead(IN_LEDgelb) == HIGH) 
   {
    digitalWrite(OUT_Buzzer, HIGH);
      delay(10);   
      digitalWrite(OUT_Buzzer, LOW);
      delay(10);   
  }

  if (digitalRead(IN_LEDgelb) == LOW)
  {
    digitalWrite(OUT_Buzzer, LOW);
  }
}

void Keyswitch()//Tasterabfrage
{
  unsigned 
  if ((digitalRead(IN_Keyswitch) == LOW)) 
 {
	digitalWrite(OUT_Buzzer, LOW);
	interval;
 }
}

Hello,

Your sketch will not compile, as posted. Post the last working version you have, and explain in more detail how you want to change it.

Paul

You can only use the millis() function if you include it in your code. At the moment it is absent which is why it doesn't work.

There is no reason why this function can not be included in your code.