Библиотека для LCD Nokia 1100

so_nooby
so_nooby аватар
Offline
Зарегистрирован: 24.09.2013

что есть на схеме VT1, 78L05 и что называете электролитом.

ну 78L05 вроде линейный регулятор напряжения, а дальше?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

 

so_nooby
so_nooby аватар
Offline
Зарегистрирован: 24.09.2013

в ближайшем магазине из полевиков только 

IRLD014

подойдет?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

so_nooby пишет:

в ближайшем магазине из полевиков только 

IRLD014

подойдет?

для чего? что вы делаете?

so_nooby
so_nooby аватар
Offline
Зарегистрирован: 24.09.2013

я то пытаюсь подружить экран с ардуинкой. там полевик вообще не нужен(на сколько я понимаю).

в вашей схеме он используется. в ней IRLD014 будет уместен?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

только у жк дисплеев питание максимум 3.3В как и по пинам управления. так что резисторы вам в помощь. с ардуины можете для питания 3.3в взять, а управление через резисторы 4.7к

hugoboss317
Offline
Зарегистрирован: 21.03.2013

не просто через резисторы, делитель напряжения надо. Тут всё просто и понятно.

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

hugoboss317 пишет:

не просто через резисторы, делитель напряжения надо. Тут всё просто и понятно.

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...

да не обязательно. у меня уже дисплеев 5-6 работает через резистор 4.7к без делителей и прекрасно себя чувствуют. делитель это в идеале. но без может работать и 5В сигналами и с 3.3В. с делителем не уверен. не проверял

hugoboss317
Offline
Зарегистрирован: 21.03.2013

согласен. К примеру шлейф ЖКИ от N-1280, на плате телефона держится на электропроводящем клее, который так же проводит ток сигналов и межну контактами (например между SDA и СS), и это не мешает ему работать.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тут дело вкуса. каждый делает как хочет, хорошо что при этом у всех работает))

igorok107
igorok107 аватар
Offline
Зарегистрирован: 03.11.2013

Библиотеки так же доступны на ГитХабе, с примерами и описанием функций.

Iwan73
Offline
Зарегистрирован: 02.11.2013

jeka_tm пишет:

ну вот сделал

при этом еще сэкономил память 32 байта

 

 

 

 

не поделитесь крупным шрифтом?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Iwan73 пишет:

jeka_tm пишет:

ну вот сделал

при этом еще сэкономил память 32 байта

 

 

не поделитесь крупным шрифтом?

пожалуйста. но я только цифры делал

16х32

static const char mass16x32[10][64] PROGMEM ={
  { 0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //0
    0x3F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xF8, //1
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F},
  { 0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //2
    0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x40, 0x00, 0x00},
  { 0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //3
    0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},
  { 0xF8, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xF8, //4
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F}, 
  { 0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x00, 0x00, //5
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},
  { 0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x00, 0x00, //6
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},
  { 0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //7
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F},
  { 0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //8
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},
  { 0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //9
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F}};

10х16

static const char mass10x16[10][20] PROGMEM ={
   {0x7E, 0x3D, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3D, 0x7E,      // 0 
    0x7F, 0xBE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBE, 0x7F},
   {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE,      // 1
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE},
   {0x00, 0x81, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 2
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x80, 0x00},
   {0x00, 0x81, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 3
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F},
   {0x7E, 0xBC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBC, 0x7E,      // 4
    0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3E, 0x7F},
   {0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x81, 0x00,      // 5
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F},
   {0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x81, 0x00,      // 6
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F},
   {0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3D, 0x7E,      // 7
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F},
   {0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 8
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F},
   {0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 9
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F}
  };

 

Iwan73
Offline
Зарегистрирован: 02.11.2013

Спасибо,мне цифры как раз крупные надо.

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

Не получается завести LCD 1100 на этой библитеке на Leonardo, ничего не показывает.

Сам LCD вроде рабочий, простой скетч отображает какие-то символы.

LCD подключаю через конвертор уровней на полевиках, на нем же есть питание 3.3V, в чем может быть проблема?

 

Простой скетч который работает и выводит какие-то символы -

// Arduino Dueminalove Atmega328
// Interfacing with the Nokia 1100 LCD, PCF8814

// Arduino pinout // Nokia 1100 LCD pinout (VDD & VDDI ==> 3.3V, VLED+ connected via 10 ohm resistor to 3.3V)
#define PIN_SCE 10 // 2 XCS Connected via resistor-voltage-divider 1.8K & 3.2K
#define PIN_SDIN 11 // 4 SDA
#define PIN_RESET 12 // 1 XRES
#define PIN_SCLK 13 // 5 SCLK

#define LCD_C LOW // Command
#define LCD_D HIGH // Data

static const byte ASCII[][5] ={
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ←
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f →
};

void LcdCharacter(char character){
LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++)
LcdWrite(LCD_D, ASCII[character - 0x20]

);
}

void LcdClear(void){
for (int index = 0; index < 864 ; index++)
LcdWrite(LCD_D, 0x00);
}

void LcdInitialise(void){
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x2F); // Charge pump ON
LcdWrite(LCD_C, 0x24); // Vop MSB *Don't change*
LcdWrite(LCD_C, 0x80); // Vop LSB *Here you can change contrast*
LcdWrite(LCD_C, 0xA4); // A4 = normal display mode, A5 = all pixels ON
LcdWrite(LCD_C, 0xAF); // Display ON
}

void LcdString(char *characters){
while (*characters){
LcdCharacter(*characters++);
}
}

void LcdWrite(byte dc, byte data){
digitalWrite(PIN_SDIN, dc); // dc is sampled with the first rising SCLK edge
digitalWrite(PIN_SCE, LOW); // LCD enable
digitalWrite(PIN_SCLK, HIGH); // First rising SCLK edge
digitalWrite(PIN_SCLK, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data); // SDIN is sampled at the rising edge of SCLK.
digitalWrite(PIN_SCE, HIGH);
}

void setup(void){
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_SCE, HIGH);
digitalWrite(PIN_SCLK, LOW);
LcdInitialise();
LcdClear();
LcdWrite(LCD_C, 0xA7); // Inverted display
delay(200);
LcdWrite(LCD_C, 0xA6); // Normal display
}

void loop(void){
LcdString("Nokia 1100 LCD says Hello World");
delay(5000);
LcdInitialise();
}

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

С кодом вроде всё впорядке. Попробуйте после инициализации и перед отчисткой добавить задержуц 75 милисек. Ещё лучше вставте это в функцию инициализации. 

после строки 132:



 delay(75);
 LcdClear();

А вобще проверяйте подключение.

Команда в строке 168 лишняя. 

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

hugoboss317 пишет:

С кодом вроде всё впорядке.

 

Код который привел выше как раз инициализирует и что-то выводит на LCD, проблемка с библиотекой.

По подключению могу грешить только на конвертор уровней и возможно на какую-то специфику работы SPI на Leonardo...

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

инициализацию нужно делать 1 раз вам правильно сказали

spi у вас программный (нокиевские монохромные дисплеи к сожалению используют 9 битный spi, некоторые цветные тоже)

и попробуйте поменять местами 142 и 143 строки

reset можете вообще к ардуине не подцеплять. можете на +3,3В поцепить, а из кода убрать любое напоминание о нем

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

 

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

jeka_tm пишет:

инициализацию нужно делать 1 раз вам правильно сказали

 

Коллеги еще раз -  код выше привел только в качестве примера того что у меня хоть как-то работает на LCD. Проблема не в коде выше.

 

Не получается завести библиотеку о которой весь этот топик, есть какие-то идеи как это сделать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так в этом топике было как минимум 2 библиотеки. плюс просто коды. вы о какой? которая только текст может выводить?

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

jeka_tm пишет:

так в этом топике было как минимум 2 библиотеки. плюс просто коды. вы о какой? которая только текст может выводить?

 

Nokia2.h и ваш код из 7 сообщения, результата ноль.

PS cо второй библиотекой впрочем тож самое :-)

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну если из 7 сообщения. вы дисплей так подключили? я имею в виду пины которые в библиотеке зашиты (у меня такие стоят)

#define PIN_SCE 5 // 2 XCS 
#define PIN_SDIN 6 // 4 SDA
#define PIN_RESET 8 // 1 XRES
#define PIN_SCLK 7 // 5 SCLK
#define PIN_BL 9 // 8 BackLight

 

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

jeka_tm пишет:

ну если из 7 сообщения. вы дисплей так подключили? я имею в виду пины которые в библиотеке зашиты (у меня такие стоят)

#define PIN_SCE 5 // 2 XCS 
#define PIN_SDIN 6 // 4 SDA
#define PIN_RESET 8 // 1 XRES
#define PIN_SCLK 7 // 5 SCLK
#define PIN_BL 9 // 8 BackLight

 

 

Подключал и как в библиотеке стоят, плюс менял в библиотеке на "стандартные SPI" 13, 12, 11, 10, толку нет - LCD молчит...

 

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

рисуйте сюда схему, как подключаете

 

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

hugoboss317 пишет:

рисуйте сюда схему, как подключаете

 

 

Что именно непонятно? детали есть в сообщении 165, все стандартно вроде.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

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





static const byte ASCII[][5] ={ //это заменить на ...




const unsigned char ASCII[][5] PROGMEM ={  // ...на это

и при выводе символа 



LcdWrite(LCD_D, pgm_read_byte(&(ASCII[ch - 32][index]))); // строка 115

не забудте подключить соответствующую бибу



#include <avr/pgmspace.h>

 

 

 

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

Нашел совет здесь - http://alex-exe.ru/radio/microcontrollers/lcd-nokia1100/

  1. Павел пишет 05.12.2011 в 02:42#

    Недавно обнаружил, что некоторые LCDшки не ‘заводятся’ если программно передергивать при старе Reset, и прекрасно работают если его повесить на +, а сбросить контроллер LCD программно командой(если не путаю, то 0xE2). Это касается и 1110 и 1110i. Причина мне до конца не ясна — но факт на лицо.

Как раз мой случай:) повесил PIN_RESET жестко на +3.3V и все поехало!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а в 168 сообщении я что писал?

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

jeka_tm пишет:

а в 168 сообщении я что писал?

 

Видел, но там как-то неявно было :) 

 

Как я понял это некий глюк самого контроллера LCD, лечится именно так.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

делал плату под дисплей 1110 и датчик DHT22 на фоторезисте без пленки, усилителей плотности тонера и тп. просто на бумаге с маслом. видно много косяков, но это первое что более менее получилось пока осваивал фоторезст

паяльная маска из того же фоторезиста для эксперимента

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Дописал! Еслиб не танки, раньше б закончил))) Вот гафика и текст на АТМ 8

1К оперативки хватает. Подогнал вывод русского шрифта и возможность выбора шрифта. Подоформлю побожески, выложу.

jeka_tm, Хочу спросить разрешения чтоб включить твой 16х32 в библиотеку?

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да пожалуйста

как делали вывод графики? массив делали?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Да, массив. Только развером втрое меньше (3 банка) и вывожу один массив в верхнюю, среднюю и нижнюю часть.

По принципу похоже на U8G библиотеку. Вобще были мысли приобщить и шрифты от U8G. и рисовать легче да и готовых полно...думаю...

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Прошу прощения... не сдержался))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тогда получается перед каждым выводом просчитвается каждая часть. так?

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

jeka_tm пишет:

делал плату под дисплей 1110 и датчик DHT22 на фоторезисте без пленки

паяльная маска из того же фоторезиста для эксперимента

А фоторезист без пленки, это как? Балончик? FSR-8000? Если балончик, то ссылочку не кините по каким инструциям делали?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

jeka_tm пишет:

тогда получается перед каждым выводом просчитвается каждая часть. так?

Да. Кто работал с u8g.lib, тот поймёт сразу. Вот дапустим последний скрин выглядят так:





void loop(){
  
  LcdPageONE();
  do{
LcdBitmap(0, 0,crimea, ON);
LcdGotoXY(69, 2);
LcdsetFont(font_5x8);
LcdPrint("КРЫМ", ON, 1);
LcdGotoXY(60, 11);
LcdPrintW("ЭТО", ON);
LcdGotoXY(14, 59);
LcdPrintW("РОССИЯ", INV);
  }
while(LcdPageTWO());
}

Внутри оператора do ... while Массив заполняется, выводится и отчищается 3 раза. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

я просто на бумаге пачатаю и маслом растительным мажу

инструкция. да все просто. фоторезист alpha 340 или 350 самые доступные и неплохие по качеству

если коротко

1. трассирую и распечатываю

2. приклеиваю фоторезист к текстолиту

3. засвечиваю

4. убираю незасвеченный фоторезист

5. травлю

6. паяю

 

а подробнее

1. трассирую плату, печатаю на бумаге зеркально и инвертиронные цвета

2. чищу текстолит, отрезаю фоторезист, снимаю с фоторезиста толстую защитную пленку

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

натягиваю фоторезист за второй край чтобы не было складок пока прогоняется

только листок под текстолитом чтобы валы не попортить открыми краями

отрезаю бумагу (фоторезист с запасом, и он приклеивается к бумаге)

3. накладываю на плату перевернутую распечатку, тонером к плате и наливаю немного масла, размазываю чтобы не было пузырьков

4. засвечиваю УФ лампой 20вт  3,5мин с расстояния 20см приблизительно

5. снимаю вторую пленку и кидаю в слабый  раствор кальцинированной соды

6. периодически кисточкой (прямо в растворе) "чищу" фоторезист. фоторезист вытравливается и нужно протирать кисточкой

7. вынимаю минут через 10-15 когда все ненужное вытравилось, мою плату в воде и травлю в хлорном железе

8. после травления стираю фоторезист ватным тампоном с ацетоном (круглые, если есть жена у нее должно быть)

9. лужу и паяю

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

Спасибо. Как плату сделать фоторезистом, как бы знакомы :)  Вопрос был именно про маску.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не понял. в смысле фоторезистом платы делать умеете?

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

маску писал же из фоторезиста делал. она намного хуже чем например FSR-8000, но делал из того что было под рукой

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

jeka_tm пишет:

маску писал же из фоторезиста делал. она намного хуже чем например FSR-8000, но делал из того что было под рукой

Ну вот я про это и спрашивал. как FSR ром делать понятно (только найти его трудновато).

Вытравили плату, а дальше? Лудим или маску делаем? Просто еще раз накатываем фоторезист и светим? У FSR-ра нужно греть два раза (70 и 150 градусов), есть две стадии стадии нагрева, а тут как? Или вообще не грели маску?

В чем "намного хуже чем FSR-8000" проявляется?  

Просто думал искать FSR-8000, печку потом искать..., а тут вы с маской из пленочного. Пленочный у нас продается. Да и наносить его проще щем FSR (пяльцы, ткань и т.п.). 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хуже что температуру плохо держит если перепаивать несколько раз

если 1, максимум 2 нормально

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

 

timer_23
Offline
Зарегистрирован: 06.08.2014

Можно ли перезалить библиотеку?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

какую?

timer_23
Offline
Зарегистрирован: 06.08.2014

Для ардуино. С примером. А то все ссылки ведут в тому что файл не найденю

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

http://yadi.sk/d/CXjuENmaEEwun

в папке дисплеи

timer_23
Offline
Зарегистрирован: 06.08.2014

Спасибо. А как сделать все зеркально? а то у меня все задом наперед))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а можно больше инфы? с чем работаете и что зеркалировать?

timer_23
Offline
Зарегистрирован: 06.08.2014

Решил проблему!

У меня при выводе текста было все зеркальное. Но я избавился от этого написав  Lcd.Mirror(OFF,OFF);

hugoboss317
Offline
Зарегистрирован: 21.03.2013

timer_23 пишет:

Спасибо. А как сделать все зеркально? а то у меня все задом наперед))

файл cpp. строка 138 

SendByte(CMD_LCD_MODE,0xA1); // Инвертировать экран по горизонтали

закоментируйте её.