У испытавших какие идеи практического использования в авто?
У испытавших какие идеи практического использования в авто?
Как вариант, можно сделать USB Radio автономным на случай поломки компа
Ну или как в проекте c сайта vwts
В процессе экспериментов с дисплеем сделал вывод картинки с компа. Время вывода полного экрана 132х176 около 25 сек. Я сделал что-то не так? Подскажите.
PHP код:
#include <S65Display.h>
S65Display lcd;
byte volatile data[5]; //массив входных данных
void setup(){
//инициализация LCD
lcd.init(4); //spi-clk = Fcpu/4
//очистка дисплея, черный фон
lcd.clear(RGB(0,0,0));
Serial.begin(115200);
}
void loop(){
if (Serial.available() == 5) {
for (int i = 0; i < 5; i++)
{
data[i] = Serial.read(); // прочитать данные из порта в массив
}
lcd.drawPixel(data[0],data[1],RGB(data[2],data[3],data[4])); // вывод пикселя на экран
}
}
адреса пикселей можно через цикл индексировать.
А картинку принимать и выводить блоками по 1кб без адресов
Для чего адресовать каждый пиксель? И так понятно что они друг за другом идут
Последний раз редактировалось Chip; 06.01.2011 в 11:03.
Спасибо за подсказку. Почти так и сделал, только буфер последовательного порта > 128 байт не получается применить - не работает. Но даже с буфером 126 байт скорость вывода получилась практически теоретически достижимая. На 115200 - около 7 сек. На 256000 (оказывается ардуинка и такую скорость поддерживает!!!) - около 4 сек. Эксперименты с выводом картинки завершил
PHP код:
#include <S65Display.h>
S65Display lcd;
byte volatile data[126]; //массив входных данных
int n=0, nbuf=126; // индекс массива, размер буфера
byte x=1, y=1; // текущие координаты
void setup(){
//init LCD
lcd.init(4); //spi-clk = Fcpu/4
//clear screen
lcd.clear(RGB(0,0,0));
Serial.begin(256000);
}
void loop(){
if (Serial.available() == nbuf) {
for (int i = 0; i < nbuf; i++) data[i] = Serial.read(); // прочитать данные из порта в массив
for (int i = 0; i < nbuf/3; i++) {
lcd.drawPixel(x ,y ,RGB(data[n],data[n+1],data[n+2])); // вывод пикселя на экран
x++; // увеличиваем значение X
n = n + 3;
if (n > nbuf-1) n = 0;
if (x > 176) {
x = 1;
y++; // увеличиваем значение Y
}
}
}
}
Я при скорости порта 115200 добился загрузки картинки за 4 сек
PHP код:
#include <S65Display.h>
S65Display lcd;
word volatile data[126]; //массив входных данных
byte nbuf=126, x=0, y=0, x_end=0, y_end=0; // индекс массива, размер буфера
void setup()
{
TCCR2B = TCCR2B & 0b11111000 | 1;
pinMode(3,OUTPUT);
analogWrite(3,137); //включить подсветку
lcd.init(2);
lcd.clear(0);
Serial.begin(115200);
}
void loop()
{
if (Serial.available() >= nbuf)
{
for (byte i = 0; i < nbuf/2; i++)
{
byte a = Serial.read();
byte b = Serial.read(); // прочитать данные из порта в массив
data[i]=((a<<8)|(b));
}
for (byte idx = 0; idx < nbuf/2; idx++)
{
lcd.drawPixel(x , y , data[idx]); // вывод пикселя на экран
x++; // увеличиваем значение X
if (x > 176-1)
{
x = 0;
y++; // увеличиваем значение Y
}
}
}
if(y==131 && x==128 )
{
x = 0;
y = 0;
}
}
Последний раз редактировалось Chip; 31.01.2011 в 22:27.
Программу вывода изображений через ком порт , можно скачать здесь
Не забудьте залить скетчь из темы с программой
Последний раз редактировалось Chip; 31.01.2011 в 22:31.
Chip, русскими шрифтами не озадачивался?
Пока еще руки не дошли до шрифтов.
Последний раз редактировалось Chip; 08.02.2011 в 21:43.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)