Arduino uno с библиотекой microled; рисовать в форме
Прошу прощения за беспокойство, но мне снова нужна помощь с моим кодом Arduino. Я все еще учусь, поэтому делаю ошибки.
Я пытаюсь рисовать фигуры на экране i2c с помощью библиотеки Microled. Мой код не компилируется, ошибка Неожиданное объявление перед { . Это одна проблема. Я также хотел бы нарисовать прямоугольник без краев, как пустой, так и заполненный, но я изо всех сил пытаюсь объявить его, должен ли я объявить 4 строки или, возможно, отобразить растровое изображение.
В любом случае мой код здесь
#include <Arduino.h>
#include <Wire.h>
#include <MicroLCD.h>
LCD_SH1106 lcd; /* for SH1106 OLED module */
//ЖК-дисплей_SSD1306; /* для OLED-модуля SSD1306 */
static const PROGMEM uint8_t smile[48 * 48 / 8] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFE,0xFE,0x7E,0x7F,0x7F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7E,0xFE,0xFE,0xFC,0xFC,0xF8,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0xF0,0xFC,0xFE,0xFF,0xFF,0xFF,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,0xFE,0xFC,0xF0,0xC0,0x00,
0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x1F,0x1F,0x1F,0x3F,0x1F,0x1F,0x02,0x00,0x00,0x00,0x00,0x06,0x1F,0x1F,0x1F,0x3F,0x1F,0x1F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x30,0xF8,0xF8,0xF8,0xF8,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xF8,0xFC,0xF8,0x30,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,
0x00,0x03,0x0F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFC,0xF8,0xF0,0xE1,0xC7,0x87,0x0F,0x1F,0x3F,0x3F,0x3E,0x7E,0x7C,0x7C,0x7C,0x78,0x78,0x7C,0x7C,0x7C,0x7E,0x3E,0x3F,0x3F,0x1F,0x0F,0x87,0xC7,0xE1,0xF0,0xF8,0xFC,0xFF,0xFF,0xFF,0x7F,0x3F,0x0F,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7E,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE,0xFE,0x7E,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
};
static const PROGMEM uint8_t tick[16 * 16 / 8] =
{0x00,0x80,0xC0,0xE0,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x78,0x30,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00};
static const PROGMEM uint8_t cross[16 * 16 / 8] =
{0x00,0x0C,0x1C,0x3C,0x78,0xF0,0xE0,0xC0,0xE0,0xF0,0x78,0x3C,0x1C,0x0C,0x00,0x00,0x00,0x30,0x38,0x3C,0x1E,0x0F,0x07,0x03,0x07,0x0F,0x1E,0x3C,0x38,0x30,0x00,0x00};
void setup()
{
delay(1000);
delay(1000);
lcd.clear();
lcd.setCursor(40, 1);
delay(500);
}
void line()
{
int x0 = 7; int y0 = 7; // (х0,у0) = (7, 7)
int x1 = 42; int y1 = 24; // (x1,y1) = (42, 24)
oled.line(x0, y0, x1, y1); // Рисуем линию от (x0,y0) до (x1,y1);
oled.display(); // Рисуем на экране
}
void rectangle()
{
int x0 = 7; int y0 = 5;
int width = 24;
int height = 13;
oled.rect(x0, y0, width, height);
oled.display();
}
void filled()
{
oled.rectFill(7, 5, 35, 5); // Заполняем прямоугольник от (7, 5) до (42, 10)
int radius = 13;
}
void circle()
oled.circle(LCDWIDTH/2, LCDHEIGHT/2, radius);
oled.display(); // Рисуем на экране
oled.circleFill(42, 20, 7); // Заполнить круг радиусом 7 с центром в (42, 20)
oled.display(); // Рисуем на экране
}
void loop()
{
line();
rectangle();
filled();
circle();
}
void printTitle(String title, int font)
{
int middleX = oled.getLCDWidth() / 2;
int middleY = oled.getLCDHeight() / 2;
oled.clear(PAGE);
oled.setFontType(font);
oled.setCursor(middleX - (oled.getFontWidth() * (title.length()/2)),
middleY - (oled.getFontWidth() / 2));
oled.print(title);
oled.display();
delay(1500);
oled.clear(PAGE);
}
Полная ошибка
Arduino: 1.8.6 (Linux), Board: "Arduino/Genuino Uno"
In file included from /home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino:3:0:
/home/lutherus/builds/Arduino/build/linux/work/libraries/MicroLCD/MicroLCD.h:38:43: warning: '__progmem__' attribute ignored [-Wattributes]
virtual void draw(const PROGMEM byte* buffer, byte width, byte height) {}
^
In file included from /home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino:3:0:
/home/lutherus/builds/Arduino/build/linux/work/libraries/MicroLCD/MicroLCD.h:67:35: warning: '__progmem__' attribute ignored [-Wattributes]
void draw(const PROGMEM byte* buffer, byte width, byte height);
^
/home/lutherus/builds/Arduino/build/linux/work/libraries/MicroLCD/MicroLCD.h:84:35: warning: '__progmem__' attribute ignored [-Wattributes]
void draw(const PROGMEM byte* buffer, byte width, byte height);
^
/home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino: In function 'void line()':
sketch_nov14a:39: error: 'oled' was not declared in this scope
oled.line(x0, y0, x1, y1); // Рисуем линию от (x0,y0) до (x1,y1);
^
/home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino: In function 'void rectangle()':
sketch_nov14a:48: error: 'oled' was not declared in this scope
oled.rect(x0, y0, width, height); // Рисуем прямоугольник от (7,5) до (31,18)
^
/home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino: In function 'void filled()':
sketch_nov14a:54: error: 'oled' was not declared in this scope
oled.rectFill(7, 5, 35, 5); // Заполняем прямоугольник от (7, 5) до (42, 10)
^
/home/lutherus/scripts/sketch_nov14a/sketch_nov14a.ino: At global scope:
sketch_nov14a:61: error: expected initializer before 'oled'
oled.circle(LCDWIDTH/2, LCDHEIGHT/2, radius);
^
sketch_nov14a:62: error: 'oled' does not name a type
oled.display(); // Рисуем на экране
^
sketch_nov14a:64: error: 'oled' does not name a type
oled.circleFill(42, 20, 7); // Заполнить круг радиусом 7 с центром в (42, 20)
^
sketch_nov14a:65: error: 'oled' does not name a type
oled.display(); // Рисуем на экране
^
sketch_nov14a:67: error: expected declaration before '}' token
}
^
exit status 1
'oled' was not declared in this scope
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
@user38974, 👍-1
Обсуждение1 ответ
▲ 0
Я заметил, что в функции Circle отсутствует открывающая фигурная скобка. Не уверен, что именно это вызвало ошибку, которую вы видите сейчас, но ее определенно нужно исправить.
,
@Delta_G
Смотрите также:
- Ошибка компиляции кода для Arduino/Genuino Uno
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
- Ошибка при компиляции скрипта: "avr-g++: error: CreateProcess: No such file or directory"
- 'AttachPinChangeInterrupt' was not declared in this scope
- Что мне делать с StackOverflow при ошибке компиляции?
- Ошибка компиляции — желтый светодиод мигает, когда я установил и подключил плату Arduino UNO к ПК с Windows XP
- Ошибка компиляции для платы Arduino Uno
Это точно полный текст ошибки? Я никогда раньше этого не видел. Я думаю, что если вы хотите, чтобы кто-то другой нашел проблему, точное сообщение об ошибке было бы полезно. Не пытайтесь перефразировать это, потому что вы вырезаете важную информацию. Я уверен, что компилятор точно сказал вам, в какой строке он обнаружил проблему. Начни с поиска там., @Delta_G