Проблема с библиотекой TVOut

Maxim1441
Offline
Зарегистрирован: 17.05.2013

День добрый! Только начал юзать Arduino. Начал с подключения платы к ТВ через TvOut

Все спаял, запустил. Работает. Проблема возникает, когда хочу подключить файлы с побитовыми изображениям. Я создал папку со своим проектом, запихал туда два файла "MyBitmap1.cpp" и "MyBitmap1.h".

В самом скетче прописываю:



#include "MyBitmap1.h"

В файле MyBitmap1.h:



#ifndef MYBITMAP1_H
#define MYBITMAP1_H
extern const unsigned char MyBitmap1[];
#endif

В файле MyBitmap1.cpp:



#include "MyBitmap1.h"
PROGMEM const unsigned char MyBitmap1[] = {
13,16,
0x00,0x1C,
0x3F,0x54,
0x92,0xD3,
0x92,0xD3,
0x92,0x54,
0x3F,0x1C,
0x00,0x00,
0x1C,0xFE,
0x15,0x25,
0xE5,0x25,
0xE5,0x25,
0x15,0xFE,
0x1C,0x00
};

При проверке компилятор выдает "MyBitmap1.cpp:2: error: expected constructor, destructor, or type conversion before 'const'"

Не подскажите, в чем может быть проблема?

У меня вообще складывается впечатление, что арудиноувское ПО у меня с файлами что попало творит - то при запуске не находит файлы библиотек, подключенные в скетче, то ищет их где-то в левых папках...

toc
Offline
Зарегистрирован: 09.02.2013

Попробуйте так:

1. удалите .cpp файл

2. файл .h сделайте таким: 


PROGMEM const unsigned char MyBitmap1[] = {
13,16,
0x00,0x1C,
0x3F,0x54,
0x92,0xD3,
0x92,0xD3,
0x92,0x54,
0x3F,0x1C,
0x00,0x00,
0x1C,0xFE,
0x15,0x25,
0xE5,0x25,
0xE5,0x25,
0x15,0xFE,
0x1C,0x00
};

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

toc, это называется делать затычку или костыль. Никогда не инициализируйте переменные/массивы в заголовочных файлах. Да, в arduino это прокатит, но если Вы будете писать программы не только в ArduinoIDE, то будете удивлены предупреждениям, когда включите заголовочный файл в несколько других файлов.

Maxim1441, просто добавьте строку #include <avr/pgmspace.h> в начале MyBitmap1.cpp.

Я не поленился и заглянул сюда http://www.arduino.cc/en/Reference/PROGMEM там даже примеры есть.

Одному лень посмотреть примеры, другой советует что попало.

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

А насколько библиотека Tvout грузит ардуину (мега)?

Такое впечатление, что все ресурсы тратятся на нее...

Maxim1441
Offline
Зарегистрирован: 17.05.2013

Спасибо за ответы! Мне помогло такая фигня - просто скопировал папку с примером, идущем с либой, и там все лишнее стер. Так заработало. 

Про "загрузку" - если динамическую картинку выводить, то да, капитально грузит. Я тренируюсь что-то типа игры делать. А там все динамично, поэтому в цикле стоит:



 TV.delay_frame(1); //ждем один кадр, эта ф-я, чтобы не было "моргания" при смене кадров
 TV.clear_screen(); //очищаем экран 

В общем, у меня там как гоночная аркада - дорога, три движущиеся линии разметки. Вот как на скрине, когда 4-е битовых изображения выводятся, то норм, а уже пятое добавляю - тормоза появляются. Да, МК у меня ATMega 328 (16Mhz, 32k ROM, 2k RAM).

Думаю, если TV.delay_frame(1) в проекте не критичен, то можно норм графику вывести.