[電子工作] Seeeduino XIAOでWaveshare 1.28インチ丸形LCDを駆動
https://www.waveshare.com/wiki/1.28inch_LCD_Module
Waveshare 1.28インチ丸形LCDは、SPIを使用して使用するものですが、上記リンクのサンプルソースコードに不具合があり、XIAOから、使えずにいました。色々、試行錯誤した結果、サンプルソースコードを動かすことに成功しました。
まず、XIAOとLCDとの結線は、下記とします。
XIAO Pin 3: CS
XIAO Pin 4: DC
XIAO Pin 5: DC
XIAO Pin 6: BL
XIAO Pin 8: CLK
XIAO Pin 10: DIN
XIAO 3V3: VCC
XIAO GND: GND
上記からダウンロードした…\Arduino\LCD_Module_code\Arduino\LCD_1inch28にあるサンプルソースコードの変更箇所は、下記になります
スケッチファイルLCD_1inch28.inoのsetup()関数内で、LCD_Init(); Config_Init();の順に呼んでいるのが逆で、Config_Init(); LCD_Init();の順に変更します。変更をしないと、SPI.begin()が、Config_Init();の中で呼ばれているため、LCD_Init()内で呼ばれるSPIのAPIの実行が、SPI.begin()が呼ばれる前に起てしまい、ハングするようです。但し、純正Arduinoだと、その辺は、いい加減なのかもしれません。
さて、DEV_Config.cppの中のマクロ定義を下記にします。
/**
* GPIO config
**/
#define DEV_CS_PIN 3
#define DEV_DC_PIN 4
#define DEV_RST_PIN 5
#define DEV_BL_PIN 6
更に、同ファイルの関数Config_Init()に、下記の修正を行います。
void Config_Init()
{
GPIO_Init();
//Serial
Serial.begin(115200);
SPI.begin(); // 追加。SPIを呼び出す前に、これを呼び出す必要がある
//spi
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV2);
//SPI.begin(); // コメントアウト
}
以上の修正で、下記写真の結果が得られました。
TBD
この記事が気に入ったらサポートをしてみませんか?