Compile error arduino mkr 101 wifi

Hello!

trying to verify my sketch for my project, i out of a sudden recieve the following error:

/home/builder/opt/libraries/latest/m5core2_0_1_5/src/Fonts/Font16.c:10:10: fatal error: pgmspace.h: No such file or directory

#include <pgmspace.h>

**^~~~~~~~~~~~**

compilation terminated.

Error during build: exit status 1

I do not find the #include command with the pgmspace library and i did not put it in my sketch.

please help!
Thank You

Posting the code you were trying to compile might be a good start.
Don’t forget to use triple backticks at the beginning and end of your code so that it displays correctly.
Triple backticks look like this…
```

Pete.

Hi Pete!
Thank You for helping me.
Here is the Code:

// Fill-in information from your Blynk Template here (blanked out)

#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_AUTH_TOKEN ""
////////////////////////////////////////////////////
char ssid[] = "";
char pass[] = "";

#define BLYNK_FIRMWARE_VERSION        "0.2.0"

#define BLYNK_PRINT Serial
#define BLYNK_DEBUG

#define APP_DEBUG

#define DHTPIN 3 //Digitalpin für Temp/Feuchte
#define DHTTYPE DHT22

#include "BlynkEdgent.h"
#include <DHT.h>
#include <DHT_U.h>
#include <math.h>
#include <SPI.h>
#include <RTC.h>
//#include <Time.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
//Arduino Low Power - Version: Latest 
#include <ArduinoLowPower.h>


BlynkTimer timer;
DHT dht(DHTPIN, DHTTYPE);
WidgetTerminal terminal(V0);

const int ON_PIN = 8; //DigitalPin 7 zum Öffnen des Ventils; getauscht 240421
const int OFF_PIN = 7;//Digitalpin 8 zum Schliessen
const int TROCKEN_PIN = 1;//Digitalpin 1 für Regensensor

#define DHTPIN 3 //Digitalpin für Temp/Feuchte
#define DHTTYPE DHT22 



float h; //humidity
float t;//temperature
int valaccu = 0;
float voltage;
int daysselected[7];
String dayname[7] = {"MO", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
String displaycurrenttimepluswifi;
//int TROCKENWERT = 0;
bool evapocrit = false;
String valvestatusoff = "\u274C";
String valvestatuson = "\U0001f6bf";
bool valveon = false;
int rainstartsecs;
int rainstopsecs;
long rainsum;
long raintimeinsecs;
float valvestream;
int area = 10;
int vegetation =1;
int rainvalue = 1;
float watervalue = 0.0;
String sun = "\xE2\x98\x80"; //Symbol sun
String rain = "\U0001f327\uFE0F"; //Symbol rain
String needed ="\U0001F44D";
String notneeded ="\U0001F44E";
float X = 0.29;
String areaname;
double Ew; // Sättigungsdampfdruck
double PT = 0.0; // Potentielle Verdunstung in mm/d
double e; // Dampfdruck der Luft in mbar
double PTSum = 0.0; // Summe potentieller Verdunstung
int critrain;
int critpotEv;
int irrig;

void setup() /////////////////////////////////////////////////////////////////
{
  Serial.begin(9600);
  delay(2000);
   

  BlynkEdgent.begin();
  
  dht.begin(); // Temp/Feuchte
  
  pinMode(A1, INPUT);
  pinMode(ON_PIN, OUTPUT);
  pinMode(OFF_PIN, OUTPUT);
  pinMode(TROCKEN_PIN, INPUT);
  pinMode(2, OUTPUT);  // 5V AN_AUS
  
  timer.setInterval(300000L, temphumidity); //   Abfrage Temp. und Feuchte
  timer.setInterval(15000L, batterycheck); // Battery
  timer.setInterval(2000L, checkCrit); // Criteria
  timer.setInterval(2000L, checkirrig);//irrig?
  timer.setInterval(10000L, raincheck); //Ransensor
  }


///////////Connected///////////////

BLYNK_CONNECTED() {
  Blynk.syncAll();
  RELAIS_OFF();
}

/////AREA/////////

BLYNK_WRITE(V9) {
 area = param.asInt();
 }
 
/////Valve stream ////////

BLYNK_WRITE(V11) {
  valvestream = param.asFloat();
  }
  
/////Vegetation///////////
BLYNK_WRITE(V10) {
  vegetation = param.asInt();
  if (vegetation == 0) {
    X = 0.29;
  }
  else if (vegetation == 1) {
    X = 0.24;
  }
}

/////////Area Name ///////////

BLYNK_WRITE(V12) {
  areaname = param.asString();
}

/////////////Temp and Humidity and Rain/////////////////

void temphumidity() {
  
  digitalWrite(2, HIGH);
  delay(2000);
  h = dht.readHumidity();
  t = dht.readTemperature();
    digitalWrite(2, LOW);
  Blynk.virtualWrite(V20, h);
  Blynk.virtualWrite(V21, t);
  
  if (hour() == 14 && minute() <= 6){ ////////Potentielle Verdunstung///////
   Ew = 6.112 * exp((17.62 * t) / (243.12 + t));
   e = (h/100 * Ew);
   PT = X * (Ew - e);
  // PTSum = PTSum + PT;   
  //Blynk.virtualWrite(V7, PTSum);
  } 
  
}


/////////Battery///////////////////////
void batterycheck() {
  
  valaccu = analogRead(A1);
  voltage = (((valaccu)/1024.0) * 3.3)*4,8;//Correction voltage division
  Blynk.virtualWrite(V2, voltage); // Batt.Status
  }


///////Relais für 250ms an ////////////////////
void RELAIS_ON() {
  if (irrig == 1) {
    digitalWrite(2, HIGH);
    delay(20);
    digitalWrite(ON_PIN, HIGH);
    delay(250); 
    digitalWrite(ON_PIN, LOW);
    Blynk.virtualWrite(V1, 1); //Button
    Blynk.virtualWrite(V5, valvestatuson);// Statussymbol
    terminal.println("VALVE OPEN");
    terminal.flush();
    valveon = true;
    digitalWrite(2, LOW);
    
    
    rainstartsecs = ((hour()*3600) + (minute()*60) + second());
    
  }
  else {
    
    terminal.println("RAIN! / Not Dry >> Valve not opened.");
    Blynk.virtualWrite(V1, 0);
    terminal.flush();
    valveon = false;
    
    
  }
}

//////////RainCheck////////////

void raincheck() {
digitalWrite(2, HIGH);
    delay(20);
rainvalue = digitalRead(TROCKEN_PIN); 
digitalWrite(2, LOW);

if (rainvalue == 1) {
    Blynk.virtualWrite(V6, sun);
  }
    else if (rainvalue == 0) {
    Blynk.virtualWrite(V6, rain);  
    }
}



///////Relais für 63ms an /////////////////////
void RELAIS_OFF() {
  if (valveon == true) {
    digitalWrite(2, HIGH);
    delay(50);
    digitalWrite(OFF_PIN, HIGH);
    delay(63);
    digitalWrite(OFF_PIN, LOW);
    Blynk.virtualWrite(V1, 0); //Button
    Blynk.virtualWrite(V5, valvestatusoff);// Statussymbol
    terminal.println("VALVE CLOSED");
    terminal.flush();
    valveon = false;
    digitalWrite(2, LOW);
    
    
    rainstopsecs = ((hour()*3600) + (minute()*60) + second());
    raintimeinsecs = rainstopsecs - rainstartsecs;
    rainsum = (rainsum + raintimeinsecs);
    //Serial.println(raintimeinsecs);
    //Serial.println(rainsum);
    //Serial.println(watervalue);
    //watervalue = ((rainsum * valvestream) / area);
    //Blynk.virtualWrite(V8, watervalue); //Water consumption
    raintimeinsecs = 0;
    
  }

}


////RESET ///////////// 
  BLYNK_WRITE(V13) {  
  if (param.asInt() == 1) {
  rainsum = 0.0;
  PTSum = 0.0;
  watervalue = 0.0;
  Blynk.virtualWrite(V8, 0.0);
  Blynk.virtualWrite(V7, 0.0);
  }
}

///////////////MANUAL///////////////////////////////////////////////////

BLYNK_WRITE(V1)  // ON-OFF Manual
{
  
  if (param.asInt() == 1) { // boton encendido
    irrig = 1;
    RELAIS_ON();
      }
  else {
    RELAIS_OFF();
           }
           
}   

//////////////CHECKING FOR CRITERIA/////////////////////////////////////////////////

BLYNK_WRITE(V3) { critrain = param.asInt();  }
                  
BLYNK_WRITE(V4) { critpotEv = param.asInt(); } 
                  
                  
/////////////////Checking SmartIrrigation ///////////
void checkCrit() {
  Serial.println(critrain);
  Serial.println(critpotEv);
  Serial.println(watervalue);
  Serial.println(PTSum);
  Serial.println(rainvalue);
  
  watervalue = ((rainsum * valvestream) / area);
  Blynk.virtualWrite(V8, watervalue); //Water consumption
  
  PTSum = PTSum + PT;   
  Blynk.virtualWrite(V7, PTSum);
  
  if ((critrain == 0) && (critpotEv == 0)) { // alle aus
    irrig = 1; // rain go!
  }
  else if (critrain == 0 && critpotEv == 1) { // potEv ein
    if (watervalue <= PTSum) { irrig = 1;}
    else { irrig = 0;}
  }
  else if (critrain == 1 && critpotEv == 0) { // raincrit an
    if (rainvalue == 1) { irrig = 1;}
    else {irrig = 0;}
  }
  else if (critrain == 1 && critpotEv == 1) { // alle an
    if ((rainvalue == 1) && (watervalue <= PTSum)) {
      irrig = 1;}
    else {irrig = 0; }
    
  }
}
 
 void checkirrig() { 
  if (irrig == 0) { 
    Blynk.virtualWrite(V14, notneeded);
      }
   else { 
     Blynk.virtualWrite(V14, needed);
        }
    Blynk.syncVirtual(V14);
    //Serial.println(irrig);
}
           
void loop() { //////////////////////////////////////////////////////////////////////////////
  BlynkEdgent.run();
  timer.run();
  
}

What does your full compilation error say (use triple backticks with this again).

Pete

I’m kinda bored tonight so I did some Googling for you.

As I understand it, font16.c uses PROGMEM (pgmspace.h) for memory handling. According to Arduino Reference it should be called with #include <avr/pgmspace.h> if you have an older IDE.

In font16.c it’s just #include <pgmspace.h> without the avr. Might be worth looking into! :slight_smile:

https://www.arduino.cc/reference/en/language/variables/utilities/progmem/

1 Like

You wrote these lines twice in your sketch:

Oh my… :flushed: Any use of delay()outside setup() is a capital offence and @PeteKnight will put you on his hit list! :smiley:

This is the longest, but I suggest you remove all your delays and let the timers do their job.

Hi Pete

/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Time -I/home/builder/opt/libraries/latest/arduino_low_power_1_2_2/src -I/home/builder/opt/libraries/latest/rtczero_1_6_0/src /home/builder/opt/libraries/latest/m5core2_0_1_5/src/Fonts/Font16.c -o /dev/null

Alternatives for pgmspace.h: []

ResolveLibrary(pgmspace.h)

-> candidates: []

Multiple libraries were found for "SPI.h"

Used: /home/builder/.arduino15/packages/arduino/hardware/samd/1.8.13/libraries/SPI

Not used: /home/builder/opt/libraries/eventethernet_1_0_0

Multiple libraries were found for "Blynk.h"

Used: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Blynk

Not used: /home/builder/opt/libraries/blynk_for_chinese_0_5_9

Not used: /home/builder/opt/libraries/blynk_1_1_0

Multiple libraries were found for "DHT.h"

Used: /home/builder/opt/libraries/dht118266_1_0_16

Not used: /home/builder/opt/libraries/esp826611_1_0_16

Not used: /home/builder/opt/libraries/dht11esp8266_1_0_10

Not used: /home/builder/opt/libraries/dht11esp8266examples_1_0_10

Not used: /home/builder/opt/libraries/grove_temperature_and_humidity_sensor_2_0_1

Not used: /home/builder/opt/libraries/servodht11_1_0_10

Not used: /home/builder/opt/libraries/dht_sensor_library_1_4_4

Not used: /home/builder/opt/libraries/nanoplayboard_0_1_1

Not used: /home/builder/opt/libraries/ukit_explore_1_2_15

Multiple libraries were found for "RTC.h"

Used: /home/builder/opt/libraries/m5core2_0_1_5

Not used: /home/builder/opt/libraries/m5stickc_0_2_8

Not used: /home/builder/opt/libraries/m5stickcplus_0_0_8

Not used: /home/builder/opt/libraries/m5station_0_0_1

Multiple libraries were found for "FlashStorage.h"

Used: /home/builder/opt/libraries/flashstorage_1_0_0

Not used: /home/builder/opt/libraries/konnektingflashstorage_1_0_1

Multiple libraries were found for "Adafruit_Sensor.h"

Used: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Adafruit Unified Sensor

Not used: /home/builder/opt/libraries/adafruit_unified_sensor_1_1_7

Not used: /home/builder/opt/libraries/arduav_1_4_2

Multiple libraries were found for "TimeLib.h"

Used: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Time

Not used: /home/builder/opt/libraries/time_1_6_1

Not used: /home/builder/opt/libraries/esp32_control_1_2_8

Not used: /home/builder/opt/libraries/dfrobot_oled12864_1_0_0

Using library SPI at version 1.0 in folder: /home/builder/.arduino15/packages/arduino/hardware/samd/1.8.13/libraries/SPI

Using library wifinina_1_8_13 at version 1.8.13 in folder: /home/builder/opt/libraries/wifinina_1_8_13

Using library Blynk at version 1.0.1 in folder: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Blynk

Using library flashstorage_1_0_0 at version 1.0.0 in folder: /home/builder/opt/libraries/flashstorage_1_0_0

Using library Timer5 at version 1.0.0 in folder: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Timer5

Using library arduinoota_1_0_9 at version 1.0.9 in folder: /home/builder/opt/libraries/arduinoota_1_0_9

Using library dht118266_1_0_16 at version 1.0.16 in folder: /home/builder/opt/libraries/dht118266_1_0_16

Using library Adafruit Unified Sensor at version 1.1.4 in folder: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Adafruit Unified Sensor

Using library m5core2_0_1_5 at version 0.1.5 in folder: /home/builder/opt/libraries/m5core2_0_1_5

Using library Wire at version 1.0 in folder: /home/builder/.arduino15/packages/arduino/hardware/samd/1.8.13/libraries/Wire

Using library Time at version 1.6 in folder: /mnt/create-efs/webide/68/5e/685e608950cad26bf4c95f143695aa20:tommehr/libraries_v2/Time

Using library arduino_low_power_1_2_2 at version 1.2.2 in folder: /home/builder/opt/libraries/arduino_low_power_1_2_2

Using library rtczero_1_6_0 at version 1.6.0 in folder: /home/builder/opt/libraries/rtczero_1_6_0

/home/builder/opt/libraries/latest/m5core2_0_1_5/src/Fonts/Font16.c:10:10: fatal error: pgmspace.h: No such file or directory

#include <pgmspace.h>

^~~~~~~~~~~~

compilation terminated.

Error during build: exit status 1

Thank You distans!

the problem with your sketch is not a problem with Blynk. you use many libraries and some of them has that error (maybe WidgetRTC)

Hi folks
found, that rtc.h was the problem. i hope i dont need it using widgetRTC instead.
Thanks

Non of this is needed in Blynk IoT
You should read the documentation about how to use RTC in Blynk IoT.

Pete.