Arduino lcd begin ошибка

  1. Добрый день ГУРУ.Подскажите новичку. Повторяю игрушку с сайта АРДУИНО. При компиляции скетча выдает ошибку Если строку убрать то ошибки нет. Автору программы дает ссылку на библиотеку. И пишет что это помогает. Скачал и подключил. Но ошибка так и осталось . А если я убираю эту строку ошибки нет

    #include <LiquidCrystal.h>
    #include <Wire.h>
    #include <Servo.h>
    #include <LiquidCrystal_I2C.h>
    #define TOT_TARGETS 4
    #define TOT_SENSORS 4
    #define PIN_TARGET 7

    LiquidCrystal_I2C lcd(0x27, 16, 2 );
    Servo Targets[ TOT_TARGETS];  //Сервопривод
    int targetSensor[]  =  { A0, A1, A2, A3};   // Датчикb фоторезисторов
    int readingSensor[ TOT_SENSORS] ;
    int targetTimer[]  =  { 0 , 0 , 0 , 0 } ;
    int score =  0;
    int timer =  100;
    unsigned long interval =  100; // time we need to wait
    unsigned long previousMillis =  0;  // millis()  returns an unsigned long.

    void setup() {
    Serial.begin( 9600);

    lcd.backlight();
    lcd.clear();
    lcd.begin();
    lcd.setCursor( 0, 0 );
    lcd.print(«SCORE: 0»);
    lcd.setCursor( 0, 1);
    lcd.print(«TIMER: 0»);

    //attaches the servos from pin 7  to 10
      for (int targetNumber =  0 ;  targetNumber < TOT_TARGETS;  targetNumber++)
      {
    Targets[ targetNumber] .attach( targetNumber + PIN_TARGET);
    Targets[ targetNumber] .write(0 ) ;
      }
    }

    void loop()  {

    lcd.clear();
    lcd.setCursor( 0, 0); // (Column,Row)
    lcd.print(«SCORE: «);
    lcd.setCursor( 12, 0);
    lcd.print( score);
    lcd.setCursor( 0, 1); // (Column,Row)
    lcd.print(«TIME: «);
    lcd.setCursor( 12, 1);
    lcd.print(timer);

    unsigned long currentMillis =  millis() ;  // grab current time

    // check if «interval» time has passed (100 milliseconds)
      if ((unsigned long)(currentMillis previousMillis) >= interval) {

        for (int targetsensorNumber = 0; targetsensorNumber < TOT_SENSORS; targetsensorNumber++) {
    readingSensor[targetsensorNumber] = analogRead({(targetSensor[targetsensorNumber])});
        }
        previousMillis = millis();
    Serial.print(readingSensor[1]);
    Serial.println(readingSensor[2]);
      }
    villainTarget();
    targetDown();
    ifZero();
    Countdowntimer();

     
    }

    void villainTarget() {

    int target = random(1, 5);
    delay(10);
      if (target == 1) {
    targetTimer[0]++;
    Targets[0].write(90 );
    delay( 10 );
        if (targetTimer[ 0 ]  ==  2 ) {
    targetTimer[ 0]  =  0 ;
    Targets[ 0].write(0);
    delay( 10);
        }
      }  else if ( target ==  2)  {
    targetTimer[ 1]++;
    Targets[ 1 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 1 ]  ==  2)  {
    targetTimer[ 1 ]  =  0;
    Targets[ 1 ] .write(0);
    delay( 10);
        }

      }  else if ( target ==  3)  {
    targetTimer[ 2]++;
    Targets[ 2 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 2 ]  ==  2)  {
    targetTimer[ 2 ]  =  0;
    Targets[ 2 ] .write(0);
    delay( 10);
        }
      }  else if ( target ==  4)  {
    targetTimer[ 3]++;
    Targets[ 3 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 3 ]  ==  2)  {
    targetTimer[ 3 ]  =  0;
    Targets[ 3 ] .write( 0 );
    delay( 10 );
        }
      }
    }

    void targetDown() {
    //Sith Trooper
      if (readingSensor[ 0] >> 450 )  {
    score++;
    Targets[ 0].write( 0 );
    delay( 100 );
      }
    //Sith Trooper
      if (readingSensor[ 1] >> 990 )  {
    score++;
    Targets[ 1].write( 1 );
    delay( 100 );
      }
    // Palpatine
      if (readingSensor[ 2] >> 990 )  {
        score =  score + 5 ;
    Targets[ 2].write( 2 );
    delay( 100 );
      }
    //Sith Trooper
      if (readingSensor[ 3] >> 985 )  {
    score++;
    Targets[ 3].write( 3);
    delay( 100);
      }
    }

    void Countdowntimer()  {
    timer;
    delay( 1000);
    }

    void ifZero()  {
      if ( timer ==  0)  {
        for ( int targetNumber =  0 ;  targetNumber < TOT_TARGETS;  targetNumber++)
        {
    Targets[ targetNumber] .write( 0);
        }
    lcd.clear();
    lcd.print(» YOUR SCORE: «);
    lcd.setCursor( 12, 0);
    lcd.print(score);
    delay(10000);
        score= 0;
        timer =  100;
      }
    }

  2. Ошибку мы из воздуха возьмем?

  3. Компилятору не нравиться вот это «lcd.begin();»

  4. Ну так а ошибку Вы дадите или как?

  5. Это Joker-ошибка. Т.е. любая на твой выбор (или вкус).


    otis и NikitOS нравится это.

  6. no matching function for call to ‘LiquidCrystal_I2C::begin()’
    это то что пишет компилятор

  7. Используйте init() вместо begin(), Также библиотека LiquidCrystal.h здесь не нужна.

  8. Как убрать одну библиотеку и подключить другую. Походу у меня ошибка от того что не та библиотека.

  9. C:\Users\73B5~1\AppData\Local\Temp\arduino_modified_sketch_964238\Tir_v1.ino: In function ‘void ifZero()’:

    Tir_v1:154:2: error: ‘lcd’ was not declared in this scope

      lcd.clear();

      ^~~

    exit status 1
    ‘lcd’ was not declared in this scope
    [/code
    теперь вот эта ошибка. я убрал из папки либратес  библиотеку( вырезал папку) и на это место вставил другую. ( ту что рекомендовал автор )

  10. otis. выложите код после редактирования, судя по ошибке, вы там что-то напортачили

  11. И для кого придумана кнопка установки библиотеки из архива? [​IMG]

  12. otis. Не путайте установку библиотеки в IDE (в среду разработки) и подключение библиотеки к вашему скетчу. Когда вы скачиваете библиотеку из интернета и закидываете её в папку libraries — это установка библиотеки в IDE. Там их может быть любое количество и на любой вкус. А вот если вы хотите использовать библиотеку в скетче, вы об этом сообщаете компилятору через директиву include. В вашем случае это строки

    #include <LiquidCrystal.h>
    #include <Wire.h>
    #include <Servo.h>
    #include <LiquidCrystal_I2C.h>

    Разберитесь в этом куске вашего кода. Если библиотека не нужна, закомментируйте строку с её объявлением или удалите.

  13. #include <Wire.h>
    #include <Servo.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2 );

    #define TOT_TARGETS 4
    #define TOT_SENSORS 4
    #define PIN_TARGET 7

    Servo Targets[ TOT_TARGETS];  //Servo
    int targetSensor[]  =  { A0, A1, A2, A3};  // LDR Sensor
    int readingSensor[ TOT_SENSORS] ;
    int targetTimer[]  =  { 0 , 0 , 0 , 0 } ;
    int score =  0;
    int timer =  100;
    unsigned long interval =  100; // time we need to wait
    unsigned long previousMillis =  0;  // millis()  returns an unsigned long.

    void setup() {
    Serial.begin( 9600);

    lcd.backlight();
    lcd.clear();
    lcd.begin();
    lcd.setCursor( 0, 0 );
    lcd.print(«SCORE: 0»);
    lcd.setCursor( 0, 1);
    lcd.print(«TIMER: 0»);

    //attaches the servos from pin 7  to 10
      for (int targetNumber =  0 ;  targetNumber < TOT_TARGETS;  targetNumber++)
      {
    Targets[ targetNumber] .attach( targetNumber + PIN_TARGET);
    Targets[ targetNumber] .write(0 ) ;
      }
    }

    void loop()  {

    lcd.clear();
    lcd.setCursor( 0, 0); // (Column,Row)
    lcd.print(«SCORE: «);
    lcd.setCursor( 12, 0);
    lcd.print( score);
    lcd.setCursor( 0, 1); // (Column,Row)
    lcd.print(«TIME: «);
    lcd.setCursor( 12, 1);
    lcd.print(timer);

    unsigned long currentMillis =  millis() ;  // grab current time

    // check if «interval» time has passed (100 milliseconds)
      if ((unsigned long)(currentMillis previousMillis) >= interval) {

        for (int targetsensorNumber = 0; targetsensorNumber < TOT_SENSORS; targetsensorNumber++) {
    readingSensor[targetsensorNumber] = analogRead({(targetSensor[targetsensorNumber])});
        }
        previousMillis = millis();
    Serial.print(readingSensor[1]);
    Serial.println(readingSensor[2]);
      }
    villainTarget();
    targetDown();
    ifZero();
    Countdowntimer();

    }

    void villainTarget() {

    int target = random(1, 5);
    delay(10);
      if (target == 1) {
    targetTimer[0]++;
    Targets[0].write(90 );
    delay( 10 );
        if (targetTimer[ 0 ]  ==  2 ) {
    targetTimer[ 0]  =  0 ;
    Targets[ 0].write(0);
    delay( 10);
        }
      }  else if ( target ==  2)  {
    targetTimer[ 1]++;
    Targets[ 1 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 1 ]  ==  2)  {
    targetTimer[ 1 ]  =  0;
    Targets[ 1 ] .write(0);
    delay( 10);
        }

      }  else if ( target ==  3)  {
    targetTimer[ 2]++;
    Targets[ 2 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 2 ]  ==  2)  {
    targetTimer[ 2 ]  =  0;
    Targets[ 2 ] .write(0);
    delay( 10);
        }
      }  else if ( target ==  4)  {
    targetTimer[ 3]++;
    Targets[ 3 ] .write( 90 ) ;
    delay( 10);
        if ( targetTimer[ 3 ]  ==  2)  {
    targetTimer[ 3 ]  =  0;
    Targets[ 3 ] .write( 0 );
    delay( 10 );
        }
      }
    }

    void targetDown() {
    //Sith Trooper
      if (readingSensor[ 0] >> 450 )  {
    score++;
    Targets[ 0].write( 0 );
    delay( 100 );
      }
    //Sith Trooper
      if (readingSensor[ 1] >> 990 )  {
    score++;
    Targets[ 1].write( 1 );
    delay( 100 );
      }
    // Palpatine
      if (readingSensor[ 2] >> 990 )  {
        score =  score + 5 ;
    Targets[ 2].write( 2 );
    delay( 100 );
      }
    //Sith Trooper
      if (readingSensor[ 3] >> 985 )  {
    score++;
    Targets[ 3].write( 3);
    delay( 100);
      }
    }

    void Countdowntimer()  {
    timer;
    delay( 1000);
    }

    void ifZero()  {
      if ( timer ==  0)  {
        for ( int targetNumber =  0 ;  targetNumber < TOT_TARGETS;  targetNumber++)
        {
    Targets[ targetNumber] .write( 0);
        }
    lcd.clear();
    lcd.print(» YOUR SCORE: «);
    lcd.setCursor( 12, 0);
    lcd.print(score);
    delay(10000);
        score= 0;
        timer =  100;
      }
    }

    Всем спасибо. Вопрос закрыт. Добавил нужную библиотеку. И первый раз нажал кнопку «вкладки инструменты и Исправить кодировку и перезагрузить». И о МАГИЯ скетч заработал. В приложение компилированный скетч. Схема есть на https://create.arduino.cc/projecthu…ref=platform&ref_id=424_trending___&offset=69

Arduino Forum

Loading

Помогите пожалуйста, понять, где ошибка ?

mat аватар

Offline

Зарегистрирован: 05.07.2012

 Имеется скетч

#include <LiquidCrystal.h>
#include <LiquidCrystalRus.h>

LiquidCrystalRus lcd(12, 11, 5, 4, 3, 2);

void setup()
{
lcd.begin(16, 2);
lcd.print("Здравствуй, мир!");
}

void loop()
{
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}

И при компиляции выдаёт ошибку ‘LiquidCristalRus’ does not name a type. Я только начал учиться и никак не пойму, где ошибка ?
Есть ещё и другие скетчи с подобной ошибкой но, мне пока с этой бы разобраться…
 


hey all, i am trying to interface 16×2 LCD display with ESP8266 NodeMCU using I2C shield of 16×2 LCD display. I am getting following error:

Arduino: 1.8.8 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\nishant\AppData\Local\Temp\arduino_modified_sketch_827962\sketch_apr02a.ino: In function 'void setup()':

sketch_apr02a:15:13: error: no matching function for call to 'LiquidCrystal_I2C::begin()'

   lcd.begin();                    // start lcd 

             ^

In file included from C:\Users\nishant\AppData\Local\Temp\arduino_modified_sketch_827962\sketch_apr02a.ino:5:0:

C:\Users\nishant\Documents\Arduino\libraries\LiquidCrystal_I2C-master/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\nishant\Documents\Arduino\libraries\LiquidCrystal_I2C-master/LiquidCrystal_I2C.h:58:8: note:   candidate expects 3 arguments, 0 provided

exit status 1
no matching function for call to 'LiquidCrystal_I2C::begin()'


can you please elaborate why i am getting this error. because i am not finding any mistake in program. 

    Join 100K+ Subscribers

    Your email is safe with us, we don’t spam.

    Be a part of our ever growing community.

    I have tested the library and LCD with simple script and everything worked fine. Now I am trying to add the LCD functionality to my working program but the code reaches the lcd.begin(); function it causes a runtime error and no following lines are executed. I have tried many different configurations and none of them have worked; including have lcd.begin() in the setup(), in the InitSM(), loop(), and RunSM() and it crashes every time.

    I am wondering if I am running into a similar issue described here.

    Following thebusybee’s advice, I started with a simple working script that could print to the LCD screen. I then started adding initializing functions in the setup until it stopped working. InitSM(&AFC); is the line that causes the LCD functions to stop working. InitSM(&AFC); calls millis(), enables watchdog timer interrupts, and external interrupt on digital pin 2. Below is the exam code.

    // Library 
    #include <Arduino.h>
    #include <EventTimers.h>
    #include <EventCheckers.h>
    #include <avr/sleep.h>
    #include <Timeout.h>
    #include <AFCSM.h>
    #include <DoorServo.h>
    #include <EventTypes.h>
    #include <HardwareInterrupts.h>
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    LiquidCrystal_I2C lcd(0x27,20,4);
    //LiquidCrystal_I2C *lcdA; //0x27,20,4
    //lcdA = &lcd;
    //lcdA->begin();
    
    // global variables
    static uint8_t TimerCheck = 0;
    static uint8_t Timer30; 
    static EventType LCDButton;
    static EventType BatteryEvents;
    static EventType BumperEvents;
    static EventType FogEvents;
    static EventType CurrentEvent;
    static EventType FrontDoor;
    static EventType BackDoor;
    static AFCDATA AFC;
    static AFCState PreviousState;
    
    void setup() {
      // set up serial communication with computer
      Serial.begin(9600);
    
      // uart for MiniOFS to MCU
      Serial1.begin(1200, SERIAL_8N1);
    
      /*** set up interrupts, not init ***/  
      SetUpWatchdogT(); // 8sec interrval counter for 32sec environ sensor check
      SetUpButtonInt(); // external button interrupt for LCD screen
    
      // init LCD
      lcd.begin();
    
      // Enable interrupts
      sei();
    
      // Set the sleep mode to Power-Down
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    
      // initi doors
      initDoor();
    
      // init statemachine
      InitSM(&AFC);
      PreviousState = AFC.State;
    }
    
    void loop() {
      Serial.flush();
    
      lcd.clear();
      // lcd.setCursor(2,0);   //Set cursor to character 2 on line 0
      lcd.print("LED INIT!");
      Serial.println("printed");
    }
    
    ISR(WDT_vect) {
      // Add to timer
      TimerCheck += 1;
    
      // check if 30secs have elapsed time has
      if (TimerCheck >= 3){
        TimerCheck = 0; // reset counter
        Timer30 = true; // raise flag
      }  
    
    }
    
    void Buttonisr(){
      // Button Flag
      LCDButton = BUTTON_ON;
    }
    

    I narrowed it down to being the external interrupt enable on digital pin 2. Below are the functions for the setup and enable of the external interrupt.

    void SetUpButtonInt(){
        
        // set up the pin as an input and attach a isr 
        pinMode(ButtonPin, INPUT_PULLUP);
        attachInterrupt(digitalPinToInterrupt(ButtonPin), Buttonisr, RISING); // interrupt on rising edge of pin
    
        return; 
    }
    
    void EnableButtonInt(){
    
        EIMSK |= (1 << INT0); // enable external interrupt
        Serial.println("enable external interrupt");
        return;
    }
    

    How can this setup affect the lcd I2C setup?

    Понравилась статья? Поделить с друзьями:
  • Arduino ide произошла ошибка при загрузке скетча
  • Arduino droid ошибка загрузки
  • Ardo fls 80 e коды ошибок
  • Arctic cat ошибка ac13
  • Ardo fls 100e ошибки