Old project from 2007 won't compile any more

Hi folks.

I have been very quite for a very long time. What I learnt has since been forgotten and I am again stuck.

I don't want to carry on with too much back story so I will try to keep things brief here and now.
Looking at the dates on the files and my comments I don't think I've touched this since 2007 and it was early days for me.

I wrote (bashed together) a program for an UNO with a 20x4 LCD screen, RTC clock, 6 buttons and an I2C bus expander chip to allow more I/O as I ran out and an I2C EEPROM for storing things that needed to be remembered if power failed, reset, etc.

It "works" but also doesn't.
Now and then when I press a button on it the program seems to crash, but the LCD is still active and needs to be reset. I'll put that aside for now - forgive me for bringing it up if I'm not going to follow through on it, but this is me explaining the scenario.

The program only just fit into the arduino and it was done from an "old" laptop running XP.
That laptop is still working/usable and I wanted to fix a problem that one of the things that needed to be remembered wasn't being saved to the EEPROM and so wasn't remembered at reset.

I power up the laptop, load the IDE (OLD ONE!) and first off check it compiles.

It doesn't. MASSIVE list of errors.

Examples:

In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:50:21: error: 'boolean' has not been declared
     void get(int *, boolean);
                     ^~~~~~~
DS1307_1.h:51:18: error: 'boolean' has not been declared
     int get(int, boolean);
                  ^~~~~~~
DS1307_1.h:52:20: error: 'boolean' has not been declared
     int min_of_day(boolean);
                    ^~~~~~~
DS1307_1.h:56:24: error: 'byte' has not been declared
     void get_sram_data(byte *);
                        ^~~~
DS1307_1.h:57:24: error: 'byte' has not been declared
     void set_sram_data(byte *);
                        ^~~~
DS1307_1.h:58:5: error: 'byte' does not name a type
     byte get_sram_byte(int);
     ^~~~
DS1307_1.h:59:24: error: 'byte' has not been declared
     void set_sram_byte(byte, int);
                        ^~~~
DS1307_1.h:62:5: error: 'byte' does not name a type
     byte rtc_bcd[7]; // used prior to read/set ds1307 registers;

And these are the easy ones - IMO.

The code is a real dog's breakfast. I wrote it under duress (to call it) as my old alarm clock died after a long life. Anyway.

Attachments.
V13b is the main file to load.
Included in this archive:
The DS1307 and alarm bits were sourced from the internet.
The Example_menu is constructed from the original alarmclock code I found.
My_routtines is/are bits of code I wrote.
Read_me is notes I made through the life of building the code.

The second attachment is all the other libraries - I hope.
I couldn't find a couple. So that may not be helping, but I also don't think so.

Ok, reading the Readme it was 2017 when I last worked on it.
Small tweak/adjustment.

And my version numbers are.... horrible.

No, I don't expect anyone to sit down and go through the code. That would be cruel of me and I don't expect it.

What I would like help with is what has happened since this is/was on an XP laptop that is not really used and is NOT kept up to date with things. It was working. I could edit/tweak things, compile it and upload the code and the alarm clock would work.

Now: I can't. I am showered with errors.

There is huge contention with the Wire.h if it should (or not) be used/included.
(And which one too.)

Looking at the other errors (see below) I am sort of understanding that entire structures are not being accepted any more.

They used to be and the libraries haven't been updated - AFAIK. Unless the laptop connects itself and does it without me knowing.
I kept it isolated because I knew it worked.
Alas I am proven to be wrong.

Oh, before you read them and say "Hey, these are not what you were talking about!"
Yes, I know: These are from my NEW machine and it is running UBUNTU.
I'm not hooking the laptop to the network to get the errors and code.
I've copied the code to this machine and tried to compile it here.
Basically the same errros.
But the IDE on this machine is also OLD!

(Kind of repeating myself but to be sure....)
Attached are all the local files from the project's directory.
The second one is the other external libraries - I hope all.

Again: I am sorry for asking this.
In a perfect world it would work as it did last time I compiled it.
But I have done SOMETHING in the mean time that has messed the whole thing up.
I'm asking here because this is really beyond me and I hope someone can quickly and easily see the mistake I've made.

The full list of errors:

Arduino: 1.8.19 (Linux), Board: "Arduino Uno"











In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:50:21: error: 'boolean' has not been declared
     void get(int *, boolean);
                     ^~~~~~~
DS1307_1.h:51:18: error: 'boolean' has not been declared
     int get(int, boolean);
                  ^~~~~~~
DS1307_1.h:52:20: error: 'boolean' has not been declared
     int min_of_day(boolean);
                    ^~~~~~~
DS1307_1.h:56:24: error: 'byte' has not been declared
     void get_sram_data(byte *);
                        ^~~~
DS1307_1.h:57:24: error: 'byte' has not been declared
     void set_sram_data(byte *);
                        ^~~~
DS1307_1.h:58:5: error: 'byte' does not name a type
     byte get_sram_byte(int);
     ^~~~
DS1307_1.h:59:24: error: 'byte' has not been declared
     void set_sram_byte(byte, int);
                        ^~~~
DS1307_1.h:62:5: error: 'byte' does not name a type
     byte rtc_bcd[7]; // used prior to read/set ds1307 registers;
     ^~~~
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'void DS1307::read_rtc()':
DS1307_1.h:26:24: error: 'B1101000' was not declared in this scope
 #define DS1307_CTRL_ID B1101000  //DS1307
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:24:26: note: in expansion of macro 'DS1307_CTRL_ID'
   Wire.beginTransmission(DS1307_CTRL_ID);
                          ^~~~~~~~~~~~~~
DS1307.cpp:25:15: error: 'byte' was not declared in this scope
   Wire.write((byte)0x00);
               ^~~~
DS1307.cpp:33:5: error: 'rtc_bcd' was not declared in this scope
     rtc_bcd[i]=Wire.read();
     ^~~~~~~
In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'void DS1307::save_rtc()':
DS1307_1.h:26:24: error: 'B1101000' was not declared in this scope
 #define DS1307_CTRL_ID B1101000  //DS1307
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:40:26: note: in expansion of macro 'DS1307_CTRL_ID'
   Wire.beginTransmission(DS1307_CTRL_ID);
                          ^~~~~~~~~~~~~~
DS1307.cpp:41:15: error: 'byte' was not declared in this scope
   Wire.write((byte)0x00); // reset register pointer
               ^~~~
DS1307.cpp:44:16: error: 'rtc_bcd' was not declared in this scope
     Wire.write(rtc_bcd[i]);
                ^~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: At global scope:
DS1307.cpp:51:28: error: 'boolean' has not been declared
 void DS1307::get(int *rtc, boolean refresh)   // Aquire data from buffer and convert to int, refresh buffer if required
                            ^~~~~~~
DS1307.cpp:60:24: error: 'boolean' has not been declared
 int DS1307::get(int c, boolean refresh)  // aquire individual RTC item from buffer, return as int, refresh buffer if required
                        ^~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'int DS1307::get(int, int)':
DS1307.cpp:67:13: error: 'rtc_bcd' was not declared in this scope
     v=(10*((rtc_bcd[DS1307_SEC] & DS1307_HI_SEC)>>4))+(rtc_bcd[DS1307_SEC] & DS1307_LO_BCD);
             ^~~~~~~
In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:34:24: error: 'B01110000' was not declared in this scope
 #define DS1307_HI_SEC  B01110000
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:67:35: note: in expansion of macro 'DS1307_HI_SEC'
     v=(10*((rtc_bcd[DS1307_SEC] & DS1307_HI_SEC)>>4))+(rtc_bcd[DS1307_SEC] & DS1307_LO_BCD);
                                   ^~~~~~~~~~~~~
DS1307_1.h:31:24: error: 'B00001111' was not declared in this scope
 #define DS1307_LO_BCD  B00001111
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:67:78: note: in expansion of macro 'DS1307_LO_BCD'
     v=(10*((rtc_bcd[DS1307_SEC] & DS1307_HI_SEC)>>4))+(rtc_bcd[DS1307_SEC] & DS1307_LO_BCD);
                                                                              ^~~~~~~~~~~~~
DS1307_1.h:36:24: error: 'B00110000' was not declared in this scope
 #define DS1307_HI_HR   B00110000
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:73:34: note: in expansion of macro 'DS1307_HI_HR'
     v=(10*((rtc_bcd[DS1307_HR] & DS1307_HI_HR)>>4))+(rtc_bcd[DS1307_HR] & DS1307_LO_BCD);
                                  ^~~~~~~~~~~~
DS1307_1.h:37:24: error: 'B00000111' was not declared in this scope
 #define DS1307_LO_DOW  B00000111
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:76:29: note: in expansion of macro 'DS1307_LO_DOW'
     v=rtc_bcd[DS1307_DOW] & DS1307_LO_DOW;
                             ^~~~~~~~~~~~~
DS1307_1.h:40:24: error: 'B11110000' was not declared in this scope
 #define DS1307_HI_YR   B11110000
                        ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:85:34: note: in expansion of macro 'DS1307_HI_YR'
     v=(10*((rtc_bcd[DS1307_YR] & DS1307_HI_YR)>>4))+(rtc_bcd[DS1307_YR] & DS1307_LO_BCD)+DS1307_BASE_YR;
                                  ^~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'void DS1307::set(int, int)':
DS1307.cpp:99:17: error: 'rtc_bcd' was not declared in this scope
       int state=rtc_bcd[DS1307_SEC] & DS1307_CLOCKHALT;
                 ^~~~~~~
In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:29:26: error: 'B10000000' was not declared in this scope
 #define DS1307_CLOCKHALT B10000000
                          ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:99:39: note: in expansion of macro 'DS1307_CLOCKHALT'
       int state=rtc_bcd[DS1307_SEC] & DS1307_CLOCKHALT;
                                       ^~~~~~~~~~~~~~~~
DS1307.cpp:106:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_MIN]=((v / 10)<<4) + (v % 10);
       ^~~~~~~
V13b:109:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char msg_00[]="LCD ALARM CLOCK\nDeveloped by:\nDr.Liu 02/28/12\nhttp://liudr.wordpress.com";
         ^~~~~~~~~
         putchar
DS1307.cpp:113:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_HR]=((v / 10)<<4) + (v % 10);
       ^~~~~~~
V13b:110:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char msg_01[]="Up - Defere alarm\nDown - Disable ALL alarms ON/OFF\nLeft - Blank' ON/OFFRight - Light ON/OFFEnter - SLEEP";
         ^~~~~~~~~
         putchar
DS1307.cpp:119:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_DOW]=v;
       ^~~~~~~
V13b:112:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_00[]="JAN";
         ^~~~~~~~~
         putchar
DS1307.cpp:125:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_DATE]=((v / 10)<<4) + (v % 10);
       ^~~~~~~
V13b:113:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_01[]="FEB";
         ^~~~~~~~~
         putchar
DS1307.cpp:131:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_MTH]=((v / 10)<<4) + (v % 10);
       ^~~~~~~
V13b:114:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_02[]="MAR";
         ^~~~~~~~~
         putchar
DS1307.cpp:137:7: error: 'rtc_bcd' was not declared in this scope
       rtc_bcd[DS1307_YR]=((v / 10)<<4) + (v % 10);
       ^~~~~~~
V13b:115:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_03[]="APR";
         ^~~~~~~~~
         putchar
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: At global scope:
DS1307.cpp:144:24: error: 'int DS1307::min_of_day' is not a static data member of 'class DS1307'
 int DS1307::min_of_day(boolean refresh)
                        ^~~~~~~
DS1307.cpp:144:24: error: 'boolean' was not declared in this scope
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:144:24: note: suggested alternative: 'bool'
 int DS1307::min_of_day(boolean refresh)
                        ^~~~~~~
                        bool
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'void DS1307::stop()':
DS1307.cpp:156:4: error: 'rtc_bcd' was not declared in this scope
    rtc_bcd[DS1307_SEC]=rtc_bcd[DS1307_SEC] | DS1307_CLOCKHALT;
    ^~~~~~~
V13b:116:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_04[]="MAY";
         ^~~~~~~~~
         putchar
In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:29:26: error: 'B10000000' was not declared in this scope
 #define DS1307_CLOCKHALT B10000000
                          ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:156:46: note: in expansion of macro 'DS1307_CLOCKHALT'
    rtc_bcd[DS1307_SEC]=rtc_bcd[DS1307_SEC] | DS1307_CLOCKHALT;
                                              ^~~~~~~~~~~~~~~~
V13b:117:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_05[]="JUN";
         ^~~~~~~~~
         putchar
V13b:118:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_06[]="JUL";
         ^~~~~~~~~
         putchar
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: In member function 'void DS1307::start()':
DS1307.cpp:164:4: error: 'rtc_bcd' was not declared in this scope
    rtc_bcd[DS1307_SEC]=rtc_bcd[DS1307_SEC] ^ DS1307_CLOCKHALT; ;
    ^~~~~~~
V13b:119:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_07[]="AUG";
         ^~~~~~~~~
         putchar
In file included from /home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:10:0:
DS1307_1.h:29:26: error: 'B10000000' was not declared in this scope
 #define DS1307_CLOCKHALT B10000000
                          ^
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp:164:46: note: in expansion of macro 'DS1307_CLOCKHALT'
    rtc_bcd[DS1307_SEC]=rtc_bcd[DS1307_SEC] ^ DS1307_CLOCKHALT; ;
                                              ^~~~~~~~~~~~~~~~
V13b:120:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_08[]="SEP";
         ^~~~~~~~~
         putchar
V13b:121:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_09[]="OCT";
         ^~~~~~~~~
         putchar
V13b:122:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_10[]="NOV";
         ^~~~~~~~~
         putchar
V13b:123:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char month_11[]="DEC";
         ^~~~~~~~~
         putchar
V13b:124:33: error: variable 'month_items' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                 ^
V13b:124:37: error: 'month_00' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                     ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:37: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                     ^~~~~~~~
                                     month_items
V13b:124:46: error: 'month_01' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                              ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:46: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                              ^~~~~~~~
                                              month_items
V13b:124:55: error: 'month_02' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                       ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:55: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                       ^~~~~~~~
                                                       month_items
V13b:124:64: error: 'month_03' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:64: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                ^~~~~~~~
                                                                month_items
V13b:124:73: error: 'month_04' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                         ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/DS1307.cpp: At global scope:
DS1307.cpp:168:28: error: variable or field 'get_sram_data' declared void
 void DS1307::get_sram_data(byte *sram_data)
                            ^~~~
DS1307.cpp:168:28: error: 'byte' was not declared in this scope
DS1307.cpp:168:34: error: 'sram_data' was not declared in this scope
 void DS1307::get_sram_data(byte *sram_data)
                                  ^~~~~~~~~
DS1307.cpp:182:28: error: variable or field 'set_sram_data' declared void
 void DS1307::set_sram_data(byte *sram_data)
                            ^~~~
DS1307.cpp:182:28: error: 'byte' was not declared in this scope
DS1307.cpp:182:34: error: 'sram_data' was not declared in this scope
 void DS1307::set_sram_data(byte *sram_data)
                                  ^~~~~~~~~
DS1307.cpp:195:1: error: 'byte' does not name a type
 byte DS1307::get_sram_byte(int p)
 ^~~~
DS1307.cpp:205:28: error: variable or field 'set_sram_byte' declared void
 void DS1307::set_sram_byte(byte b, int p)
                            ^~~~
DS1307.cpp:205:28: error: 'byte' was not declared in this scope
DS1307.cpp:205:36: error: expected primary-expression before 'int'
 void DS1307::set_sram_byte(byte b, int p)
                                    ^~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:73: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                         ^~~~~~~~
                                                                         month_items
V13b:124:82: error: 'month_05' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                  ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:82: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                  ^~~~~~~~
                                                                                  month_items
V13b:124:91: error: 'month_06' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                           ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:91: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                           ^~~~~~~~
                                                                                           month_items
V13b:124:100: error: 'month_07' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                    ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:100: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                    ^~~~~~~~
                                                                                                    month_items
V13b:124:109: error: 'month_08' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                             ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:109: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                             ^~~~~~~~
                                                                                                             month_items
V13b:124:118: error: 'month_09' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                      ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:118: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                      ^~~~~~~~
                                                                                                                      month_items
V13b:124:127: error: 'month_10' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                               ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:127: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                               ^~~~~~~~
                                                                                                                               month_items
V13b:124:136: error: 'month_11' was not declared in this scope
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                                        ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:124:136: note: suggested alternative: 'month_items'
 PROGMEM const char *month_items[]= {month_00,month_01,month_02,month_03,month_04,month_05,month_06,month_07,month_08,month_09,month_10,month_11};
                                                                                                                                        ^~~~~~~~
                                                                                                                                        month_items
V13b:126:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_00[]="SUN";
         ^~~~~~~~~
         putchar
V13b:127:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_01[]="MON";
         ^~~~~~~~~
         putchar
V13b:128:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_02[]="TUE";
         ^~~~~~~~~
         putchar
V13b:129:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_03[]="WED";
         ^~~~~~~~~
         putchar
V13b:130:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_04[]="THU";
         ^~~~~~~~~
         putchar
V13b:131:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_05[]="FRI";
         ^~~~~~~~~
         putchar
V13b:132:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char dow_06[]="SAT";
         ^~~~~~~~~
         putchar
V13b:133:31: error: variable 'dow_items' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                               ^
V13b:133:35: error: 'dow_00' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                   ^~~~~~
V13b:133:42: error: 'dow_01' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                          ^~~~~~
V13b:133:49: error: 'dow_02' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                                 ^~~~~~
V13b:133:56: error: 'dow_03' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                                        ^~~~~~
V13b:133:63: error: 'dow_04' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                                               ^~~~~~
V13b:133:70: error: 'dow_05' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                                                      ^~~~~~
V13b:133:77: error: 'dow_06' was not declared in this scope
 PROGMEM const char *dow_items[]= {dow_00,dow_01,dow_02,dow_03,dow_04,dow_05,dow_06};
                                                                             ^~~~~~
V13b:135:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char alarm_00[]="Off";
         ^~~~~~~~~
         putchar
V13b:136:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char alarm_01[]="Daily";
         ^~~~~~~~~
         putchar
V13b:137:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char alarm_02[]="Weekday";
         ^~~~~~~~~
         putchar
V13b:138:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char alarm_03[]="Weekend";
         ^~~~~~~~~
         putchar
V13b:139:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char alarm_04[]="Once";
         ^~~~~~~~~
         putchar
V13b:140:33: error: variable 'alarm_items' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                 ^
V13b:140:37: error: 'alarm_00' was not declared in this scope
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                     ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:140:37: note: suggested alternative: 'alarm_items'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                     ^~~~~~~~
                                     alarm_items
V13b:140:46: error: 'alarm_01' was not declared in this scope
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                              ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:140:46: note: suggested alternative: 'alarm_items'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                              ^~~~~~~~
                                              alarm_items
V13b:140:55: error: 'alarm_02' was not declared in this scope
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                       ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:140:55: note: suggested alternative: 'alarm_items'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                       ^~~~~~~~
                                                       alarm_items
V13b:140:64: error: 'alarm_03' was not declared in this scope
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                                ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:140:64: note: suggested alternative: 'alarm_items'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                                ^~~~~~~~
                                                                alarm_items
V13b:140:73: error: 'alarm_04' was not declared in this scope
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                                         ^~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:140:73: note: suggested alternative: 'alarm_items'
 PROGMEM const char *alarm_items[]= {alarm_00,alarm_01,alarm_02,alarm_03,alarm_04};
                                                                         ^~~~~~~~
                                                                         alarm_items
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino: In function 'void show_credit()':
V13b:283:23: error: 'msg_00' was not declared in this scope
   myLongMsg.ptr.msg_P=msg_00;           // Assign the address of the text string to the pointer.
                       ^~~~~~
/home/me/Arduino/Alarm_Clock/V13b/V13b.ino:283:23: note: suggested alternative: 'msg_lcd'
   myLongMsg.ptr.msg_P=msg_00;           // Assign the address of the text string to the pointer.
                       ^~~~~~
                       msg_lcd
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino: At global scope:
Example_menu:28:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item00[]="Display clock";
         ^~~~~~~~~
         putchar
Example_menu:29:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item01[]="List alarms";
         ^~~~~~~~~
         putchar
Example_menu:30:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item02[]="Set alarms";
         ^~~~~~~~~
         putchar
Example_menu:31:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item03[]="Adjust time";
         ^~~~~~~~~
         putchar
Example_menu:32:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item04[]="Adj' alarm run time";
         ^~~~~~~~~
         putchar
Example_menu:33:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item05[]="Blanket off time";
         ^~~~~~~~~
         putchar
Example_menu:34:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item06[]="Set skip day";
         ^~~~~~~~~
         putchar
Example_menu:35:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item07[]="Audio flag";
         ^~~~~~~~~
         putchar
Example_menu:36:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item08[]="Show key functions";
         ^~~~~~~~~
         putchar
Example_menu:37:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item09[]="Light run time";
         ^~~~~~~~~
         putchar
Example_menu:38:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item10[]="Blanket run time";
         ^~~~~~~~~
         putchar
Example_menu:39:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item11[]="Test audio outputs";
         ^~~~~~~~~
         putchar
Example_menu:40:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char top_menu_item12[]="Display boot information";
         ^~~~~~~~~
         putchar
Example_menu:41:36: error: variable 'top_menu_items' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                    ^
Example_menu:41:41: error: 'top_menu_item00' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                         ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:41: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                         ^~~~~~~~~~~~~~~
                                         top_menu_items
Example_menu:41:58: error: 'top_menu_item01' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                          ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:58: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                          ^~~~~~~~~~~~~~~
                                                          top_menu_items
Example_menu:41:75: error: 'top_menu_item02' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                           ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:75: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                           ^~~~~~~~~~~~~~~
                                                                           top_menu_items
Example_menu:41:92: error: 'top_menu_item03' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                            ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:92: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                            ^~~~~~~~~~~~~~~
                                                                                            top_menu_items
Example_menu:41:109: error: 'top_menu_item04' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                             ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:109: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                             ^~~~~~~~~~~~~~~
                                                                                                             top_menu_items
Example_menu:41:126: error: 'top_menu_item05' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                              ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:126: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                              ^~~~~~~~~~~~~~~
                                                                                                                              top_menu_items
Example_menu:41:143: error: 'top_menu_item06' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                               ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:143: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                               ^~~~~~~~~~~~~~~
                                                                                                                                               top_menu_items
Example_menu:41:160: error: 'top_menu_item07' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:160: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                ^~~~~~~~~~~~~~~
                                                                                                                                                                top_menu_items
Example_menu:41:177: error: 'top_menu_item08' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                 ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:177: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                 ^~~~~~~~~~~~~~~
                                                                                                                                                                                 top_menu_items
Example_menu:41:194: error: 'top_menu_item09' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                  ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:194: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                  ^~~~~~~~~~~~~~~
                                                                                                                                                                                                  top_menu_items
Example_menu:41:211: error: 'top_menu_item10' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                   ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:211: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                   ^~~~~~~~~~~~~~~
                                                                                                                                                                                                                   top_menu_items
Example_menu:41:228: error: 'top_menu_item11' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                                    ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:228: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                                    ^~~~~~~~~~~~~~~
                                                                                                                                                                                                                                    top_menu_items
Example_menu:41:245: error: 'top_menu_item12' was not declared in this scope
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                                                     ^~~~~~~~~~~~~~~
/home/me/Arduino/Alarm_Clock/V13b/Example_menu.ino:41:245: note: suggested alternative: 'top_menu_items'
 PROGMEM const char *top_menu_items[] = {top_menu_item00, top_menu_item01, top_menu_item02, top_menu_item03, top_menu_item04, top_menu_item05, top_menu_item06, top_menu_item07, top_menu_item08, top_menu_item09, top_menu_item10, top_menu_item11, top_menu_item12};
                                                                                                                                                                                                                                                     ^~~~~~~~~~~~~~~
                                                                                                                                                                                                                                                     top_menu_items
/home/me/Arduino/Alarm_Clock/V13b/My_routines.ino: In function 'void show_keys()':
My_routines:486:23: error: 'msg_01' was not declared in this scope
   myLongMsg.ptr.msg_P=msg_01;             // Assign the address of the text string to the pointer.
                       ^~~~~~
/home/me/Arduino/Alarm_Clock/V13b/My_routines.ino:486:23: note: suggested alternative: 'msg_lcd'
   myLongMsg.ptr.msg_P=msg_01;             // Assign the address of the text string to the pointer.
                       ^~~~~~
                       msg_lcd
Multiple libraries were found for "LiquidCrystal.h"
 Used: /home/me/Arduino/libraries/LiquidCrystal
 Not used: /snap/arduino/85/libraries/LiquidCrystal
Multiple libraries were found for "Wire.h"
 Used: /home/me/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.5/libraries/Wire
 Not used: /home/me/Arduino/libraries/Wire
exit status 1
'boolean' has not been declared


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

V13b.zip (21.8 KB)

Other_libraries.zip (160.6 KB)

it's seems that the placement of the library is wrong. Please install the library to the arduino libraries folder.

1 Like

Errors that show missing essentials, like the definition of boolean point to "built-in" files not being found, for example, Arduino.h might not be inside your sketch, but is automatically included so "setup()" and "loop()" do not need to include "Arduino.h" written in the sketch. "Missing" means, your compiler did not find the file in any of the usual locations. Also, if your compiler finds the new version of a library file (for example, Wire.h), it is very likely the library has been updated, causing your declarations to not have the new "language" of the new library file. "Wire.h" is another built-in library.

Two approaches come to mind:

  1. Rewrite the sketches - update each sketch to use the newest library files and their keywords.
  2. Find the old library files - to include Arduino.h, Wire.h, and some very buried library files (includes inside includes inside includes... et c.).

I would pick #1.

This is in ds1307_1.h

//#include "arduino.h"  //  removed 2022 10 09  (Duplicate)

The date in the comment does not fit the timescale that you describe in your post but the fact that arduino.h is commented out does fit the type of errors that you are seeing

2 Likes

Thanks all.

Yes it may be time for me to start again from scratch. (no pun intended)

Please understand I am not trying to be difficult but I am sort of blind sided by how this used to work (right or wrong) and now doesn't.

I've started the new program and this is what I have so far:

/*
      For laptop:  Uno on com port 3.  Left side USB front.
*/

#define version_ "100"

#define phi_2_shield
#include <LiquidCrystal.h>
#include <Wire.h>
#include <stdio.h>
#include <avr/pgmspace.h>
#include <EEPROM.h>
#include <phi_interfaces.h>
#include <phi_prompt.h>
#include <phi_big_font.h>
#include <DS1307_1.h> 
#include <alarm_clock.h>
#include <Centipede.h>
#include <Arduino.h>
#include <Wire.h> 

/*
  Here is where you set up which "style" of outputs you want.
  As I have included an MCP IC on my build, the outputs are
  specific to me.
  People who don't have this chip need to change the pins.
  To make it easier, they are DEFINED below.
*/

// This is used to set if the blanket is also turned off when an alarm goes off.
//  If 0 nothing happens.
//  Set to 1 and when an alarm goes off, the blanket will be turned off also.
#define ABO 0


#define turn_light_on() CS.digitalWrite(1,HIGH)
#define turn_light_off() CS.digitalWrite(1,LOW)
//  Alternatively:
//  #define turn_light_on() digitalWrite(16,HIGH)
//  #define turn_light_off() digitalWrite(16,Low)

#define turn_blanket_on() CS.digitalWrite(0,HIGH)
#define turn_blanket_off() CS.digitalWrite(0,LOW)
//  Alternativley:
//  #define turn_blanket_on() digitalWrite(17,HIGH)
//  #define turn_blanket_off() digitalWrite(17,Low)





void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

So basically: nothing.

But when I try to compile it:

/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp:87:9: error: 'prog_char' does not name a type; did you mean 'putchar'?
 PROGMEM prog_char phi_prompt_lcd_ch0[]={ 4,14,31,64,31,31,31,31,0}; ///< Custom LCD character: Up triangle with block
         ^~~~~~~~~
         putchar

So the library worked. Why would it now suddenly need to have its internal commands/structure changed?
from prog_char to putchar?
(though I may not have read the error correctly.

And - of course - there are a lot more of the same sort of error because of all the iterations of similar lines.

And sorry something else:
arduino.h vs Arduino.h

I'm guessing it is the latter as I did it the first way and it errored saying library not found and looking at some of the replies when it is mentioned it is spelt with a capitol A.

(I think it was negated from the code - and put back - because at some stage back then there was a claim that the new way didn't need it and it was now built in. Yes, ok if I didn't upgrade the IDE I wouldn't have got it built in.... But... That comes to mind when thinking about the story of what was going on there with it.)

Ok, just to help show how dumb I am:
I haven't updated all libraries.

It has been a LONG time since I've done this sort of stuff.

I open the IDE, go to the library manager and open it.
Then look for UPDATABLE libraries.

Some of the ones I am using aren't shown. Fair enough if they haven't been updated.
the phi_prompt, phi_interfaces etc.... Looking I see there has been activity on the 6 years back for some.

Sorry.... I am dumb. I admit it.

I think if I can get the basics worked out, I can get the code rewritten by myself.
I have moved onto Javascript code now and though they are different beasts, my coding has improved a bit.
I won't say a lot, as that would be being arrogant. I don't think I am a good programmer yet, but I am better than I was back then.

A bit of googling can always help :slight_smile: error: 'prog_char' does not name a type

I suspect that that is because you downloaded the from github and did not install via the library manager because they were not there in the first place.

On the latter part:
I am not sure. It was early days for me and the arduino.

How I installed them is beyond me at this point.

The link you gave is good. But only if you understand the language.
I am seeing/hearing myself saying more and more these days:
Instructions these days are written for people who already know the answer and not for people who don't
(no offense)

But this is the important part - as I see it:

As you can see in [this ](avr-libc: AVR Libc
/group__avr__pgmspace.html#gaa475b6b81fd8b34de45695da1da523b6) link, prog_char is an old, > deprecated type.

The correct type is [PGM_P ](avr-libc: AVR Libc
/group__avr__pgmspace.html#ga963f816fc88a5d8479c285ed4c630229)
, which replaces const
prog_char
*.

Try replacing that line with:

PGM_P p = (PGM_P)ifsh;

But to me that is a foreign language.

I get it that commands get deprecated and new ones come out.
But I can not understand how to read what the new command is?

And....
Does that mean I have to edit the library?

Taking the idea that I have to go through the process of using the library manager to install the library, I am not making progress.

Indulging me installing the phi_interfaces library......

It isn't shown/listed.
Given the names are listed alphabetically.

So how am I supposed to install it?

You have to download the zip files

  1. Phi_big_font | LiuDr Electronic Solutions LLC Official Blog
  2. GitHub - liudr/phi_prompt: Phi_prompt interactive library developed by Dr. Liu GNU GPL V3.0
  3. GitHub - liudr/phi_interfaces: Phi_interfaces library for sensing all sorts of inputs including buttons, rotary encoders, keypads etc.

Click the green code button and download the zip file.

Next, in the IDE, use sketch → include library → add .ZIP library.

Please make a backup of the existing ones.

This comment is in phi_prompt.h

* 02/12/2015: Removed PROGMEM prog_char and replaced with const char PROGMEM

So I think that the newer versions will solve your problem.

1 Like

SO CLOSE!

Did that and restarted IDE.

Now I get a missing library.

In the phi_interface.h file:


#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <avr/pgmspace.h>
#include <phi_interfaces.h>

LCD.h is a problem.

Not found on my system.

Sorry....

Oh, and another dumb question which I sort of realised when this code happened and I opened the library manager - again.

I download the ZIP file. I leave that lone and go to the IDE, open the library manager and INSTALL FROM ZIP - yes?
Not to do it manually.

== UPDATE ==

Ok, I found LCD.h file and downloaded it.
Where do I put it?

== Getting closer ==

Now with this error:

Arduino: 1.8.19 (Linux), Board: "Arduino Uno"











/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp: In function 'LCD* simple_setup_phi_2(byte, byte)':
/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp:1508:50: error: cannot convert 'LiquidCrystal*' to 'LCD*' in initialization
   static LCD * lcd= new LiquidCrystal(8,9,7,6,2,3);
                                                  ^
exit status 1
Error compiling for board Arduino Uno.


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

If the libraries are old enough, they probably HAD to be manually installed, and don't have the meta-data needed for the IDE to even tell whether there is an update or not.

This sort of thing, where previously working software develops "bit rot" and no longer works (usually do to toolchain changes) is a common problem in the software industry. For example, the version of the Optiboot bootloader included with the Arduino IDE no longer compiles to an executable that fits in the allocated space, due to changes in the compilers used. :frowning:

I kind of get that.

I won't go down with the old version problem.

I hope I am moving forward with what i am doing.

But it is just too confusing for me.

The LCD I am using is directly controlled. Not I2C or SPI.
So I am not getting why I am seeing some problems.
But I am (or seem to be) moving forwards slowly.

Have a look at the examples for the LiquidCrystal library. They declare the lcd variable as

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Adjust the first line to your needs.

Note
I think that you're building it up slowly :+1: Each time that you encounter a new problem, please post the latest version of the sketch so we can see what you're doing.

1 Like

Again, thanks.

It must be frustrating if you know the language watching people like me stumbling along.

I'll see what happens when I change the line.
If things work well, I hope I can build it back quickly. Not wanting to cheat but would I be right in saying that most of the OLD code will/should work with the new build?

== Sorry ==

Dumb question I just noticed:
libraries are supposed to be universal and be able to be used by many different sketches.

So, in this sketch the LCD is drive with the pins defined in the code:
8,9,7,5,2,3

But that line is in the library.
So that locks the library for THAT display and so it can't be used with other/different displays.

To me that goes against what libraries are supposed to do.

Is it, or is it in the sketch, which allows you to pass different pin numbers to the library to match your circuit ?

Well, the line/s that were mentioned are in the library.

My sketch as nothing in it other than the INCLUDE lines.

(I have a new error and am about to post it)

Frustrating is not the right word. Knowing where I came from, it's more a "deja vu" (been there, done that).

The only lines that I can find are variations of

  LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);

I do not see hard coded values if that is what you meant.

Not sure what you mean. That library is for LCDs, not for OLEDs or TFTs.

2 Likes

I edited the library and did as said.

It got rid of that problem, but another one has occurred.

/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp: In function 'LCD* simple_setup_phi_2(byte, byte)':
/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp:1513:6: error: base operand of '->' has non-pointer type 'LiquidCrystal'
   lcd->begin(columns,rows);
      ^~
/home/me/Arduino/libraries/phi_prompt/phi_prompt.cpp:1514:60: error: cannot convert 'LiquidCrystal' to 'LCD*' for argument '1' to 'void init_phi_prompt(LCD*, multiple_button_input**, char**, int, int, char)'
   init_phi_prompt(lcd, keypads, fn_keys, columns, rows, '~');
                                                            ^

There is the other stuff before/after it but for the sake of keeping to the point, I've left those parts out.
Those are more like instructions etc.