Ошибка с примером из библиотеки LCDBitmap.
- Войдите на сайт для отправки комментариев
Втр, 21/04/2020 - 21:59
Добрый вечер.
Может кто знаком с библиотекой LCDBitmap, или у кого была такая ошибка?
Компилятор выдаёт ошибку при загрузке примера из библиотеки LCDBitmap.
Попытки что исправить НИ к чему НИ привели.
При попытке загрузить следующий скетч из примеров этой либы:
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <LCDBitmap.h> LiquidCrystal_I2C lcd(0x27, 16, 2); LCDBitmap bitmap(&lcd, 12, 0); // Assign the LCD bitmap to "&lcd" set in the previous line and set display location to (12,0) unsigned long currentMillis; // Timer variable const int sample = 4000; // Sets how long to run each sample void setup() { lcd.begin(16,2); // Initialize the LCD bitmap.begin(); // Initalize the LCD bitmap bitmap.home(); // Move cursor the home position (0,0) lcd.print("LCDBitmap"); randomSeed(analogRead(A0)); } void loop() { // bitmap.pixel lcd.setCursor(0, 1); lcd.print(".pixel "); currentMillis = millis(); while(millis()-currentMillis<sample) { for (byte i=0; i<8; i++) { bitmap.pixel(random(0, BITMAP_W), random(0, BITMAP_H), random(0, 2), NO_UPDATE); // Add one random pixel but don't update bitmap display } bitmap.update(); // 8 pixels positioned, now update bitmap display } // bitmap.line sample #1 lcd.setCursor(0, 1); lcd.print(".line #1 "); bitmap.clear(); // Clear the bitmap display (automatically updates bitmap display) doesn't clear text currentMillis = millis(); int startdelay=120; while(millis()-currentMillis<sample*2) { for (byte x=0; x<BITMAP_W; x=x+2) { bitmap.line(x, 0, BITMAP_W-x-1, BITMAP_H-1, ON, UPDATE); // Draw the line from (x, 0) to (BITMAP_W-x-1, BITMAP_H-1) and update bitmap display delay(startdelay); bitmap.clear(); // Clear the display } for (byte y=0; y<BITMAP_H; y=y+2) { bitmap.line(0, BITMAP_H-y-1, BITMAP_W-1, y, ON, UPDATE); delay(startdelay); bitmap.clear(); // Clear the display } startdelay=startdelay*2/3; } // bitmap.line sample #2 lcd.setCursor(0, 1); lcd.print(".line #2 "); currentMillis = millis(); while(millis()-currentMillis<sample) { for (byte x=0; x<BITMAP_W; x++) { bitmap.line(x, 0, x, BITMAP_H-1, ON, UPDATE); // Draw the line from (x, 0) to (x, BITMAP_H-1) and update bitmap display } for (byte y=0; y<BITMAP_H; y++) { bitmap.line(0, y, BITMAP_W-1, y, OFF, UPDATE); } } bitmap.clear(); // Clear the display // bitmap.rect lcd.setCursor(0, 1); lcd.print(".rect "); currentMillis = millis(); while(millis()-currentMillis<sample) { bitmap.rect(random(0, BITMAP_W), random(0, BITMAP_H), random(0, BITMAP_W), random(0, BITMAP_H), ON, UPDATE); // Draw a rectangle from (x1,y1) to (x2,y2) and update bitmap display delay(150); bitmap.clear(); // Clear the display } // bitmap.rectFill lcd.setCursor(0, 1); lcd.print(".rectFill"); currentMillis = millis(); while(millis()-currentMillis<sample*1.5) { bitmap.rectFill(random(0, BITMAP_W), random(0, BITMAP_H), random(0, BITMAP_W), random(0, BITMAP_H), ON, NO_UPDATE); // Draw a filled rectangle from (x1,y1) to (x2,y2) and update bitmap display bitmap.rectFill(random(0, BITMAP_W), random(0, BITMAP_H), random(0, BITMAP_W), random(0, BITMAP_H), OFF, NO_UPDATE); // Draw a filled rectangle from (x1,y1) to (x2,y2) and update bitmap display bitmap.update(); // Filled rectangles drawn, now update bitmap display delay(10); } bitmap.clear(); // Clear the display // bitmap.barGraph lcd.setCursor(0, 1); lcd.print(".barGraph "); byte bars=10; byte graph[bars]; // 10 Bar graph values currentMillis = millis(); while(millis()-currentMillis<sample*2) { for (byte x=0; x<bars; x++) { graph[x] = random(0, BITMAP_H); // Fill array with random height values } bitmap.barGraph(bars, graph, ON, UPDATE); // Display the bar graph delay(10); if (bars==10 && millis()-currentMillis>=sample) bars=4; } bitmap.clear(); // Clear the display // This creates a big "X" using the LCDBitmap to show the inverse and move functions for (byte x=0; x<=4; x++) { bitmap.line(x, BITMAP_H-1, x+BITMAP_H-1, 0, ON, NO_UPDATE); // Draw a line, but don't update the bitmap display bitmap.line(x, 0, x+BITMAP_H-1, BITMAP_H-1, ON, NO_UPDATE); // Draw a line, but don't update the bitmap display } bitmap.update(); // Now that everything is written to the bitmap, show the changes // bitmap.inverse lcd.setCursor(0, 1); lcd.print(".inverse "); delay(1000); int x_status = 1; currentMillis = millis(); while(millis()-currentMillis<sample/2) { for (byte a=0; a<6; a++) { bitmap.inverse(); // Invert the bitmap, automatically updates the bitmap display x_status *= -1; delay(75); } } if (x_status==-1) bitmap.inverse(); // bitmap.move bitmap.clear_text(); // Clear just the text on the display (leaves bitmap alone) lcd.setCursor(0, 1); lcd.print(".move"); for (byte x=11; x>4; x--) { bitmap.move(x,0); // Move the LCD bitmap position to the left one position delay(150); } for (byte x=6; x<13; x++) { bitmap.move(x,0); // Move the LCD bitmap position to the right one position delay(150); } bitmap.home(); // Move cursor the home position (0,0) lcd.print("LCDBitmap"); delay(500); // bitmap.clear lcd.setCursor(0, 1); lcd.print(".clear "); delay(1000); bitmap.clear(); // Clear the bitmap display only (automatically updates bitmap display) doesn't clear text delay(2000); }
Компилятор ругается на 6 строку кода и выдаёт следующею ошибочку:
Arduino: 1.8.12 (Windows 7), Плата:"ATmega328 based, Old bootloader, External 16 MHz, GyverUART [Warning!], AVR-GCC v8.3.0 [Warning!], Enable [Default], Enable [Default], Disable, 2.7V [Default], Disable [Default]" LCDBitmap_NewLCD_I2C:6:29: error: no matching function for call to 'LCDBitmap::LCDBitmap(LiquidCrystal_I2C*, int, int)' LCDBitmap bitmap(&lcd, 12, 0); // Assign the LCD bitmap to "&lcd" set in the previous line and set display location to (12,0) ^ In file included from S:\Users\AE0E~1\AppData\Local\Temp\arduino_modified_sketch_308661\LCDBitmap_NewLCD_I2C.pde:3: S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:126:3: note: candidate: 'LCDBitmap::LCDBitmap(LiquidCrystal*, byte, byte)' LCDBitmap (LiquidCrystal *lcd, byte bitmap_x, byte bitmap_y); ^~~~~~~~~ S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:126:3: note: no known conversion for argument 1 from 'LiquidCrystal_I2C*' to 'LiquidCrystal*' S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:121:7: note: candidate: 'constexpr LCDBitmap::LCDBitmap(const LCDBitmap&)' class LCDBitmap { ^~~~~~~~~ S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:121:7: note: candidate expects 1 argument, 3 provided S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:121:7: note: candidate: 'constexpr LCDBitmap::LCDBitmap(LCDBitmap&&)' S:\Users\�������� ����\Documents\Arduino\libraries\LCDBitmap/LCDBitmap.h:121:7: note: candidate expects 1 argument, 3 provided S:\Users\AE0E~1\AppData\Local\Temp\arduino_modified_sketch_308661\LCDBitmap_NewLCD_I2C.pde: In function 'void setup()': LCDBitmap_NewLCD_I2C:12:17: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)' lcd.begin(16,2); // Initialize the LCD ^ In file included from S:\Users\AE0E~1\AppData\Local\Temp\arduino_modified_sketch_308661\LCDBitmap_NewLCD_I2C.pde:2: S:\Users\�������� ����\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate: 'void LiquidCrystal_I2C::begin()' void begin(); ^~~~~ S:\Users\�������� ����\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided Несколько библиотек найдено для "LiquidCrystal_I2C.h" Используется: S:\Users\Интернет урок\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master Не используется: S:\Users\Интернет урок\Documents\Arduino\libraries\LCD_1602_RUS_ALL-master exit status 1 no matching function for call to 'LCDBitmap::LCDBitmap(LiquidCrystal_I2C*, int, int)' Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"
Помогите пожалуйста.
А Вас не наводят на размышления странные знаки в отчете?
Имя пользователя должно быть латинскими буквами или ставьте библиотеку в нормальную директорию без русских букв
А так у меня все библиотеки в этой директории стоят, и ни чё
С остальными библами же всё работает,
И это ошибка где то в самой библиотеке
Плата:"ATmega328 based, Old bootloader, External 16 MHz, GyverUART [Warning!], AVR-GCC v8.3.0 [Warning!], Enable [Default], Enable [Default], Disable, 2.7V [Default], Disable [Default]"
И да я юзаю gyverЯдро))
Но ошибка остаётся даже если компилить со стд ядром.
Может для начала пример покороче взять? Типа такого
Если конкретно по 6 строчке, то библиотеке LCDBitmap скорее всего первый параметр в скобках не нравится. Точнее его тип. lcd у Вас типа LiquidCrystal_I2C, а она небось какой-нибудь LiquidCrystal, описанный в стандартной LiquidCrystal.h, ожидает. Смотрите описание и код библиотеки. Если я прав, её надо править или искать, может кто-то это уже до Вас сделал.
Ну и в остальном порядок навести надо. Нехорошо это:
Несколько библиотек найдено для
"LiquidCrystal_I2C.h"
А будете часто Гайвера поминать, Вас с вопросами к нему на форум и пошлют!
Да я уже и тип и шмип и чтотолько нИ менял, и где только нИ ковырялся, нИ что нИ помогает.
В библиотеках убрался, оставил только обычную и I2C, не помогает.
Может для начала пример покороче взять? Типа такого
Нет, пробовал тоже самое
Так вроде ж там всё ясно написано: библиотека ожидает, что ей дадут указатель на объект LiquidCrystal, а Вы пихаете указатель на LiquidCrystal_I2C. Вот она и ругается.
ошибка где то в самой библиотеке
Да, нет. Передавайте то, что нужно и всё будет в порядке.
Понятно, спасибо.
Просто пример называется 'LCDBitmap NewLCD_I2C',
И это ПРИМЕР и я там нИ чего нИ трогал, всё было писано разрабами.
И да к стати при компиляции с обычным подключением всё компилится.
Хотелось бы что бы и на айтуси всё работало, не подскажите как можно переделать под неё?
Можно посмотреть что именно ему нужно от библиотеки. Может и эта подойдёт. Попробуйте просто нагло преобразовать указатель и посмотреть что получится.
Преобразовать куда? во что?
Ну, попробуйте в шестой строке написать
LCDBitmap bitmap((LiquidCrystal *) & lcd, 12, 0);
Может, на дурочку, и прокатит.
А какой битмап вы хотите найти на 1602 ???
А какой битмап вы хотите найти на 1602 ???
Всмысле?
Я нИ какой битмап и нИ искал.
Ну, попробуйте в шестой строке написать
LCDBitmap bitmap((LiquidCrystal *) & lcd, 12, 0);
Может, на дурочку, и прокатит.
Прокатило, НО на дисплее очень страшные вещи происходят.
Насколько я вижу - этот пример для другой библиотеки написан https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
И даже в таком
простом примере, текст выводится, выводится правильно, НО в место символов выводятся по 4 полоски
Вы пытаетесь скрестить ЕЖА с УЖОМ
https://codebender.cc/example/LCDBitmap/LCDBitmap_NewLCD_I2C#LCDBitmap_NewLCD_I2C.ino
Сейчас попробую установить новую ликКрис
Дисплей то какой ???
1602 c I2C переходником.
С алика
Имхо - ничего не выйдет.
Я тож так думаю.
Значит буду писать свою библу под себя, давно уже такая мысль была мне эти не очень нравятся, да и с ними не удобно работать и там много багов и всё такое, и хочится чтоб всё в одном было.
Поэтому хочу свою библиотеку написать.
P.S. Если кому интересно все исходники я буду выкладывать на гитхабе https://github.com/Oreshek11/XLCD.h/tree/master
Поэтому хочу свою библиотеку написать.
Ну, раз хочится - пешите :=)
:) очень хочИтся, буду пЕсать)))
Я тож так думаю.
Значит буду писать свою библу под себя, давно уже такая мысль была мне эти не очень нравятся, да и с ними не удобно работать и там много багов и всё такое, и хочится чтоб всё в одном было.
Поэтому хочу свою библиотеку написать.
P.S. Если кому интересно все исходники я буду выкладывать на гитхабе https://github.com/Oreshek11/XLCD.h/tree/master
К стати ссылка не та, вот https://github.com/Oreshek11/XLCD
Орешек, ты б вместо того, чтоб никому не нужные библиотеки писать, русский бы свой подтянул, хотя бы с двойки на тройку, пока самоизолируешься и делать нехрен.
Дед, может он нарочно придуряется?
Безграмотный от придуряющегося отличается ну очень сильно. Это не тот случай.
Орешек, ты б вместо того, чтоб никому не нужные библиотеки писать..
- Нашел бы королеву
- убил дракона (не одобряю)
- помог 24 странникам
- изучил заклинания (С++)) уровня 90
Я вот тоже не понимаю, вся молодёжь в игрульки по интернету ринулась на «домосидении», да из всяких соцсетей и ютуб не вылазит, гадость всякую смотрят. За месяц можно не плохо так подтянуться и в хобби и в учебе.
Я вот тоже не понимаю, вся молодёжь в игрульки по интернету ринулась на «домосидении», да из всяких соцсетей и ютуб не вылазит, гадость всякую смотрят. За месяц можно не плохо так подтянуться и в хобби и в учебе.
Это да. Я научился варить сварочным аппаратом. Пока электродом D3, четверка не прокатывает. Скорее всего у меня руки не оттуда растут.
Прилипает электрод или что? Если липнет - поддай току, не хватает видимо. 4ку током ампер под 200 варить, но я сам тоже самоучка.
Прилипает электрод или что? Если липнет - поддай току, не хватает видимо. 4ку током ампер под 200 варить, но я сам тоже самоучка.
Точно, прилипает, но 200А стремался как-то. Попробую.
Прожигает, сука, насквозь :(
Так 4ой не жесть же варят, а по серьезнее металл. ))
Прилипает электрод или что? Если липнет - поддай току, не хватает видимо. 4ку током ампер под 200 варить, но я сам тоже самоучка.
у мня четвёрка на 160А норм варится, не липнет. Электроды наши, местные, но под лицензией ESAB. Я тоже не профессиональный сварной.
Так 4ой не жесть же варят, а по серьезнее металл. ))
Вы сомневаетесь в моих способностях испортить серьёзный металл?
Зная себя - ни капли не сомневаюсь ))) Практиковаться просто нужно, практика везде нужна.
160А для 4ки все же мало (или Вы супер профессионал). Однако ж электроды тоже сильно важный элемент в этом всем.