[VicPiMakers Projects] Make class out of functions

George Bowden gtbowdeng at gmail.com
Mon Nov 16 18:12:46 EST 2020


Hi Mark
The builtin function millis() used in the class could not be found by the
compiler so I put the class and member functions in the main file:
It now compiles, and operates.  I'll have to check further on whether it
operates fully correctly.  It is still missing actions randomly for some
reason.  I've attached the main file.
Thanks for your help.    I'll now try to find out why the files
won't compile when included in the library.

On Sun, Nov 15, 2020 at 8:09 PM Mark G. <vpm at palaceofretention.ca> wrote:

> Quick update:
>
> You probably want to add unsigned in front of
> all the long ints, or adjust the type as needed
> (all over, including  the "const" values).
>
>
> On 2020-11-15 7:13 p.m., Mark G. wrote:
> > Hi George,
> >
> > Here's a quick outline of an ActionTimer class.  What
> > do you make of it?
> >
> > Mark
> >
> >
> > On 2020-11-15 6:07 p.m., George Bowden wrote:
> >> I have two "identical" functions for time slicing the Arduino loop.
> >> One function is called to see if it is time to toggle the LED every
> >> second, and the other "identical" function is called to see if it is
> >> time to send a post to the website every few minutes.  These functions
> >> seem good candidates for a single C++ class, and I'm looking for some
> >> advice, never having coded a class before.  Maybe it's a coding
> >> challenge? I'm using Arduinos millis() which increments continuously
> >> and the modulus of that, with a different period value passed to the
> >> functions, to determine when to act.  When the modulus remainder is
> >> smaller than the last time through the loop, it is time to take
> >> action. (the vertical line in the stairs)
> >>
> >> image.png
> >>
> >>
> >>
> >> Each instance of the class needs its own static variable for the value
> >> of mod'ed millis() last time through the loop.   I would like to write
> >> a class which I instantiate with NEW for each different period, ....
> >> I would like to put these in a library that I could include in any of
> >> my projects that need time sliced
> >>
> >>   Here is how I have coded it as functions:
> >>
> >> unsigned long lastPostMillis=0;  // the value of the modulus last time
> >> through the loop.
> >> unsigned long lastBlinkMillis=0;
> >>
> >> bool isPostTime(unsigned long int period){
> >>    if(millis() % period > lastPostMillis) {
> >>      lastPostMillis = millis()% period;
> >>      return true;
> >>    }
> >>    else {
> >>      lastPostMillis = millis() % period;
> >>      return false;
> >>    }
> >> }
> >> bool isBlinkTime(unsigned long int period){
> >>    int blinkPeriod = 500;
> >>    if(millis() % blinkPeriod > lastBlinkMillis) {
> >>      lastBlinkMillis = millis()% period;
> >>      return true;
> >>    }
> >>    else {
> >>      lastBlinkMillis = millis()% period;
> >>      return false;
> >>    }
> >> }
> >> void setup() {...
> >> }
> >> void loop() {
> >>    if (isPostTime(minutesBetweenPosts*60000)) { //time to send a Post
> >> to the website
> >>    ...
> >>    if(isBlinkTime(500)){
> >>      toggle builtin led}
> >> } // end loop
> >> --
> >> George Bowden, 250-893-7423
> >> gtbowdeng at gmail.com
> >> <mailto:gtbowdeng at gmail.com>
> >>
> >
>
> --
> Projects mailing list
> Projects at vicpimakers.ca
> http://vicpimakers.ca/mailman/listinfo/projects_vicpimakers.ca
>


-- 
George Bowden, vice president, Victoria Computer Club
gtbowdeng at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://vicpimakers.ca/pipermail/projects_vicpimakers.ca/attachments/20201116/8e46dd00/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fridge8.ino
Type: application/octet-stream
Size: 2065 bytes
Desc: not available
URL: <http://vicpimakers.ca/pipermail/projects_vicpimakers.ca/attachments/20201116/8e46dd00/attachment.obj>


More information about the Projects mailing list