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.

, 👍-1

Обсуждение

Это точно полный текст ошибки? Я никогда раньше этого не видел. Я думаю, что если вы хотите, чтобы кто-то другой нашел проблему, точное сообщение об ошибке было бы полезно. Не пытайтесь перефразировать это, потому что вы вырезаете важную информацию. Я уверен, что компилятор точно сказал вам, в какой строке он обнаружил проблему. Начни с поиска там., @Delta_G


1 ответ


0

Я заметил, что в функции Circle отсутствует открывающая фигурная скобка. Не уверен, что именно это вызвало ошибку, которую вы видите сейчас, но ее определенно нужно исправить.

,