本帖最後由 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的定義)
等等其它之如此類的
改完之後就用得 |