подключение дисплея от Siemens c55

Unreturned
Offline
Зарегистрирован: 04.05.2013

новичок, покопал инэт, нашёл инфу на дисплей: чип PCF8812, схема подключения

 

нашёл библиотеку  подключаюсь к проверенной Arduino nano v.3 к пинам, указанным в примере Hello World!: 

VDD-3V3

SCLK-D13

SDIN-D11

D/C-D10

SCE-D9

GND-GND

VOUT подтягиваю конденсатором 1мф к земле

RES-D8

распиновка дисплея

проверил, подключил, залил пример



/*

  HelloWorld.pde
  
  "Hello World!" example code.
  
  >>> Before compiling: Please remove comment from the constructor of the 
  >>> connected graphics display (see below).
  
  Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
  
  Copyright (c) 2012, olikraus@gmail.com
  All rights reserved.

  Redistribution and use in source and binary forms, with or without modification, 
  are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this list 
    of conditions and the following disclaimer.
    
  * Redistributions in binary form must reproduce the above copyright notice, this 
    list of conditions and the following disclaimer in the documentation and/or other 
    materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
  
*/


#include "U8glib.h"

// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device

//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10);	// SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
//U8GLIB_ST7920_192X32_4X u8g(10);		// SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17);	// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_LM6059 u8g(13, 11, 10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_LM6063 u8g(13, 11, 10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_BW u8g(10, 9);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); 		// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16); 	// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16); 	// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16); 	// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 );  			// 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); 	// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9);	// SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(10, 9);		// HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);	// HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9);	// SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9);             // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);	// HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE);	// I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE);	// I2C
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8);	// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16


void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 22, "Hello World!");
}

void setup(void) {
  
  // flip screen, if required
  // u8g.setRot180();
  
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) 
    u8g.setColorIndex(255);     // white
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
    u8g.setColorIndex(3);         // max intensity
  else if ( u8g.getMode() == U8G_MODE_BW )
    u8g.setColorIndex(1);         // pixel on
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  delay(500);
}

ну и в итоге стандартная ламерская проблема - не работает, всё же вроде по инструкции...

тупо наткнулся на стену, просто незнаю где копать.

дисплей поставил обратно в телефон - показывает.

библиотека лежит здесь

romster
Offline
Зарегистрирован: 15.04.2013

у меня такой же дисплей из сименса, рабочий. буду пробывать...

romster
Offline
Зарегистрирован: 15.04.2013

вобщем надо собирать и проверять

romster
Offline
Зарегистрирован: 15.04.2013

помогите сопоставить выводы, может где-то тут косяк ?

в библиотеке написано:

U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8);  //  SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8

на диспелее же пины: VDD=1 SCK=2  MOSI=3 D\C=4 CS=5 GND=6 VOUT=7 RES=8

adruino     <--->  PCF8812 

SCK (13pin) на SCK (2pin)

MOSI(11pin) на MOSI(3pin)

CS(10pin) на CS(5pin)

A0(9pin) на D\C(4pin)     что за А0 ? на D\C ее цеплять ?

RESET(8pin) на RES=8

Подключил вот так, но дисплей ничего не выводит. Названия выводов в библиотеке какие-то вводящие в заблуждение.

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Давайте начнем сначала.. вы к чему этот дисплей подключаете? к к утюгу?

romster
Offline
Зарегистрирован: 15.04.2013

Unreturned пишет:

VDD-3V3

SCLK-D13

SDIN-D11

D/C-D10

SCE-D9 

GND-GND

VOUT подтягиваю конденсатором 1мф к земле

RES-D8

SCE  - это чип селект ? а подключен  к A0

romster
Offline
Зарегистрирован: 15.04.2013

подключаю к ардуино )

поидее этот дисплей можно запустить на любом ардуино.

но у меня leonardo.

romster
Offline
Зарегистрирован: 15.04.2013

Puhlyaviy пишет:

Давайте начнем сначала.. вы к чему этот дисплей подключаете? к к утюгу?

в сообщении 3# 

там жалкое подобие таблицы

левый стоблей ардуино(leonardo) правый столбец (LCD от С55 PCF8812)

adruino <---> PCF8812

SCK (13pin) на SCK (2pin)

MOSI(11pin) на MOSI(3pin)

CS(10pin) на CS(5pin)

A0(9pin) на D\C(4pin) что за А0 ? на D\C ее цеплять ?

RESET(8pin) на RES=8

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

РАЦИЯ НА ТАНКЕ

  • SPI: на разъеме ICSP. Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI. Обратите внимание, что в Leonardo выводы SPI не разведены на цифровые вход/выходы как это было в предыдущих версиях Arduino контроллеров.
romster
Offline
Зарегистрирован: 15.04.2013

Puhlyaviy пишет:

РАЦИЯ НА ТАНКЕ

  • SPI: на разъеме ICSP. Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI. Обратите внимание, что в Leonardo выводы SPI не разведены на цифровые вход/выходы как это было в предыдущих версиях Arduino контроллеров.

Бинго ! Здоровенный вам плюс, как я мог про это забыть, а сопоставление пинов которое я предложил верно ? в SPI нету A0

romster
Offline
Зарегистрирован: 15.04.2013

Вобщем в библиотеке реализован так назывыаемый хардварный SPI:

HW SPI  U8GLIB_PCF8812(cs, a0 [, reset]) то есть SCK и MOSI берем строго с ICSP разъема leonardo, а CS, A0 и reset можно назначить програмно указав их при вызове функции U8GLIB_PCF8812.

romster
Offline
Зарегистрирован: 15.04.2013

Катастрофа, все подключил в режиме HW SPI так сказать и всеравно не выводит ничерта, нокиевский дисплей подключенный пин в пин и то работает глюкаво чуть, но вывел же Hello World. Подключил обратно в телефон, диспелй заработал, от ардуины не хотит. Буду грызть дальше ...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

чейта вы не досчитались проводов... должно быть 8 штук... а у вы только 5 назвали

да и на схеме я как минимум 7 насчитал.. 

romster
Offline
Зарегистрирован: 15.04.2013

Puhlyaviy пишет:

чейта вы не досчитались проводов... должно быть 8 штук... а у вы только 5 назвали

да и на схеме я как минимум 7 насчитал.. 

нет, нет. проводков 7, я писал выше, как подключаю просто про VCC и GND не пишу, так как поумолчанию подключаются.

Кто же мне поможет ?

leshak
Offline
Зарегистрирован: 29.09.2011

Тут еще, нужно прошерстить даташит на предмет какое питания должно быть у этого дисплея. Обычно в мобилках обитают трех-вольтовые запчасти. Так что возможно питать его 5v - не самая лучшая идея. Так же нужно проверить его на предмет толерантности его входов к 5V, если в даташите ничего про это не говорится, то лучше сигналы от ардуины к дисплею "согласовывать" (хотя-бы делителем напряжения). Дабы не упалить входы дисплея.Согласование логических уровней 5В и 3.3В устройств / Схемотехника / Сообщество EasyElectronics.ru

romster
Offline
Зарегистрирован: 15.04.2013

вобщем в 8UGLIB  эта либа не работает с данным дисплеем Siemens A52. Печально.

romster
Offline
Зарегистрирован: 15.04.2013

leshak пишет:

...Дабы не упалить входы дисплея....

Я эксперементирую на леонардо, там есть переключатель режима логической единицы  5в<->3.3в.

Unreturned
Offline
Зарегистрирован: 04.05.2013

по лени и неопытности забил я на этот дисплей, а библа похоже требует дополнительной настройки (помимо раскоменирования нужного чипа).

поставил дисплей от нокии 3310 чип PCD8544 (естессно уровни у него 3.3в, что требует дополнительной магии), с другими библами работает с пол-пинка, с этой ни в какую.

Unreturned
Offline
Зарегистрирован: 04.05.2013

romster пишет:

SCE  - это чип селект ? а подключен  к A0

D9 и А0 вроде разные вещи...

romster
Offline
Зарегистрирован: 15.04.2013

Да у меня есьб и нокиевский шилд лсд, просто хотел еще и сименсовский дисплей поюзать, но либа явно сырая.

VladimirVladimi...
Offline
Зарегистрирован: 01.02.2014

Не спешите выкидывать дисплеи от Сименс!

Я сделал так что у меня заработало. В U8GLIB_PCF8812 неверная для сименс последовательность инициализации. Там инициализация для нокий. Вобщем меняйте массив и будет вам счастье (только нокия отвалится, потом обратно поменяйте для нокий).

Итак

ЧТО МЕНЯТЬ:

libraries\U8glib\utility\u8g_dev_pcf8812_96x65.c

НОВЫЙ МАССИВ (коменты там уже неактуальны):

static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = {
  U8G_ESC_CS(0),             /* disable chip */
  U8G_ESC_ADR(0),           /* instruction mode */
  U8G_ESC_RST(1),           /* do reset low pulse with (1*16)+2 milliseconds */
  U8G_ESC_CS(1),             /* enable chip */
  0x021,		                /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */
  0x009,		                /* temp. control: b10 = 2 */
  0x0E0,		                /* bias system 1:48 */
  0x016,		/* medium Vop */
  0x006,		                /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */
  0x020,		                /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */
  0x00c,		                /* display on, normal */
  U8G_ESC_CS(0),             /* disable chip */
  U8G_ESC_END                /* end of sequence */
};

Взял строку инициализации у http://www.zigbee.ru/files/hobby/electronics/indication/SiemensC55/lcd_test.cpp

Протестировал на А55 их примером Hello Word

У кого есть желание, свяжитесь с u8gib - https://code.google.com/p/u8glib/ - расскажите им о их баге для сименсов, мне не охота.

 

PS Да! Там еще неверная ширина дисплея указана! Меняйте в том же файле

#define WIDTH 96 на #define WIDTH 100

Удачи!

VladimirVladimi...
Offline
Зарегистрирован: 01.02.2014

Должна работать. см. мое сообщение выше.

romster
Offline
Зарегистрирован: 15.04.2013

Плюсую!! буду проверять

а чтобы после нокия не отвалилась, нужно сохранить оригинальную либу u8g_dev_pcf8812_96x65.c , а для сименса сохранить с другим именем u8g_dev_pcfsiemens_100x65.c

 

4ishops
Offline
Зарегистрирован: 06.10.2012

romster пишет:

Я эксперементирую на леонардо, там есть переключатель режима логической единицы  5в<->3.3в.

 

Можно подробнее как это сделать на 32U4 ?

romster
Offline
Зарегистрирован: 15.04.2013

похоже у меня редкая китайская поделка, так как еле нашел фотку своей ардуино, вот она. 

mih
Offline
Зарегистрирован: 03.04.2014

Изменил массив как вы сказали, 

но увы немогу запустить, может чтото упустили???, 

Arduino Promini

подключал по этой распиновке 

VDD-3V3

SCLK-D13

SDIN-D11

D/C-D10

SCE-D9

GND-GND

VOUT подтягиваю конденсатором 1мф к земле

RES-D8

ZyBoy
Offline
Зарегистрирован: 03.04.2014

Спасибо за тему, очень много полезной информации по этому экрану.

Хочу свои 5 копеек вбросить до кучи: на самом деле размеры этого экрана как и написано на "схеме", 102*65, но 1 строка и 1 столбец там фактически отсутствуют. Поэтому в "u8g_dev_pcf8812_96x65.c" при его редактировании по хорошему нужно все же указать:

#define WIDTH 101
#define HEIGHT 64

Если оставить "#define WIDTH 100", то на моем экране правый столбец мусором "обрастает", полезную информацию вывести туда нельзя. А "#define HEIGHT 64" просто для порядку ;)

А еще, в параметрах инициализации есть параметры Bias и Vop (читайте камменты в массиве u8g_dev_pcf8812_init_seq[]), которые отвечают за "качество" картинки. При указаных выше значениях инициализации у меня экран после включения практически сразу чернел. Опытным путем подобрал для своего экрана новое значение Bias:

static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = {
  U8G_ESC_CS(0),     /* disable chip */
  U8G_ESC_ADR(0),    /* instruction mode */
  U8G_ESC_RST(1),    /* do reset low pulse with (1*16)+2 milliseconds */
  U8G_ESC_CS(1),     /* enable chip */
  0x021,             /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */
  0x009,             /* temp. control: b10 = 2 */
  0x0B7,             /* bias system 1:48 */
  0x016,             /* medium Vop */
  0x006,             /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */
  0x020,             /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */
  0x00c,             /* display on, normal */
  U8G_ESC_CS(0),     /* disable chip */
  U8G_ESC_END        /* end of sequence */
};

С черным экраном бился целый вечер, пока более внимательно не вычитал вот эту статью. Собственно, как я понимаю, VladimirVladimirovitch как раз там инициализацию экрана и находил.

mih
Offline
Зарегистрирован: 03.04.2014

Может кто кинет рабочим скетчем и файлами которые нужно подменить, чтоб в коде не копаться, а то я только учусь, а получается, что уже нужно быть хорошим программером чтоб лсд подконектить.

ZyBoy
Offline
Зарегистрирован: 03.04.2014

mih пишет:
получается, что уже нужно быть хорошим программером чтоб лсд подконектить.

Вовсе нет, сам мучаю Ардуинку недели 2 всего. В Вашем сообщении распиновка несколько отличается от "рабочей" - перечитайте внимательно тему. Однако я не могу быть уверенным что и она подойдет, т.к. лично я с ProMini пока не общался, она еще идет мне где-то почтой. А вот на Uno все завелось (если не считать проблему с черным экраном, которая успешно разрешилась)

Скетчи же отлично подходят из примера в библиотеке (если u8g_dev_pcf8812_96x65.c исправить), нужно только раскомментарить правильную строку, определяющую тип контроллера экрана, в нашем случае:

U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8);		// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8

где, кстати, указаны пины подключения:

SCK   = 13 pin arduino => 2 pin экрана = SCLK
MOSI  = 11 pin arduino => 3 pin экрана = SDIN
CS    = 10 pin arduino => 5 pin экрана = SCE
A0    = 9 pin arduino  => 4 pin экрана = D/C
Reset = 8 pin arduino  => 8 pin экрана = RES

Остальные пины экрана: 1 pin = 3.3V, 6 pin = GND, 7 pin контрольный (типа говорит работает ли экран), я его бросил в воздухе - все работает.

mih
Offline
Зарегистрирован: 03.04.2014

Во надо же(((( по своей дурной не внимательности,  отсчитал пины слева направо, а не наоборот как на картинке, теперь уже наверное точно ничего не покажет 

ZyBoy
Offline
Зарегистрирован: 03.04.2014

Я цеплял свой "наизнанку" в ходе эксперментов, ему все равно на это оказалось, прицепил правильно - работает. Тут главное порядок пинов не перепутать, они не "1к1" идут, а в "разнобой".

mih
Offline
Зарегистрирован: 03.04.2014

Теперь точно все правильно, и все как вы написали, но экран вообще не реагирует, 

 

mih
Offline
Зарегистрирован: 03.04.2014

Ребята спасибо большое проблема решена, нашел новый экран, подпаял как положено, тоже возникла проблема с контрастностью, выставил 

08
  0x0B7,             /* bias system 1:48 */
09
  0x016,             /* medium Vop */

и все стало все супер!, 

сейчас все библиотеки из тестов отлично производятся, буду изучать дальше

ZyBoy
Offline
Зарегистрирован: 03.04.2014

Что бы «два раза не вставать», вот тут можно взять русский шрифт. Все отлично работает.

AlexNike
Offline
Зарегистрирован: 04.07.2014

Здравствуйте!

Не сочтите за раскрутку своего ресурса. Тоже заинтересовал данный дисплей, я его подключил и все работает. Специально для новичков решил объединить информацию в одну статью на своем сайте "Подключаем дисплей от Siemens C55/A55/A52 к Arduino".

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Подключил SIEMENS A55  c помощью библиотеки U8glib.h, даже руский язык есть.

Но она реально огромная.

Есть что-то по компактней, кто знает?

4ishops
Offline
Зарегистрирован: 06.10.2012

AlexNike пишет:

Здравствуйте!

Не сочтите за раскрутку своего ресурса. Тоже заинтересовал данный дисплей, я его подключил и все работает. Специально для новичков решил объединить информацию в одну статью на своем сайте "Подключаем дисплей от Siemens C55/A55/A52 к Arduino".

 

Вставили бы сюда скетч и описание, больше пользы чем от ссылок.

 

 

Barny
Offline
Зарегистрирован: 23.01.2015

Некропостинг :-)

Подключил дисплей с первого раза с учетом всех рекомендаций этой ветки (библиотеку до сих пор не исправили), но все же перевернул изображение. В скетче просто раскоментировал строку:

 // flip screen, if required
   u8g.setRot180();

7-й провод оставил в воздухе, вроде работает, хотя изображение едва заметно моргает, может не связано, проверю.

Есть один не приятный мамонт - очень жалко использовать такую кучу пинов, может несть возможность подключить дисплей по i2c ? Например , через PCF8574 ?

И еще, контроллер заметно греется. Может есть другая биллиотека, менее прожорливая.

 

Apocalyps
Offline
Зарегистрирован: 26.07.2015

Barny пишет:

Может есть другая биллиотека, менее прожорливая.

Из библиотек, есть только более свежая библиотека U8g2 от этого же автора. Но опять же, под этот дисплей надо переделать его инициализацию в файле u8x8_d_pcf8812.c на

static const uint8_t u8x8_d_pcf8812_96x65_init_seq[] = {
    
  U8X8_START_TRANSFER(),             	/* enable chip, delay is part of the transfer start */
  
  U8X8_C(0x021),		                /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */
  U8X8_C(0x009),		                /* blank display */
  //
  U8X8_C(0x0B7),		                /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */
  U8X8_C(0x016),		                /* temp. control: b10 = 2 */
  U8X8_C(0x006),		                /* bias system, 0x010..0x07 1:48 */
  U8X8_C(0x020),				/* contrast setting, 0..127 */

  U8X8_C(0x00c),		                /* deactivate chip (PD=1), horizontal increment (V=0), enter normal command set (H=0) */
    
  U8X8_END_TRANSFER(),             	/* disable chip */
  U8X8_END()             			/* end of sequence */
};

 

Barny
Offline
Зарегистрирован: 23.01.2015

Это да, но справа почему-то собирается мусор в 3х столбцах. Скорее всего не верная ширина, но не могу найти, где она задается.

pixel_width = */ 100,
pixel_height = */ 64
не помогает
Apocalyps
Offline
Зарегистрирован: 26.07.2015

Barny пишет:

Это да, но справа почему-то собирается мусор в 3х столбцах. Скорее всего не верная ширина, но не могу найти, где она задается.

pixel_width = */ 100,
pixel_height = */ 64
не помогает

Это я пока сам не могу побороть. Что на ардуине, что на стм32 этот мусор, но на стм почему-то больше

Barny
Offline
Зарегистрирован: 23.01.2015

На старой библиотеке кстати такого нет. Есть ли смысл тогда пользоваться новой ?

Apocalyps
Offline
Зарегистрирован: 26.07.2015

Barny пишет:

На старой библиотеке кстати такого нет. Есть ли смысл тогда пользоваться новой ?

разве что ради новых плюшек, и в добавок у меня старая библиотека подтупливала

Barny
Offline
Зарегистрирован: 23.01.2015

Какая-то фигня творится с анимацией на этом димплее. Если например нарисовать любую фигуру и менять ее координаты на экране, то она вырождается в наклонную фигуру. Как это обойти ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Barny пишет:

Какая-то фигня творится с анимацией на этом димплее. Если например нарисовать любую фигуру и менять ее координаты на экране, то она вырождается в наклонную фигуру. Как это обойти ?

Это нестандартное поведение.

Т.е. для того, чтобы "обойти", нужно найти причину такого поведления т.е. ошибку. Вероятнее всего, она в Вашем скетче. Несколько менее вероятно, что в библиотеке. И совсем маловероятно, что в "железе".

Barny
Offline
Зарегистрирован: 23.01.2015

Хочу сделать красивый компас на базе этого дисплея. Изучаю азы анимации на таком скече:

#include "U8glib.h"
// 101х64
int x=0;
U8GLIB_PCF8812 u8g(7, 11, 10, 9, 8);		// SPI Com: SCK = 7, MOSI = 11, CS = 10, A0 = 9, Reset = 8
void draw(void) 
{
if (x>99)
{
  x=1;
  }
  x++;
u8g.drawBox(1+x,12,20,30);
}
void setup(void) 
{
u8g.setColorIndex(1);// чб дисплей 1-включить цвет, 0 - выключить
u8g.setContrast(90);// контрастность
}

void loop(void) 
{
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
    // rebuild the picture after some delay
  delay(1000);
}

Если в статике, то получается такая картинка:

Если запустить скеч выше, то все кадры вот такие:

Причем, не важно, какая фигура. Все искажаются.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. Что такое "в статике" и "в динамике"? Это первый кадр выводится нормально, а второй, третий и последующие - криво?

2. У Вас что-то странное в draw(). Первый параметр drawbox изменяется на первом проходе от 2, а на последующих от 3 до 101. Может, в этом и проблема? Я бы (методом тыка) изменил в строке 9 на x=0;

Stashevskiy68
Offline
Зарегистрирован: 09.01.2017

 в свое время начинал проект "тестер аккумуляторов" ,к сожалению незакончил, но надеюсь, что решусь довести до конца. и спользовал библиотеку U8glib . все нормально работало. и графика тоже (использовал при реализации меню). но вывод на дисплей в этой библиотеке как-то странно реализован, это и остановило проетк. но дисплей мне очень понравился.  если  кому требуется сброшу скетч(там и схема подключения отрисована).

arcon73
Offline
Зарегистрирован: 06.04.2017

с пинками и без никаких движений.... 

много времени потрачено на поиск инициализации... 

http://arduino.ru/forum/programmirovanie/pomogite-pozhaluista-podklyuchit-displei-ot-siemens-a70-k-arduino

пост #135

оттуда: 
 

void LcdInit(uint8_t _SCE, uint8_t _RESET, uint8_t _SDIN, uint8_t _SCLK, uint8_t _SDAT)  //CS, RESET, D/C, CLK, DATA
{
	PIN_SCE  = _SCE  ;
	PIN_SDIN = _SDIN ;
	PIN_RESET= _RESET;
	PIN_SCLK = _SCLK ;
	PIN_SDAT = _SDAT ;  
	pinMode(PIN_SCE,  OUTPUT);
    pinMode(PIN_RESET,OUTPUT);
    pinMode(PIN_SDIN, OUTPUT);
    pinMode(PIN_SCLK, OUTPUT);
	pinMode(PIN_SDAT, OUTPUT);
	
	_delay_us(10);                // LCD RESET
    digitalWrite(PIN_SDAT, LOW);  //
    digitalWrite(PIN_SCLK, LOW);  //
    digitalWrite(PIN_SDIN, LOW);  //
    _delay_us(10);                //
    digitalWrite(PIN_RESET, HIGH);//
    _delay_us(10);                //
    digitalWrite(PIN_SCE, LOW);   //
    _delay_us(10);                //
    digitalWrite(PIN_RESET, LOW); //
    _delay_us(10);                //
    digitalWrite(PIN_RESET, HIGH);//
    digitalWrite(PIN_SCE, HIGH);  // END RESET
  delay(75);
	LcdWrite(LCD_C, 0x21);  // Function set: extended instruction set    --21
    LcdWrite(LCD_C, 0x14);  // Bias System                               --14
	LcdWrite(LCD_C, 0x0A);  // HV-gen stages                             --0A
	LcdWrite(LCD_C, 0x05);  // Temperature Control                       --05
	LcdWrite(LCD_C, 0xCC);  // Contrast: 204                             --CC
	LcdWrite(LCD_C, 0x20);  // Function set: standard instruction set    --20
	LcdWrite(LCD_C, 0x11);  // VLCD programming range: high              --11
	LcdWrite(LCD_C, 0x0C);  // Display control: normal (inverted = 0x0D) --0C
	
  LcdWrite(LCD_C, 0x40);    // óñòàíîâêà àäðåñà ïî Y:
  LcdWrite(LCD_C, 0x80);    // óñòàíîâêà àäðåñà ïî X:
  for (int i=0; i<((X_RES+1)*8); i++)    // Lcd Clear
  {                                      //
	LcdWrite(LCD_D, 0x0);                //
  }                                      // end clear
}

 

Signalsus
Offline
Зарегистрирован: 04.11.2018

Люди помогите, не пашет дисплей с ардуиныной

от сименс A52

уже кучу либов переюзал, суко хрен пашет

или распиновка другая или лыжи не едут

SieOK
Offline
Зарегистрирован: 29.03.2018

У семена55 в даташите на контроллер дисплея написано мелким шрифтом - сигнал ресет должен быть подан на пин ДО подачи питания на дисплей