This is my program. The LED should turn off after four seconds.

int vraag = 7;
int gloeikaars = 5;
unsigned long previousMillis3;
boolean gloeistate = true;

void setup() {
    pinMode(gloeikaars, OUTPUT);

void loop() {
    int x = digitalRead(vraag);
    if (x == 0) {
        digitalWrite(gloeikaars, !LOW);
    } else {

// *********************************************************************
// Gloeikaars aansturing
// *********************************************************************
void Gloeikaars() {
    unsigned long huidig = millis();
    digitalWrite(gloeikaars, !HIGH);
    if ((gloeistate == true) && (huidig - previousMillis3 >= 4000)) {
        huidig = previousMillis3;
        digitalWrite(gloeikaars, !LOW);
        gloeistate = false;

Can someone help me because it won't work?

  • At the moment your code doesn't know when you turned the LED on - so how can it know when 4 seconds have passed? – Majenko Mar 8 '16 at 18:58
  • you are doing pinmode with a function. How do you conclude millis doesn't work? – jantje Mar 8 '16 at 19:47
  • 1
    @Patrick, I'm also Dutch, but I code in English, not only does it spice up your English, it also works better when working with international people (or StackExchange websites). – Paul Mar 8 '16 at 20:26
  • 2
    (Dutch, to avoid language barriers) Patrick, het is beter om je programma ook in het Engels te schrijven, zo kunnen internationale collega's ook je programma lezen/begrijpen (of mensen op stack-exchange). Je vertelt er namelijk ook niet bij dat je een "glowing-candle" probeert te maken, wat uiterst interessant kan zijn voor mensen die je code proberen te begrijpen. Over het algemeen zijn vragen als: "Dit is mijn code, het werk niet" ook geen goede vragen. Beschrijf wat je probeert te doen, welk gedrag je verwacht en wat er gebeurt (dat niet zo zou moeten zijn). – Paul Mar 8 '16 at 20:28

Your previousMillis variable is never set. Two changes:

In setup:

previousMillis3 = millis();

In loop:

previousMillis3 = huidig;
  • 2
    Not needed in setup, as both the millis() counter and previousMillis3 are initialized to zero. – Edgar Bonet Mar 8 '16 at 21:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.