Kitchen Timer Trouble

I'm having some trouble with a project, and my C++ is weak.
Hoping someone can lend some advice:

(20-1-2025 EDIT: I came back to add the video link:)

General concept:
I have an arduino uno with attached 14 segment, 4 digit LED display using the HT16k33 to control it over I2C - I'm communicating with it using the AlphaNum4 libraries.

The idea is to have a timer with a beeper on pin 8
and 4 toggle switches pulling to ground on pins 2 through 5.
internal pullups used.

When any combination of these toggle switches is selected, the timer should activate the beeper at that preset interval for a couple of seconds and move on.

This is intended to be used as a kitchen timer, where a traditional, programmable timer is not suitable for several reasons, not stated here.
in some cases only one interval will be required but in some cases, combinations of the preset times are required.

presently I am attempting to solve a problem at line 54, where it compares elapsedTime and targetTimeP2 variables.
currently set to >= but when I remove > and leave = in the hope that it will only trigger at that specific time and not beyond, the timer immediately jumps to that interval at boot and freezes there.

I have considered wrapping it in an additional IF statement, and I have tried simply hard coding the number in place of the variable.
Indented code breaks my brain, but I have updated to arduino 2.04 which makes things visually a little easier to follow.

I have tried to notate things as clearly as possible.
I have laid out variables for future use also.

//Kitchen timer code.
//running on arduino uno with attached 14 segment (4 digit) display (I2C)
//pin 8 currently attached to led, but in future will be a piezo beeper.
//pins 2-5 are toggle switches with common resistor and pull to ground
//the concept is that the timer will beep for a couple of seconds at intervals
//determined by the selected toggle switches.
//current challenge: getting code to move on past 1st event

#include <Wire.h>
#include <Adafruit_LEDBackpack.h>

Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); // Use Adafruit_AlphaNum4 for 14-segment display

unsigned long startTime = 0;
unsigned long elapsedTime = 0;
//below times will be altered to suit my needs when code is functiona;
const unsigned long targetTimeP2 = 10000; // time in miliseconds on pin2
const unsigned long targetTimeP3 = 15000; // time in miliseconds on pin3
const unsigned long targetTimeP4 = 30000; // time in miliseconds on pin4
const unsigned long targetTimeP5 = 45000; // time in miliseconds on pin5
const unsigned int maxMinutes = 99; // Maximum value for minutes
const int buttonPin2 = 2; // Pin 2 switch
const int buttonPin3 = 3; // Pin 3 switch
const int buttonPin4 = 4; // Pin 4 switch
const int buttonPin5 = 5; // Pin 5 switch

void setup() {
  pinMode(8, OUTPUT); // Set pin 8 as output
  alpha4.begin(0x70); // Address of your HT16K33 module
  alpha4.setBrightness(15); // Adjust the brightness (0-15)
  alpha4.writeDigitAscii(0, '0'); // Initial display time: 00:00
  alpha4.writeDigitAscii(1, '0');
  alpha4.writeDigitAscii(2, '0');
  alpha4.writeDigitAscii(3, '0');
  alpha4.writeDisplay();
  pinMode(buttonPin2, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin3, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin4, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin5, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
}

void loop() {
  // Check if the timer has not started yet
  if (startTime == 0) {
    if (millis() >= 5000) { // Start the timer after 5 seconds
      startTime = millis();
    }
  } else {
    // Calculate the elapsed time
    elapsedTime = millis() - startTime;

    // Check if the target time has been reached on pin 2 (I have only written this for one switch, and will copy/paste when working properly)
    //I'd like to ignore this when the elapsed time is greated than targetTimeP2 - when removing > teh timer immediately jumps to 10 seconds and freezes.
    if (elapsedTime >= targetTimeP2) {
      if  (digitalRead(buttonPin2) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(3);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
        }
      }
    }

    // Calculate minutes and seconds
    unsigned int minutes = elapsedTime / 60000;
    unsigned int seconds = (elapsedTime / 1000) % 60;

    // Handle rollover if minutes exceed the maximum value
    if (minutes > maxMinutes) {
      minutes = minutes % (maxMinutes + 1);
      startTime = millis(); // Reset the start time to prevent overflow
    }

    // Update the display with the elapsed time
    int minuteTens = minutes / 10;
    int minuteOnes = minutes % 10;
    int secondTens = seconds / 10;
    int secondOnes = seconds % 10;

    // Display the time on the LED matrix
    alpha4.writeDigitAscii(0, minuteTens + '0');
    alpha4.writeDigitAscii(1, minuteOnes + '0');
    alpha4.writeDigitAscii(2, secondTens + '0');
    alpha4.writeDigitAscii(3, secondOnes + '0');
    alpha4.writeDisplay();
  }


If you serial.print the various values you are comparing, you can likely figure out the problem, yourself.

I'm flattered that you ascribe that level of skill to me, but I'm not sure exactly how to do that.

I may have found my stupidly simple syntax error...
and this took me an embarrasingly long time to spot...

I was using = instead of ==

1 Like

Modest honesty is rewarded ! :+1:

So I have a semi-functional code.

I had to sacrifice rollover for now, but given max use case is 45 minutes this won't be a huge issue.

I have resorted to counting loops and delaying by 1000 instead of using millis, as I'm having issues grabbing individual miliseconds. As this unit will be running on AA batteries, the less times it has to think, the less battery it's going to use (or at least is my logic)

I still have issue grabbing the event but it's much more robust now, and I think I need to change the value of my pull down resistor.

in any case for those looking for my current code:

//Kitchen timer code.
//running on arduino uno with attached 14 segment (4 digit) display (I2C)
//pin 8 currently attached to led, but in future will be a piezo beeper.
//pins 2-5 are toggle switches with common resistor and pull to ground
//the concept is that the timer will beep for a couple of seconds at intervals
//determined by the selected toggle switches.

#include <Wire.h>
#include <Adafruit_LEDBackpack.h>

Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); // Use Adafruit_AlphaNum4 for 14-segment display

unsigned long startTime = 0;
unsigned long elapsedTime = 0;
//below times will be altered to suit my needs when code is functiona;
const unsigned long targetTimeP2 = 10; // time in seconds on pin2
const unsigned long targetTimeP3 = 15; // time in seconds on pin3
const unsigned long targetTimeP4 = 20; // time in seconds on pin4
const unsigned long targetTimeP5 = 25; // time in seconds on pin5
const unsigned int maxMinutes = 99; // Maximum value for minutes
const int buttonPin2 = 2; // Pin 2 switch
const int buttonPin3 = 3; // Pin 3 switch
const int buttonPin4 = 4; // Pin 4 switch
const int buttonPin5 = 5; // Pin 5 switch
unsigned long loopCount; //workaround for problem where code won't trigger on individual miliseconds - also power saving as reduces processing

void setup() {
  pinMode(8, OUTPUT); // Set pin 8 as output
  alpha4.begin(0x70); // Address of your HT16K33 module
  alpha4.setBrightness(15); // Adjust the brightness (0-15)
  alpha4.writeDigitAscii(0, '0'); // Initial display time: 00:00
  alpha4.writeDigitAscii(1, '0');
  alpha4.writeDigitAscii(2, '0');
  alpha4.writeDigitAscii(3, '0');
  alpha4.writeDisplay();
  pinMode(buttonPin2, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin3, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin4, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin5, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  loopCount == 1; //zero out the loop counter (this should represent seconds roughly - for a kitchen timer, doesn't need to be super accurate)
}

void loop() {
  //workaround to arduino missing individual miliseconds:
  delay(1000);
  loopCount += 1;
  // Check if the timer has not started yet
  if (startTime == 0) {
    if (millis() >= 5000) { // Start the timer after 5 seconds
      startTime = millis();
    }
  } else {
    // Calculate the elapsed time
    elapsedTime = millis() - startTime;

    // Check if the target time has been reached on pins 2-5
    
    if (loopCount == targetTimeP2) {
      if  (digitalRead(buttonPin2) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(3000);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
        }
      }
    if (loopCount == targetTimeP3) {
      if  (digitalRead(buttonPin3) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(3000);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
        }
      }
    if (loopCount == targetTimeP4) {
      if  (digitalRead(buttonPin5) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(3000);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
        }
      }
    if (loopCount == targetTimeP5) {
      if  (digitalRead(buttonPin5) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(3000);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
        }
      }            
    }    

    // Calculate minutes and seconds
    unsigned int minutes = loopCount / 60;
    unsigned int seconds = (loopCount) % 60;

    // Handle rollover if minutes exceed the maximum value
    //if (minutes > maxMinutes) {
    //  minutes = minutes % (maxMinutes + 1);
    //  startTime = loopCount(); // Reset the start time to prevent overflow
    //}

    // Update the display with the elapsed time
    int minuteTens = minutes / 10;
    int minuteOnes = minutes % 10;
    int secondTens = seconds / 10;
    int secondOnes = seconds % 10;

    // Display the time on the LED matrix
    alpha4.writeDigitAscii(0, minuteTens + '0');
    alpha4.writeDigitAscii(1, minuteOnes + '0');
    alpha4.writeDigitAscii(2, secondTens + '0');
    alpha4.writeDigitAscii(3, secondOnes + '0');
    alpha4.writeDisplay();
  }


Coming after the facts and Just thinking aloud here, testing for equality is done with == and not = which is used for assignment but may be it’s a moot point as I see == in the latest code. Testing for equality is risky as it’s easy to miss a millisecond. There is no harm in testing for >= it will trigger on == if you get it otherwise will trigger right after instead of 50 days later may be…

When you start adding number at the end of variable’s names it means it’s time to consider an array and structs / classes when you have many related stuff to group together

Using a button library ( Button in easyRun or OneButton or the rich Toggle ) helps with bouncing and code structure, may be something you want to consider

Have you tried putting it under a heat lamp?

2 Likes

Unfortunately as I have multiple sclerosis, I need to keep cooler than average, co-habitating with python and several other code languages can become problematic in those situations.

I've attached a copy of my final code.

I opted to copy some code I used a couple of years back on a digispark, where I counted loops and delayed it 1000ms in order to save power.

Gave myself a much bigger target to hit that way.
I had some issues with indenting and parenthesis but that's always been something I struggle with in indented code like python.

That and modifying example code to get where I am.
I commented out the rollover code, as it's functionally pointless to the end use, and was causing compile issues.

Adding numbers helped me to correlate to real world pin numbers, to save mistakes when assembling.

//Kitchen timer code.
//running on arduino uno with attached 14 segment (4 digit) display (I2C)
//pin 8 currently attached to led, but in future will be a piezo beeper.
//pins 2-5 are toggle switches with common resistor and pull to ground
//the concept is that the timer will beep for a couple of seconds at intervals
//determined by the selected toggle switches.

#include <Wire.h>
#include <Adafruit_LEDBackpack.h>

Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); // Use Adafruit_AlphaNum4 for 14-segment display

unsigned long startTime = 0;
unsigned long elapsedTime = 0;
//below times will be altered to suit my needs when code is functiona;
const unsigned long targetTimeP2 = 900; // 900 time in seconds on pin2
const unsigned long targetTimeP3 = 1800; // 1800 time in seconds on pin3
const unsigned long targetTimeP4 = 2700; // 2700 time in seconds on pin4
const unsigned long targetTimeP5 = 3600; // 3600 time in seconds on pin5
const unsigned int maxMinutes = 99; // Maximum value for minutes
const int buttonPin2 = 2; // Pin 2 switch
const int buttonPin3 = 3; // Pin 3 switch
const int buttonPin4 = 4; // Pin 4 switch
const int buttonPin5 = 5; // Pin 5 switch
unsigned long loopCount; //workaround for problem where code won't trigger on individual miliseconds - also power saving as reduces processing

void setup() {
  pinMode(8, OUTPUT); // Set pin 8 as output
  alpha4.begin(0x70); // Address of HT16K33 module
  alpha4.setBrightness(15); // Adjust the brightness (0-15)
  alpha4.writeDigitAscii(0, '0'); // Initial display time: 00:00
  alpha4.writeDigitAscii(1, '0');
  alpha4.writeDigitAscii(2, '0');
  alpha4.writeDigitAscii(3, '0');
  alpha4.writeDisplay();
  pinMode(buttonPin2, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin3, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin4, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  pinMode(buttonPin5, INPUT_PULLUP); // Set switch pin as input with internal pull-up resistor
  loopCount == 1; //zero out the loop counter (this should represent seconds roughly - for a kitchen timer, doesn't need to be super accurate)
}

void loop() {
  //workaround to arduino missing individual miliseconds:
  delay(1000);
  loopCount += 1; 
  // Check if the timer has not started yet
  if (startTime == 0) {
    if (millis() >= 1000) { // Start the timer after 5 seconds
      startTime = millis();
    }
  } else {
    // Calculate the elapsed time
    //elapsedTime = millis() - startTime;

    // Check if the target time has been reached on pins 2-5
    
    if (loopCount == targetTimeP2) {
      if  (digitalRead(buttonPin2) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(500);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH);
          delay(3000);
          digitalWrite(8, LOW);
        }
      }
    if (loopCount == targetTimeP3) {
      if  (digitalRead(buttonPin3) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(500);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH);
          delay(1500);
          digitalWrite(8, LOW);
          delay(500);
          digitalWrite(8, HIGH);
          delay(1500);
          digitalWrite(8, LOW);
        }
      }
    if (loopCount == targetTimeP4) {
      if  (digitalRead(buttonPin5) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(500);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH);
          delay(1000);
          digitalWrite(8, LOW);
          delay(500);
          digitalWrite(8, HIGH);
          delay(1000);
          digitalWrite(8, LOW);
          delay(500);
          digitalWrite(8, HIGH);
          delay(1000);
          digitalWrite(8, LOW);
        }
      }
    if (loopCount == targetTimeP5) {
      if  (digitalRead(buttonPin5) != LOW) {
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(500);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH); // Set pin 8 high when time reached is switch is on
          delay(50);
          digitalWrite(8, LOW); // Set pin 8 low to turn off
          delay(50);
          digitalWrite(8, HIGH);
          delay(750);
          digitalWrite(8, LOW);
          delay(400);
          digitalWrite(8, HIGH);
          delay(750);
          digitalWrite(8, LOW);
          delay(400);
          digitalWrite(8, HIGH);
          delay(750);
          digitalWrite(8, LOW);
          delay(400);
          digitalWrite(8, HIGH);
          delay(750);
          digitalWrite(8, LOW);
        }
      }            
    }    

    // Calculate minutes and seconds
    unsigned int minutes = loopCount / 60;
    unsigned int seconds = (loopCount) % 60;

    // Handle rollover if minutes exceed the maximum value
    //if (minutes > maxMinutes) {
    //  minutes = minutes % (maxMinutes + 1);
    //  startTime = loopCount(); // Reset the start time to prevent overflow
    //}

    // Update the display with the elapsed time
    int minuteTens = minutes / 10;
    int minuteOnes = minutes % 10;
    int secondTens = seconds / 10;
    int secondOnes = seconds % 10;

    // Display the time on the LED matrix
    alpha4.writeDigitAscii(0, minuteTens + '0');
    alpha4.writeDigitAscii(1, minuteOnes + '0');
    alpha4.writeDigitAscii(2, secondTens + '0');
    alpha4.writeDigitAscii(3, secondOnes + '0');
    alpha4.writeDisplay();
  }


Additional - testing for >= will result in a beeper sounding for 45 minutes solid.
in this use case I absolutely need it to trigger at that point and only at that point.

the idea is that several presets can be toggled but mechanical switch (by an individual wearing gloves), and the beeper will sound at that interval for a short period, and the timer will move on to the next preset interval selected by switch.

this is to accommodate potentially multiple actions occurring simultaneously in said kitchen that all require independent alerts.

As I have multiple sclerosis, and accompanying dexterity and sensory issues, this project is designed to work with other engineering solutions to help me continue to remain functional.

programming a half dozen cheap chinese kitchen timers would take longer for me, than the entire kitchen task - and probably result in their expedited traverse through the nearest window.

I very much appreciate the input, I do learn from each reply and try to put it into action - but the last attack of ms did cause me some brain lesions, and I'm a little slower on the uptake that I once was.

I'll be posting the build in my youtube channel (the aussie repair guy) at some point in the future, I'll come back and post the link here.

OK sorry to hear about your health - keep fighting and building solutions !

1 Like

“Just put it in a cool dry place” | Traveling Wilburys

1 Like

Look at the sample programs that come with the Arduino development system you are using. Many of the programs use the serial.Print() to display variables used in the program. You can follow their lead.

I understand that, hence I abandoned that approach.

My problem is where they get displayed.
in the arduino ide console? or do I need to connect to a serial interface?
I only have a 4 digit display, not much room for diagnostics there.

so far I have narrowed down my issues using led's on select pins and a multimeter.

As I said in a recent post I have it working now, and I'll post video later on of the build process, much will make sense then.

This does sound like a useful thing to know however. this won't be the last time I attempt something like this.

Yes, on the IDE console. Once you are through debugging, you can remove all the extra code if you want.

No worries, I'll look into that.

When I take it out of service again in a few days I'll look into reworking the code - and integrate some of that.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.