Всем здрасьте. По вот этому гайду пытаюсь завести аналогичный экранчик. Заканчивается все тем что данный код не компилируется Код (Text): #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> // Скачанная библиотека для дисплея. #include <Adafruit_SSD1306.h> // Скачанная библиотека для дисплея. https://yadi.sk/d/9F_uW1wIZUDna #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup(){// У дисплея нету строк и колонок, только Pixel / пиксели по горизонтали и вертикали, условно! назовем курсор / колонка. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 0.96" 128X64 OLED LCD Display)I2C АДРЕС. display.clearDisplay(); // Clear the buffer. / Очистить буфер. display.setTextColor(WHITE); // Цвет текста. display.setTextSize(1); // Размер текста (1). display.setCursor(0,0); // Устанавливаем курсор в колонку 0, строку 0. на самом деле это строка №1, т.к. нумерация начинается с 0. display.println("Hello world! 11111111"); // Печатаем 1 строку. display.setCursor(0,10); // Устанавливаем курсор в колонку 0, строку 1.(строка №2 ). display.println("Dmitry OSIPOV 2222222"); // Печатаем 2 строку. display.setTextSize(5); // Меняем размер текста (5). display.setCursor(0,20); // Устанавливаем курсор в колонку 0, строку 2.(строка №3 ). display.println("Size"); // Печатаем 3 строку. display.display(); // Чтобы сделать символы видимыми на дисплее !. } void loop() { } И вылезают следующие ошибки: Код (Text): Arduino: 1.6.5 (Windows 8.1), Плата"Arduino Uno" ssd1306_128x64_i2c.ino: In function 'void setup()': ssd1306_128x64_i2c:9: error: redefinition of 'void setup()' sketch_jun16b:1: error: 'void setup()' previously defined here ssd1306_128x64_i2c.ino: In function 'void loop()': ssd1306_128x64_i2c:23: error: redefinition of 'void loop()' sketch_jun16b:6: error: 'void loop()' previously defined here redefinition of 'void setup()' Можете подсказать, какие ошибки тут?
Такое ощущение, что в один проект попало два файла с исходным текстом, в которых присутствуют функции setup и loop. Имеет смысл глянуть в папку со скетчем и посмотреть на предмет наличия в ней файлов ssd1306_128x64_i2c.ino и sketch_jun16b (расширение, скорее всего, тоже .ino). Следует посмотреть, какой из них содержит нужный код и выкинуть второй (переместить в другую папку, если он все-таки нужен). Теряюсь в догадках, как такого можно случайно достичь.
Перезапустил программу, вбил код заново... и снова проблемы... Код (Text): D:\Arduino\Scetches\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:433:6: error: prototype for 'void Adafruit_SSD1306::dim(boolean)' does not match any in class 'Adafruit_SSD1306' void Adafruit_SSD1306::dim(boolean dim) { ^ In file included from D:\Arduino\Scetches\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:28:0: D:\Arduino\Scetches\libraries\Adafruit_SSD1306\Adafruit_SSD1306.h:152:8: error: candidate is: void Adafruit_SSD1306::dim(uint8_t) void dim(uint8_t contrast); ^ Ошибка компиляции. Эх, не получается у меня что-либо сделать без проблем..
Какое-то противоречие внутри библиотеки. Если я ничего не путаю, то в заголовочном файле библиотеки функция описана одним образом, а в cpp другим. В результате при компиляции библиотеки в одном месте оно ругается, что не может найти в описании класса ничего похожего на то, что пытается определить в реализации, а при компиляции включаемого заголовочного файла ругается на то, что не может найти реализацию заявленной в определении класса функции. А вся проблема в разном именовании типа параметра: boolean в одном месте и uint8_t в другом. Можно попробовать скорректировать библиотеку, приведя описание функции к общему знаменателю, но тут нужно видеть всю библиотеку, чтобы попытаться определить, какой именно тип из двух нужен, и поможет ли исправление. Возможно, более простым решением будет найти другую, рабочую библиотеку.
Благодарю! Библия с этого гайда таки завела экран. А то я еще попробовал OzOLED библию, она вроде затекла на ардуину, но экран не включила. Уже подумал, что месяц с ебая ждал брак. Большое спасибо всем ответившим.