Arduino fout melding

Goedemorgen CO'ers

Na het handmatig toevoegen van een library krijg ik de volgende melding:

c code:

C:\Users\jeffr\Documents\Arduino\Confetti_timer_230416\Confetti_timer_230416.ino: In function 'void setup()':
C:\Users\jeffr\Documents\Arduino\Confetti_timer_230416\Confetti_timer_230416.ino:100:13: error: no matching function for call to 'LiquidCrystal_I2C::begin()'
   lcd.begin();
             ^
In file included from C:\Users\jeffr\Documents\Arduino\Confetti_timer_230416\Confetti_timer_230416.ino:18:0:
C:\Users\jeffr\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note: candidate: void LiquidCrystal_I2C::begin(uint8_t, uint8_t, uint8_t)
   void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
        ^~~~~
C:\Users\jeffr\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note:   candidate expects 3 arguments, 0 provided

exit status 1

Compilation error: no matching function for call to 'LiquidCrystal_I2C::begin()'

De library heb ik hier gedownload: https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c

Onderstaand de code uit het programma, wat gaat er fout? Ik begrijp het niet..

c code:



/*
TIMER ARDUINO

Questo progetto è di libero utilizzo, basta che venga citato il programmatore. 
Programmatore Firmware: Tartaglia daniele
sito: www.labdomotic.com
email: edstarink@fastwebnet.it
Youtube channel: https://www.youtube.com/channel/UCwMjr5HocO6S363x_-jzsmA
Facebook: https://www.facebook.com/daniele.tartaglia.73?ref=bookmarks
 */



#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display

#define encoder0PinA  2
#define encoder0PinB  3


volatile int encoder0Pos = 4;
volatile boolean PastB = 0;
volatile boolean update = false;

int contatoreFineTempo;
int lastButtonState = 0;
// ------------------------++++++++++++++++++++++   ENCODER
int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;
volatile long encoderValue2 = 0;
volatile long encoderValue3 = 0;

long lastencoderValue = 0;
long lastencoderValue2 = 0;
long lastencoderValue3 = 7;

int lastMSB = 0;
int lastLSB = 0;

// ------------------------++++++++++++++++++++++
int ore = 45;
int minuti = 5;
int secondi = 6;



//---------  timer variabili

int buzzer = 7;           //PIEDINO DEL BUZZER
int rele = 6;
int secondiTotali = 0;     //Tempo totale
int msg = 0;
int reset = 0;
int start = A6;            //Pulsador de arranque
int empieza = 1024;        // Variable para almacenaje del pulsador de arranque


// assegnazione ingressi per i due pulsanti start e encoder
int pushButton = 4;
int pushButtonSTART = 5;



int pushButtonSTARTstate = 0;


int timeHOLD;
int timeSEC = 0;
int HorMinSec = 0;
int step_funzione = 0;


// Grafica per clessidra e cursore
uint8_t testChar[8] = {0x1F, 0x17, 0x1B, 0x1D, 0x1D, 0x1B, 0x17, 0x1F,};
uint8_t testClessidra[8] = {0x1F, 0x11, 0x0A, 0x04, 0x04, 0x0E, 0x1F, 0x1F,};


/*
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                            VOID  SETUP                    VOID  SETUP
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*/


void setup() {

  lcd.begin();
  Serial.begin(9600);
  Serial.begin(9600);
  pinMode(pushButton, INPUT); // dichiara che il "pushButton" è un input:
  pinMode(pushButtonSTART, INPUT);
  pinMode(start, INPUT);    //Pin de pulsador de arranque --> Entrada

  pinMode(encoder0PinA, INPUT);
  pinMode(encoder0PinB, INPUT);

  digitalWrite(encoder0PinB, HIGH);
  digitalWrite(encoder0PinA, HIGH);
  int pushButtonSTARTstate = HIGH;   //  RESISTENZA PULL UP DEL PULSANTE  START
  attachInterrupt(1, doEncoderB, FALLING);



  // CARICAMENTO dei valori temporali (ore, minuti, secondi)
 
  lastencoderValue3 = EEPROM.read(1);
  encoderValue3 = EEPROM.read(1);
  lastencoderValue2 = EEPROM.read(2);
  encoderValue2 = EEPROM.read(2);
  lastencoderValue = EEPROM.read(3);
  encoderValue = EEPROM.read(3);


// portare i resitori interni a pull up

  pinMode(encoderPin1, INPUT_PULLUP);
  pinMode(encoderPin2, INPUT_PULLUP);
  pinMode(pushButtonSTART, INPUT_PULLUP);
  pinMode(pushButtonSTARTstate, INPUT_PULLUP);
  pinMode(pushButton, INPUT_PULLUP);

  digitalWrite(pushButton, HIGH);  // forza il pin  a livello alto sfruttando la resistenza di pull-up interna ad arduino
 
  pinMode(buzzer, OUTPUT);  
  pinMode(rele, OUTPUT);   


 // presentazione iniziale
 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Timer Arduino");
  lcd.setCursor(0, 1);
  lcd.print("D.T Channel");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Vers. Firmware");
  lcd.setCursor(0, 1);
  lcd.print("Beta 0.1");
  delay(2000);
  lcd.clear();



  msg = 0;                
  empieza = 1024;           

// CREAZIONE DEI DUE CARATTERI CUSTOM

  lcd.createChar(0, testChar); // Sends the custom char to lcd
  lcd.createChar(1, testClessidra); // Sends the custom char to lcd

}

/*
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                            VOID loop                    VOID  loop
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*/


void loop() {
  lcd.setCursor(0, 1);
  lcd.print((char)1);  // STAMPA LA CLESSIDRA


  if (update) {
    update = false;
    PastB ? encoder0Pos++ : encoder0Pos--;


  }


  //  ore minuti secondi
  ore = lastencoderValue;
  minuti = lastencoderValue2;
  secondi = lastencoderValue3;




  switch (step_funzione) {
    case 0:    // STATO INIZIALE
      INIZIO();
      break;
    case 1:    // VAI ALLA FUNZIONE: EDIT TEMPO
      EDIT_TEMPO();

      break;
    case 2:    // VAI ALLA FUNZIONE: CONTO ALLA ROVESCIA
      COUNT_DOWN();
      break;
    case 3:    // VAI ALLA FUNZIONE: TEMPO SCADUTO
      TEMPO_SCADUTO();
      break;
  }
}


//---------------------- ---------------------- ---------------------- ----------------------
//---------------------- FUNZIONE: INIZIO ---------------------- ----------------------------
//---------------------- ---------------------- ---------------------- ----------------------

void INIZIO() {
  lcd.setCursor(0, 0);
  lcd.print("   PREMI START  ");
  lcd.setCursor(0, 1);


  lcd.setCursor(4, 1);
  if (ore < 10) lcd.print("0");     // SE LE ORE SONO MENO DI 10, SCRIVI LO ZERO A SINISTRA.
  lcd.print(ore);                   // STAMPA LE ORE
  lcd.print(":");                   // STAMPA I DUE PUNTI

  if (minuti < 10) lcd.print("0");  // SE I MINUTI SONO MENO DI 10, SCRIVI LO ZERO A SINISTRA.
  lcd.print(minuti);                // STAMPA I MINUTI
  lcd.print(":");                   // STAMPA I DUE PUNTI

  if (secondi < 10) lcd.print("0");  // SE I SECONDI SONO MENO DI 10, SCRIVI LO ZERO A SINISTRA.
  lcd.print(secondi);                // STAMPA I SECONDI



  //  VAI A SETTA TEMPO - - - - - - - - - - - - - - - - - - -


  int buttonState = digitalRead(pushButton);  //// PER ACCEDERE AL MENU EDITOR CON IL MANTENIMENTO DEL PULSANTE ENCODER
  if (buttonState == LOW) {
    delay (1000);
    Serial.println(timeSEC);
    timeSEC++;
  }
  else {
    timeSEC = 0; //  AZZERAMENTO VARIABILE SEI SECONDI
  }
  delay(100);

  if (timeSEC >= 2) {   //   VAI A EDITOR

    lcd.clear();
    timeSEC = 0;
    step_funzione = 1;
  }


  //// ALLA PRESSIONE DEL PULSANTE START, VAI ALLA FUNZIONE: COUNT DOWN

  int pushButtonSTARTstate = digitalRead(pushButtonSTART);
  if (pushButtonSTARTstate == LOW) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Partenza tempo");
    lcd.clear();
    timeSEC = 0;
    secondiTotali = secondi + (minuti * 60) + (ore * 60 * 60);  //Convierte el tiempo elegido en segundos!!
    digitalWrite (rele, HIGH);
    step_funzione = 2;
  }
}

//---------------------- ---------------------- ---------------------- ----------------------
//---------------------- FUNZIONE: EDIT TEMPO ---------------------- ------------------------
//---------------------- ---------------------- ---------------------- ----------------------

void EDIT_TEMPO() {

  lcd.setCursor(0, 1);
  lcd.print("h");
  lcd.setCursor(1, 1);
  if (encoderValue < 10) lcd.print("0");
  if (encoderValue < 0) {
    encoderValue = 0;
    encoder0Pos = 0;
  }

  if (timeSEC >= 2) {
    lcd.clear();
    timeSEC = 0;
    HorMinSec = 0;
    step_funzione = 0;

  }

  if (HorMinSec >= 3) HorMinSec = 0;   //// AZZERA LA VARIABILE PER LO STEP  ORA MINUTI  SECONDI.


  //  FAI IN MODO CHE L' ENCODER NON SUPERI I 59

  if (encoderValue > 59) {
    encoderValue = 59;
    encoder0Pos = 59;
  }
  lcd.print(encoderValue, DEC);
  lcd.print(":");
  // -------------------------------------------------------------

  lcd.setCursor(4, 1);
  lcd.print("m");
  if (encoderValue2 < 10) lcd.print("0");
  if (encoderValue2 < 0) {
    encoderValue2 = 0;
    encoder0Pos = 0;
  }
  if (encoderValue2 > 59) {
    encoderValue2 = 59;
    encoder0Pos = 59;
  }

  lcd.print(encoderValue2, DEC);
  lcd.print(":");

  // -------------------------------------------------------------

  lcd.setCursor(8, 1);
  lcd.print("s");
  if (encoderValue3 < 10) lcd.print("0");
  if (encoderValue3 < 0) {
    encoderValue3 = 0;
    encoder0Pos = 0;
  }
  if (encoderValue3 > 59) {
    encoderValue3 = 59;
    encoder0Pos = 59;
  }

  lcd.print(encoderValue3, DEC);
  lcd.print(" ");

  // VISUALIZZA LO STATO SE STIAMO SETTANDO LE ORE, I MINUTI OPPURE I SECONDI

  switch (HorMinSec) {
    case 0:    // ore
      lcd.setCursor(0, 0);
      lcd.print("Set ora");
      lcd.setCursor(0, 1);
      lcd.print((char)0);

      break;
    case 1:    // minuti
      lcd.setCursor(0, 0);
      lcd.print("Set minuti");
      lcd.setCursor(4, 1);
      lcd.print((char)0);
      break;

    case 2:    // secondi
      lcd.setCursor(0, 0);
      lcd.print("Set secondi");
      lcd.setCursor(8, 1);
      lcd.print((char)0);
      break;

    case 3:    // funzione  eccitazione / diseccitazione
      // lcd.setCursor(0, 0);
      // lcd.print("Set funzione");
      // lcd.setCursor(8, 1);
      // lcd.print((char)0);

      break;
  }


  //  PASSA DA ORE A MINUTI A SECONDI QUANDO SI PREME IL PULSANTE DEL' ENCODER

  int buttonState = digitalRead(pushButton);
  if (buttonState != lastButtonState)
    if (buttonState == LOW)
    { HorMinSec++;
      lcd.clear();
    }
  delay(100);
  lastButtonState = buttonState;



  // ESCI DALLA FUNZIONE EDITOR TEMPI PER ANDARE AD INIZIO CON IL TEMPO AGGIORNATO AL' EDITOR

  int pushButtonSTARTstate = digitalRead(pushButtonSTART);
  if (pushButtonSTARTstate == LOW)
  {

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Partenza tempo");
    lcd.clear();
    timeSEC = 0;
    lastencoderValue3 = encoderValue3;
    lastencoderValue2 = encoderValue2;
    lastencoderValue = encoderValue;

    EEPROM.write(1, lastencoderValue3);  // salvataggio su slot il valore
    EEPROM.write(2, lastencoderValue2);  // salvataggio su slot il valore
    EEPROM.write(3, lastencoderValue);  // salvataggio su slot il valore
    delay(500);
    step_funzione = 0;

  }
}

//---------------------- ---------------------- ---------------------- ----------------------
//---------------------- CONTO ALLA ROVESCIA ---------------------- ----------------------
//---------------------- ---------------------- ---------------------- ----------------------


void COUNT_DOWN() {

  // PARTENZA CONTEGGIO SE LA VARIABILE secondiTotali è maggiore di 0

  while (secondiTotali > 0)
  {

    //   RESET FORZATO SE MANTENIAMO PREMUTO IL TASTO START PER 3 SECONDI E RITORNA AD INIZIO

    int pushButtonSTARTstate = digitalRead(pushButtonSTART);  //// START   START   START    START   START
    if (pushButtonSTARTstate == LOW) {
      timeSEC++;
    }
    //----------------------------------

    if (timeSEC >= 3) {

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(" reset forzato  ");
      lcd.setCursor(0, 1);
      lcd.print("xxxxxxxxxxxxxxxx");
      lcd.setCursor(1, 1);
      lcd.print("xxxxxxxxxxxxxxxx");
      digitalWrite (rele, LOW);  // SPEGNE IL RELè
      delay(2000);
      lcd.clear();
      timeSEC = 0;
      step_funzione = 0;

      break;
    }


    lcd.setCursor(0, 0);
    lcd.print(" Tempo residuo: ");

    delay (1000);         // DELAY PER CONTARE STEP DI UN SECONDO...NON TOCCARE

    secondiTotali--;

    ore = ((secondiTotali / 60) / 60);  // converte i secondi totali in ore
    minuti = (secondiTotali / 60) % 60; // converte i secondi totali in minuti
    secondi = secondiTotali % 60;       // converte i secondi totali in secondi

    lcd.setCursor(0, 0);
    lcd.print(" Tempo residuo: ");

    lcd.setCursor(4, 1);
    if (ore < 10) lcd.print("0");
    lcd.print(ore);
    lcd.print(":");

    if (minuti < 10) lcd.print("0");
    lcd.print(minuti);

    lcd.print(":");
    if (secondi < 10) lcd.print("0");
    lcd.print(secondi);


    // VAI A FUNZIONE FINE TEMPO quando i secondi totali raggiungono il valore =0

    if (secondiTotali == 0)
    {
      step_funzione = 3;  //  VAI AL' ULTIMO STADIO...TEMPO CHE RAGGIUNGE LO ZERO

      digitalWrite (rele, LOW);  // SPEGNE IL RELè
      break;
    }
  }
}


//---------------------- ---------------------- ---------------------- ----------------------
//---------------------- TEMPO ESAURITO ---------------------- ------------------
//---------------------- ---------------------- ---------------------- ----------------------

void TEMPO_SCADUTO() {

  // AZZERA ALLA PRESSIONE DEL TASTO START E VAI AD INIZIO PRIMA DEL TEMPO DI 10 SECONDI
  int pushButtonSTARTstate = digitalRead(pushButtonSTART);
  if (pushButtonSTARTstate == LOW)

  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("   ripristino   ");
    delay(1000);
    lcd.clear();
    timeSEC = 0;
    step_funzione = 0;
  }


  lcd.setCursor(0, 0);
  lcd.print("   Fine tempo   ");
  lcd.setCursor(0, 1);
  lcd.print("Start=Ripristina");
  digitalWrite(buzzer, HIGH);
  delay(500);
  digitalWrite(buzzer, LOW);
  lcd.setCursor(0, 1);
  lcd.print("                ");
  contatoreFineTempo++;
  delay(500);
  lcd.clear();


// VAI A INIZIO LIVELLO QUANDO IL TEMPO DI 10 SECONDI è SCADUTO

  if (contatoreFineTempo >= 10) {
    contatoreFineTempo = 0;
    timeSEC = 0;
    step_funzione = 0;
  }
}


//---------------------- ---------------------- ---------------------- ----------------------
//---------------------- INTERRUPT ENCODER LETTURA  ---------------------- ------------------
//---------------------- ---------------------- ---------------------- ----------------------

// PARAMETRI LEGATI ALLE LETTURE ENCODE TRAMITE INTERRUPT

void doEncoderB()
{
  PastB = (boolean)digitalRead(encoder0PinA);
  update = true;

  if (HorMinSec == 2)encoderValue3 = encoder0Pos;
  if (HorMinSec == 1)encoderValue2 = encoder0Pos;
  if (HorMinSec == 0)encoderValue = encoder0Pos;

}


Je library verwacht 3 parameters bij de begin() call, je geeft er 0.

Er is een LiquidCrystal_I2C library in de library manager van Arduino. Waarom die niet gebruikt?