Board logo

標題: I2C OLED版的marlin [打印本頁]

作者: KSC    時間: 2015-8-22 15:00     標題: I2C OLED版的marlin

本帖最後由 KSC 於 2015-8-31 01:33 編輯

Arduino 說明:
寫C的話應該有接觸過if else語法,唔知的話請google或看example==>05 Control==>IfStatementControl
咁呢如果係在程序以外初始化的定義(define)時,是不能用普通的 if else 的需使用#ifdef   #else #endif,如果按if else來比喻的話
#ifdef  即if
#elif  即else if
#else 即 else
#endif 即最後的}
在#ifdef下無效的將會在程序下載時被無視,最終只留下有效的define
說明完

咁點改做I2C呢,首先要避免接口重複定義,要將舊的RepRapDiscount_Smart_Controller除去、定義新Mon、修正IO腳
同埋要將普通2004LCD用唔到的點陣mon library "U8GLIB"放到Arduino的libraries下
位置通常係C:\Program Files (x86)\Arduino\libraries
U8GLIB可以在呢度找
*u8glib by Oliver Kraus
*http://code.google.com/p/u8glib/
*License: http://opensource.org/licenses/BSD-3-Clause
我用的係 jcrocholl版,其它版本請自行摸索
改動如下
1)
Configuration.h
原本定義2004個mon接口的部份// (un-defined)左它
// The RepRapDiscount Smart Controller (white PCB)
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
加#define SSD1306_OLED_I2C_CONTROLLER令後續的定義有效(defined)
// Tiny SSD1306 OLED I2C 128x64 FULL GRAPHICS CONTROLLER
#define SSD1306_OLED_I2C_CONTROLLER
2)
Configuration.h
原本定義REPRAP_DISCOUNT_SMART_CONTROLLER有關的Panel Setting的部份將由於已un-defined故無效化
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
#define ULTIPANEL
#define NEWPANEL
#endif
在呢個位的前邊加SSD1306_OLED_I2C_CONTROLLER定義下Panel Setting的部份,由於SSD1306_OLED_I2C_CONTROLLER已define,故此DOCLCD、U8GLIB_SSD1306、ULTIPANEL、NEWPANEL將被define
#if defined (SSD1306_OLED_I2C_CONTROLLER)
  #define DOGLCD
  #define U8GLIB_SSD1306
  #define ULTIPANEL
  #define NEWPANEL
#endif

3)
dogm_lcd_implementation.h
在// LCD selection的部份加入U8GLIB_SSD1306的判別,見紅字。呢度也可以見到有其它板用HW SPI出MON
// LCD selection
#ifdef U8GLIB_ST7920
//U8GLIB_ST7920_128X64_RRD u8g(0,0,0);
U8GLIB_ST7920_128X64_RRD u8g(0);
#elif defined(U8GLIB_SSD1306)
  U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST);

#elif defined(MAKRPANEL)
// The MaKrPanel display, ST7565 controller as well
U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
#else
// for regular DOGM128 display with HW-SPI
U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);        // HW-SPI Com: CS, A0
#endif

4)
pins.h
由於係RMAPS 1.4板 轉出來,先找到呢句
#if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68
在有define ULTRA_LCD和NEWPANEL的前題下
#ifdef ULTRA_LCD
    #ifdef NEWPANEL
有幾種LCD,在呢度加SSD1306_OLED_I2C_CONTROLLER的定義
      #ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
          (REPRAP_DISCOUNT_SMART_CONTROLLER的定義)
      #elif defined(SSD1306_OLED_I2C_CONTROLLER)
           #define BTN_EN1 31
           #define BTN_EN2 33
           #define BTN_ENC 35
           #define BEEPER 37
           #define LCD_SDSS 53
           #define SDCARDDETECT -1
           #define KILL_PIN -1      

      #elif defined(LCD_I2C_PANELOLU2)
          (LCD_I2C_PANELOLU2的定義)
      #elif defined(LCD_I2C_VIKI)
          (LCD_I2C_VIKI的定義)
       等等其它之如此類的

改完之後就用得
作者: KSC    時間: 2015-8-22 15:05

本帖最後由 KSC 於 2015-8-22 15:43 編輯

筆記
現時用 2004 LCD,所以動過
Configuration.h

#define REPRAP_DISCOUNT_SMART_CONTROLLER   //定義用果個L型接線頭
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)   //唔知ULTIPANEL和NEWPANEL係乜要再看看
#define ULTIPANEL
#define NEWPANEL
#endif
用SD卡
#define SDSUPPORT // Enable SD Card Support in Hardware Console

好明顯要唔要 REPRAP_DISCOUNT_SMART_CONTROLLER
//#define REPRAP_DISCOUNT_SMART_CONTROLLER   //定義用果個L型接線頭

試改Try 1 抄自網上makerbase的配置
http://www.makerbase.com.cn/product/detail.php/id-83.html

在//I2C PANELS後加,以防止REPRAP_DISCOUNT_SMART_CONTROLLER 果句開ULTIPANEL?
//====================================================
//I2C PANELS

// TEST OLED 128x64
#define TEST_OLED13_128x64

#if defined (TEST_OLED13_128x64)
#define DOGLCD    //定義用點陣式LCD,影響file: pin.h
#define U8GLIB_SH1106  //OLED的LiB,但係是SPI的?
#define REPRAP_DISCOUNT_SMART_CONTROLLER //未知點解又要call返,要查邊度用過
#define NEWPANEL//未知係乜,影響file: pin.h
#endif
//===================================================
作者: fred2088    時間: 2015-8-22 17:26

本帖最後由 fred2088 於 2015-8-22 17:37 編輯

回覆 2# KSC

你的機是 Tinyboy 定 Kossel mini ?

    http://reprap.org/wiki/MKS_12864OLED

   TB 的OLED  已上Reprap  ...
作者: KSC    時間: 2015-8-23 01:20

本帖最後由 KSC 於 2015-8-23 01:22 編輯
回覆  KSC

你的機是 Tinyboy 定 Kossel mini ?

   

   TB 的OLED  已上Reprap  ...
fred2088 發表於 2015-8-22 17:26

kossel mini,手頭上果個OLED行I2C....

另,它的改法有D強來....
作者: fred2088    時間: 2015-8-23 20:01

回覆 4# KSC


    http://forums.reprap.org/read.php?13,499572,page=1

try try this ...
作者: KSC    時間: 2015-8-24 10:09

回覆 5# fred2088

thx,在看
作者: fred2088    時間: 2015-8-24 11:00

回覆 4# KSC


   為何它的改法有D強來 呢 ?!  ....
作者: KSC    時間: 2015-8-24 12:16

回覆  KSC


   為何它的改法有D強來 呢 ?!  ....
fred2088 發表於 2015-8-24 11:00


因為他唔係重新定義一個新板,只係將原有LCD的一部份腳用原有定義完、再取消、再重新定義。
我唔可以話它唔work但後人要跟的話會跟死人。放的位置也必須要正確。

SPI用Software模擬又係唔係咁好,有hardware的唔用...雖然我未看清楚點解要咁做....可能避免同SD卡炒埋一碟?但其實用SPI的話加多隻CS腳就得,全個system又可以用少D線....
作者: KSC    時間: 2015-8-30 22:00

本帖最後由 KSC 於 2015-8-30 23:10 編輯
回覆  KSC


    ,499572,page=1

try try this ...
fred2088 發表於 2015-8-23 20:01


.patch唔識用

用notepad ++開,估它點解,估中了
螢幕擷取畫面 (70).png

圖片附件: 螢幕擷取畫面 (70).png (2015-8-30 23:10, 43.91 KB) / 下載次數 27
https://h2.hkepc.com/forum/attachment.php?aid=1822989&k=04cf7ac9b56210bdbe52cb62b748017c&t=1781959392&sid=6LZf7k47aoM


作者: KSC    時間: 2015-8-30 23:05

11947464_10153336772591704_3023317519651504654_n.jpg
調通硬件I2C port I2C
但到底用唔用到hardware SPI port去省線?

圖片附件: 11947464_10153336772591704_3023317519651504654_n.jpg (2015-8-30 23:04, 39.86 KB) / 下載次數 39
https://h2.hkepc.com/forum/attachment.php?aid=1822985&k=bde617a7fa28c16b0810a45ac2c7fd21&t=1781959392&sid=6LZf7k47aoM


作者: fred2088    時間: 2015-8-30 23:13

回覆 10# KSC


    HW SPI 用那些 PIN ? 及用同一個 OLED ?!

Thanks
作者: KSC    時間: 2015-8-31 00:51

回覆  KSC


    HW SPI 用那些 PIN ? 及用同一個 OLED ?!

Thanks
fred2088 發表於 2015-8-30 23:13

首先,呢個OLED係支援SPI和I2C。但我買果塊只引出I2C接口,要Test的話需要買過塊。

HW SPI就係SD card用果3條Pin,另加隻CS腳就得,即係話其實用1個AUX3就足夠(*唔用SD detect的話)
#define SDSS pin 53
#define LCD_SDSS 49
#define SDCARDDETECT -1

但我無在手,要買
作者: fred2088    時間: 2015-8-31 11:13

回覆 12# KSC


    唔要 SD Card Offline Printing ?!
作者: KSC    時間: 2015-8-31 11:39

回覆  KSC


    唔要 SD Card Offline Printing ?!
fred2088 發表於 2015-8-31 11:13

必須要的,未試
作者: fred2088    時間: 2015-9-9 12:52

回復 14 #KSC

SPI 會用少D線?I2C只用四線

via HKEPC Reader for Android
作者: palpatrick    時間: 2015-9-9 13:32

本帖最後由 palpatrick 於 2015-9-9 13:37 編輯

回覆 15# fred2088


    同意Ching睇法!仲有好多好處!

Look see look see
https://hk.answers.yahoo.com/question/index?qid=20071001000016KK07568
I2C BUS
http://electronics.stackexchange.com/questions/25278/how-to-connect-multiple-i2c-interface-devices-into-a-single-pin-a4-sda-and-a5





歡迎光臨 電腦領域 HKEPC Hardware (https://h2.hkepc.com/forum/) Powered by Discuz! 7.2