Подключение графического дисплея UNO

alexeko
Offline
Зарегистрирован: 03.01.2014

Всем доброго дня.

Решил подключить дисплей PG 12864--A/K . Бьюсь с проблемой третий день. 

Дисплей рабочий, на родном (откуда снят)оборудовании, работает.

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

Большое спасибо.

alexeko
Offline
Зарегистрирован: 03.01.2014

Вот нашел, что  Powertip 128x64 Graphic LCD Module; PG-12864 (F) T6963C Controller Arduino USA  .

В библиотеке "U8glib.h" , есть такое

//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

Но вот как подключить ? проблема. С  D0..D7: 8,9,10,11,4,5,6,7 - тут все понятно, а вот с   cs=14, a0=15, wr=17, rd=18, reset=16, что то не доганяю.

Контроллер UNO

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Много ног, не осилите....

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

Бывают синие и жёлтые.   Я взял для пробы этот

http://www.ebay.com/itm/5V-12864-LCD-Display-Module-128x64-Dots-Graphic-...

Примеры из библиотеки работают.

kentik
Offline
Зарегистрирован: 28.03.2013

так а какой результат-то? подсветка есть, но ничего не показывает? подстроечник какой поставили? крутили его вообще? и что именно не понятно?

cs=14, a0=15, wr=17, rd=18, reset=16 - это пины на вашей ардуинке. подключайте к ним.
A0 = 14;
A1 = 15;
A2 = 16;
A3 = 17;
A4 = 18;

при беглом осмотре не видно разницы между всеми любимым KS0108.

вот гугл дает примеры:
http://code.google.com/p/rbrsidedn1/downloads/list
http://code.google.com/p/arduino-t6963c/downloads/list

trembo пишет:

Много ног, не осилите....

ну вот это вообще не аргумент.

alexeko
Offline
Зарегистрирован: 03.01.2014

Спасибо за подсказку. В творчестве возник перерыв на пару дней.

Сам дисплей еще не понятен. Нашел даташит, но там разница от "буковок" в названии.

PG12864A - написано на плате, а на маленькой наклейке - PG12864LRS-ANN-N. Последнии 4-ре это "бяка"- не смотрим.

Так вот, по одному доку- это вроде как 0108 (похоже), а по другому - это иная бяка.

НАверно придется отдать назад.

Экран светится (при любом подключении , анод и катод на своем месте). подстроечник - 100кОм, да и не в нем дело.

Скорее воспользуюсь советом   trembo   и куплю уже опробованные вещи.

Но, попытаюсь добить.

P.S. Смысл затеи: подключил датчик температуры (2шт)и влажности (1шт), IR- управление от пульта SAMASUNGA :), кнопки 5шт. в дубляж IR. ДИСПЛЕЙ 20Х4. Управление холдильником от Темп. и влажности, чтоб не намораживал в нутри, Вытяжка на кухне от Температуры и дыма.

kentik
Offline
Зарегистрирован: 28.03.2013

хозяйн барин

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Может кому надо, моя строка

U8GLIB_ST7920_128X64_4X u8g(14, 15, 16);    // trembo SW SPI  SCK = en6 = 14, MOSI = r/w5 = 15, CS = RS4  = 16

или

//  U8GLIB_ST7920_128X64_4X u8g(13, 11, 10);    // trembo HW SPI Com: SCK = en = 13, MOSI = r/w = 11, CS = RS = 10

alexeko
Offline
Зарегистрирован: 03.01.2014

Господа.

Может у кгог и будет такой дисплей, я его запустил.

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

Оказалось все просто, пришлось перебрать все библилтеки. И вот положительный результат.


#include "U8glib.h"

// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported 
// devices with all constructor calls 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_DOGM128_2X 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);	// I2C / TWI 
//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);	// I2C / TWI 
//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
//U8GLIB_HT1632_24X16 u8g(3, 2, 4);		// WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_4X_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_4X_332 u8g(8, 9, 7); // Arduino : HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_4X_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, HW SPI Com, 4x Memory: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_4X_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com, 4x Memory: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А почему не по SPI ?  Лишних пинов много или скорости не хватает ?

alexeko
Offline
Зарегистрирован: 03.01.2014

8 бит потому что. И дисплей так подключается.

Valek174
Offline
Зарегистрирован: 12.01.2016

Уточните пожалуйста, по какой схеме подключен дисплей?

alexeko
Offline
Зарегистрирован: 03.01.2014

Valek174 пишет:

Уточните пожалуйста, по какой схеме подключен дисплей?

Так сразу и не вспомню. Я сейчас не на объекте. Помню, что подключал как обычный дисплей. Но искал библиотеку рабочую.

Valek174
Offline
Зарегистрирован: 12.01.2016

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

alexeko
Offline
Зарегистрирован: 03.01.2014

Valek174 пишет:

 поможете с библиотекой, примером

Библиотека в ссылке. Как включать по пинам, строки раскоментированны. Пример схемы - постараюсь показать.

Вот код под SAMSUNG, тестилка. Все пины отмечены! Проект у сеня как Time_samsung_MEGA_V1 - собран на МЕГЕ.

#include "U8glib.h"
#include <Wire.h>
#include "DS1307.h"

DS1307 clock;//define a object of DS1307 class


U8GLIB_KS0108_128 u8g(22, 23, 24, 25, 26, 27, 28, 29, 37, 33, 34, 36, 35); 		// 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

void draw(void) {
  
  u8g.drawCircle(94, 31, 31);
}

void printTime(void)
{
	clock.getTime();
      	
  u8g.setFont(u8g_font_unifont);
   second =  clock.second, DEC ; 
   minute = clock.minute, DEC;
   hour = clock.hour, DEC;
   u8g.setPrintPos(0, 10);
   u8g.print(hour);
   u8g.print(":");
   u8g.print(minute);
   u8g.print(":");
   u8g.print(second);
}

void setup(void) {

  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
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
  Serial.begin(9600);
	clock.begin();
	/*clock.fillByYMD(2014,2,26);//Jan 19,2013
	clock.fillByHMS(17,47,30);//15:28 30"
	clock.fillDayOfWeek(SAT);//Saturday
	clock.setTime();//write time to the RTC chip
       */
  
}

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

 

Valek174
Offline
Зарегистрирован: 12.01.2016

Не могу понять что означают цифры с скобках в коментариях.

U8GLIB_KS0108_128 u8g(22, 23, 24, 25, 26, 27, 28, 29, 37, 33, 34, 36, 35);      // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16

 

Valek174
Offline
Зарегистрирован: 12.01.2016

kentik пишет:

A0 = 14;

A1 = 15;
A2 = 16;
A3 = 17;
A4 = 18;

А откуда такая зависимость?

alexeko
Offline
Зарегистрирован: 03.01.2014

NO! NO!NO!

ЭТО ДЛЯ UNO! Т.к. у Вас на UNO мало входов дискретных. Вам надо 20 концов дисплея подключить. А для такого дисплея либо к МЕГЕ, либо сдвиговые регистры ставить.

Исходя из этог,я и стал делать на МЕГЕ. 

Тут все пины подключены последователно на колодку, за исключением RESET, он отдельно идет.

Valek174
Offline
Зарегистрирован: 12.01.2016

Прошу прощения. Я не учел  что это для UNO, и примеряю это описание к NANO.

Сначала спрошу, :-) ,  а реально все это переписать для NANO? 

alexeko
Offline
Зарегистрирован: 03.01.2014

Я думаю, что реально. Лишь бы хватило памяти на код. Лично я бы, сделал это на сдвиговых регистрах. Т.к. наверно кроме дисплея будем подключать еще, что то. На алике, видел на 16 входов плату, работающую по шине.

alexeko
Offline
Зарегистрирован: 03.01.2014

Доброго дня. Я тут случайно наткнулся вот на такой сайт.

Возможно поможет подключить и к NANO

alexeko
Offline
Зарегистрирован: 03.01.2014

Доброго дня. Вот отыскл (себе заказал) расширение для NANO или UNO,или куда угодно. Вот ссылка.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

I2C достаточно медленный интерфейс, а учитывая обьём перекачиваемых данных.....
Ну сами понимаете
SPI дисплеи будут оптимальны по скорости рисования.

alexeko
Offline
Зарегистрирован: 03.01.2014

Согласен с Вами. Новые технологии побуждают к действию. На АЛИКЕ, по поиску "TFT SPI" много вкусняшек в пределе до 400р.. Наверно пора переходить с монохромного на цветное. Даже дешевле выходит. Но вот "вес" библиотек впечатляет. У меня, устройство управлением светом и холодильником,имеет OLED 0,96'' дисплей. Мелковато. Вот присматриваюсь к 2'' и более.