-
Вложений: 4
Arduino & display siemens S65
На днях у друга нарыл вот такую штуку
Вложение 8600
Интересно кто ни будь, подключал это дело к Arduino
Вот pdf по подключению
Вложение 8601
Заранее спасибо за любую помощь.
Вот что нашел по теме
http://www.watterott.net/projects/s65-shield?
http://tinylogic.blogspot.com/search/label/S65
Осталось только прикупить детальки :confused:
Примерно развел плату
Вложение 8615
Прошу сильно не пинать. Почти первый раз делал. :)
Библиотека для Arduino с примерами
-
Re: Arduino & display siemens S65
Не знаю как к ардуине, но к обычной атмеге у меня практически с первого раза подцепился:
http://i057.radikal.ru/1004/a3/b95076e50554.jpg
-
Re: Arduino & display siemens S65
-
Re: Arduino & display siemens S65
Я для пробы прикручивал к ардуине
http://i057.radikal.ru/1007/d1/47b50c7f7764.jpg
библиотека отсюда
http://www.watterott.net/projects/s65-shield?
согласование делилками на резюках... все работает
-
Re: Arduino & display siemens S65
И какой список деталей? Я конечно понимаю, что все умею читать схемы, с лету переводить с английского/немецкого, юзать поиск и все сразу работает, но хотелось бы знать, так сказать, азы :) Если не трудно конечно :)
Сколько каких резисторов? На какие ноги? Тестовый скетч? Вот как здесь
-
Re: Arduino & display siemens S65
схем не рисовал, вот для вас накидал побыстрому
http://s47.radikal.ru/i116/1007/c5/81814b09197f.gif
стабилизатор на 3 вольта лучше конечно какой нибудь настоящий :)
скетч например такой
Код:
#include <S65Display.h>
S65Display lcd;
void setup()
{
lcd.init(4);
lcd.clear(RGB(0,0,0));
lcd.drawRect(1,1,175,131,RGB(255,255,255));
lcd.drawTextPGM(10, 57, PSTR(" Hello! "), RGB(255,255,255), RGB(0,0,0));
}
void loop()
{
}
-
Re: Arduino & display siemens S65
Питание 3,3в можно взять с Ардуины
-
Re: Arduino & display siemens S65
Вот!) Спасибо!
Буду вечером ломать) Тут не должно быть проблем с инициализацией?)
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
Chip
Питание 3,3в можно взять с Ардуины
непотянула она вроде
-
Re: Arduino & display siemens S65
Собрал схему как показана выше, только для питания подсветки сделал схему на MAX232. И вышел у меня казус - дисплей запускался через пень-колоду, на 10 раз и то не всегда. Перепроверил и перебрал все! А оказалось нужно было контакты дисплея помыть после пайки, видимо сопротивление между контактами было недостаточным. Только нужно это делать осторожно чтобы жидкость не попала во внутрь дисплея, контактами вниз. А то можно попасть на мытье еще и подсветки.
Может мой опыт кому пригодится...
-
Re: Arduino & display siemens S65
У испытавших какие идеи практического использования в авто?
-
Re: Arduino & display siemens S65
Как вариант, можно сделать USB Radio автономным на случай поломки компа
-
Re: Arduino & display siemens S65
Ну или как в проекте c сайта vwts
-
Re: Arduino & display siemens S65
В процессе экспериментов с дисплеем сделал вывод картинки с компа. Время вывода полного экрана 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])); // вывод пикселя на экран
}
}
-
Re: Arduino & display siemens S65
адреса пикселей можно через цикл индексировать.
А картинку принимать и выводить блоками по 1кб без адресов
Для чего адресовать каждый пиксель? И так понятно что они друг за другом идут
-
Re: Arduino & display siemens S65
Спасибо за подсказку. Почти так и сделал, только буфер последовательного порта > 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
}
}
}
}
-
Re: Arduino & display siemens S65
Я при скорости порта 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;
}
}
-
Re: Arduino & display siemens S65
Программу вывода изображений через ком порт , можно скачать здесь
Не забудьте залить скетчь из темы с программой
-
Re: Arduino & display siemens S65
Chip, русскими шрифтами не озадачивался?
-
Re: Arduino & display siemens S65
Пока еще руки не дошли до шрифтов.
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
zhserg
Спасибо за подсказку. Почти так и сделал, только буфер последовательного порта > 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
}
}
}
}
Подскажите, пожалуйста, новичку.
Не могу разобраться, как нужно слать ардуине. Я так понимаю что нужна последовательность RGB, например, 255044120. При отправке подобного кода ардуина рисует пиксели, но не требуемого цвета. Не знаю в каком режиме нужно слать через терминал(byte, ascii, hex, dec)?
Еще вопрос, какой программой вы пользовались для разложения картинки на последовательность цветов пикселей?
Chip, насчет русских шрифтов нет новостей?
-
Re: Arduino & display siemens S65
В терминале нужно посылать по одному байту
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
Chip
В терминале нужно посылать по одному байту
Спасибо, разобрался! Все рисует правильно, правда скорость не выше 9600, больше не держит, ардуина самодельная, которая на arduino.cc.
Если кто знает программу, раскладывающую картинку на последовательность цветов, буду благодарен.
-
Re: Arduino & display siemens S65
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
Chip
Видел ее, к сожалению, ничего не получилось из-за ft232, при запуске жалуется на отсутствие устройства. Думал перегнать ей картинку, затем сниффером com порта перехватить данные и уж затем слать обычной терминалкой в com.
-
Re: Arduino & display siemens S65
Потратив несколько часов и перепробовав кучу способ, я таки нашел решение! Скетч использовал от zhserg. Алгоритм следующий:
1) открываем изображение в фотошопе, обрезаем до 176х132, именно такого размера, иначе изображение пойдет волной на экране.
2) сохраняем изображение в .raw формат, ставим Save channels in: interleaved order и header 0.
3) ставим программу com port toolkit, затем открываем наш raw файл, ставим галочку "отправка сырых данных" и жмем send.
Для тех кто не знает, raw формат как раз представляет последовательность RGB без всего лишнего.
---
Все таки моя ардуина поддерживает скорость 115200, скорость вывода картинки около 6секунд, взамен 72с. при 9600.
-
Re: Arduino & display siemens S65
Уже третьи сутки пытаюсь инициализировать дисплей lph88. За основу взял код для LS020 отсюда, а команды инициализации отсюда. Написал скетч для Arduino, но дисплей не реагирует. Может есть люди, которые привязывали lph88 к Arduino, помогите пожалуйста. Мой код:
PHP код:
// lcd pins connected to corresponding lcd pins
#define RS (4)
#define RESET (17)
#define CS (16)
#define CLK (13)
#define DAT (11)
void setup() {
// set output pins
pinMode(RESET, OUTPUT);
digitalWrite(RESET,LOW);
pinMode(CS, OUTPUT);
digitalWrite(CS,HIGH);
pinMode(RS, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(DAT, OUTPUT);
/**************************
*
* init starts here
*
**************************/
delay(100); // wait a bit for everything to settle down... who knows
digitalWrite(CS, HIGH);
digitalWrite(RS, HIGH);
digitalWrite(RESET, LOW);
delay(50);
digitalWrite(RESET, HIGH);
delay(50);
digitalWrite(CS,LOW);
unsigned char LCD_init_masiv[70][3] ={
{0x74,0x00,0x00}, //1 block
{0x76,0x00,0x01},
{0x74,0x00,0x07},
{0x76,0x00,0x00},
{0x74,0x00,0x02},
{0x76,0x04,0x00},
{0x74,0x00,0x04},
{0x76,0x00,0x00},
{0x74,0x00,0x0C},
{0x76,0x00,0x01},
{0x74,0x00,0x0D},
{0x76,0x06,0x16},
{0x74,0x00,0x1E},
{0x76,0x10,0x10}, //2 block
{0x74,0x00,0x03},
{0x76,0x00,0x0C},
{0x74,0x00,0x0E},
{0x76,0x2D,0x1F},
{0x74,0x00,0x0D},
{0x76,0x06,0x16},
{0x74,0x00,0x01},
{0x76,0x02,0x15},
{0x74,0x00,0x0F},
{0x76,0x00,0x00},
{0x74,0x00,0x0B},
{0x76,0x00,0x00},
{0x74,0x00,0x11},
{0x76,0x00,0x00}, //3 block
{0x74,0x00,0x06},
{0x76,0x00,0x00},
{0x74,0x00,0x05},
{0x76,0x00,0x30},
{0x74,0x00,0x14},
{0x76,0xAF,0x00},
{0x74,0x00,0x15},
{0x76,0x00,0x00},
{0x74,0x00,0x16},
{0x76,0x83,0x00},
{0x74,0x00,0x17},
{0x76,0xAF,0x00},
{0x74,0x00,0x20},
{0x76,0x00,0x00}, //4 block
{0x74,0x00,0x30},
{0x76,0x00,0x00},
{0x74,0x00,0x31},
{0x76,0x04,0x00},
{0x74,0x00,0x32},
{0x76,0x02,0x07},
{0x74,0x00,0x33},
{0x76,0x07,0x00},
{0x74,0x00,0x34},
{0x76,0x00,0x05},
{0x74,0x00,0x35},
{0x76,0x07,0x03},
{0x74,0x00,0x36},
{0x76,0x07,0x07}, //5 blocl
{0x74,0x00,0x37},
{0x76,0x00,0x07},
{0x74,0x00,0x3A},
{0x76,0x12,0x00},
{0x74,0x00,0x3B},
{0x76,0x00,0x09},
{0x74,0x00,0x07},
{0x76,0x00,0x05},
{0x74,0x00,0x07},
{0x76,0x00,0x25},
{0x74,0x00,0x07},
{0x76,0x00,0x27},
{0x74,0x00,0x07},
{0x76,0x00,0x37}
};
int i;
for(i=0;i<=69;i++){
shiftOut(DAT, CLK, MSBFIRST, (LCD_init_masiv[i][0] >> 8));
shiftOut(DAT, CLK, MSBFIRST, LCD_init_masiv[i][0]);
shiftOut(DAT, CLK, MSBFIRST, (LCD_init_masiv[i][1] >> 8));
shiftOut(DAT, CLK, MSBFIRST, LCD_init_masiv[i][1]);
shiftOut(DAT, CLK, MSBFIRST, (LCD_init_masiv[i][2] >> 8));
shiftOut(DAT, CLK, MSBFIRST, LCD_init_masiv[i][2]);
}
// were done, display doesnt need to listen anymore
digitalWrite(CS, HIGH);
pinMode(13, OUTPUT);
}
void loop() {
// blink onboard led to signal end of init
digitalWrite(13,HIGH);
delay(250);
digitalWrite(13,LOW);
delay(250);
}
У меня Arduino UNO, питание для подсветки беру внешнее 10В, а для питания самого дисплея эти же 10В через стабилизатор 3,3В. Согласование с Arduino через делители.
-
Re: Arduino & display siemens S65
В этой библиотеке есть lph88 закоментировано. Посмотри может поможет. Я сам не пробовал.
-
Re: Arduino & display siemens S65
И эту библиотеку я пробовал, подправил 1 строчку (больше не нашел), но дисплей инициализировать не удалось.
-
Re: Arduino & display siemens S65
В файле S65Display.h нужно раскоментировать твой дисплей, а ненужный закоментировать
Цитата:
//Display settings
#define S65_LS020 //LS020 type (default)
//#define S65_LPH88 //LPH88 type
//#define S65_L2F50 //L2F50 type
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
Chip
В файле S65Display.h нужно раскоментировать твой дисплей, а ненужный закоментировать
Да, именно эту строку я и нашел. Но дисплей никак не реагирует.
-
Re: Arduino & display siemens S65
Заработал дисплей. Зря грешил на программную часть. С библиотекой отсюда все впорядке, она отлично работает с LPH88. А вот код инициализации отсюда у меня так и не смог зажечь дисплей. Проблема оказалась такая же как у zhserg'а, все заработало после того как промыл контакты и для уверенности провел между каждым скальпелем. Единственное: после промывки, в районе контактов со стороны дисплея, появилось пятно, не особо заметно, но все же напрягает. Буду пробовать сушить.
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
DenisI
Единственное: после промывки, в районе контактов со стороны дисплея, появилось пятно, не особо заметно, но все же напрягает. Буду пробовать сушить.
Не поможет сушка. Я разбирал дисплей полностью и каждую составляющую мыл.
-
Re: Arduino & display siemens S65
Цитата:
Сообщение от
zhserg
Не поможет сушка. Я разбирал дисплей полностью и каждую составляющую мыл.
Пробовал разбирать, но пластмассовая рамка не слезла..грубую силу решил не применять =)) и оставил как есть.
Появилась новая проблема: иногда при включении экран мутнеет/темнеет, а выводимое на него изображение размывается, и с цветом не понятно что твориться. Когда отключаю питание на несколько минут, затем снова подключаю -- все ок, но через несколько перезагрузок Arduino возникает та же проблема. На контакты дисплея 2,9 и 1,8 вольта подавал 3,3. Решил понизить через 3-х вольтовый стабилитрон и резистор, в итоге на эти два контакта поступает 2,86 вольта. Пока все ОК. Тестирую.
-
Re: Arduino & display siemens S65
Подключил дисплейчик lph88 к Arduino Mega. Библиотека отсюда: http://www.watterott.net/projects/s65-shield?
Как выводить на дисплей значение переменной?
Мне надо вывести название переменной и ее значение, считанное с аналового входа.
Что- то типа:
lcd.drawTextPGM(3, 6, PSTR("Namber:"), 2, RGB(255,255,255), RGB(0,0, 0));
И чтоб после Namber: выводилось значение.
-
Re: Arduino & display siemens S65
Сам не проверял, но ты попробуй char(x), где х твоя переменная
-
Re: Arduino & display siemens S65
Спасибо, вечером попробую.
-
Re: Arduino & display siemens S65
Не получается так. Может кто поможет?
-
Re: Arduino & display siemens S65
Можно посмотреть строку куда ты вставляешь эту переменную?
-
Re: Arduino & display siemens S65
Мне надо, чтоб на дисплейчике lph88 можно было отображать значения переменных, как при выводе на Serial Port компьютера:
Например:
for(int i=0;i<2;i++)
{
Serial.println (i);