2.4インチ液晶ディスプレイ高速表示② Arduino DUE 編 

 

 ILI9341ドライバーICを使用した2.4インチ液晶ディスプレイの高速表示テクニック第2回目。 前回はArduino UNO R3とMEGA2560でのやり方を紹介したわけだが、今回は高性能MPUを搭載したArduino DUEでのやり方だ。

 最初から見ていない人は、ぜひ最初から読むのをお勧めする。

 

 

 私キャッスルのArduino DUEは改造されて見た目が変わっちゃっているが、気にしてはいけない。 気になる人は、過去記事を見てほしい。

 

 そもそも、Arduino DUEはあんまり使っている人がいないのか、話題に上ることが少ない。 すごく早いのに。

余談だが、Arduino GIGA R1 なんて物が発売されたが、なんじゃあの化け物は。 OS無しで制御できるのか? って思えるほどのトンデモ仕様。 気になるが値段が値段だけにポチる勇気はちょっと無いかな・・・。

 

 そんなことはどうでもよくて、DUEでのプログラムだな。

例によって変更する6つの関数の箇所だけ書いておく。

void Lcd_Writ_Bus(unsigned char d)
{
  REG_PIOC_CODR = 0x17e00000;
  REG_PIOB_CODR = 0x02000000;
  
  REG_PIOC_SODR |= d << 22 & 1 << 22;
  REG_PIOC_SODR |= d << 20 & 1 << 21;
  REG_PIOB_SODR |= d << 23 & 1 << 25;
  REG_PIOC_SODR |= d << 25 & 1 << 28;
  REG_PIOC_SODR |= d << 22 & 1 << 26;
  REG_PIOC_SODR |= d << 20 & 1 << 25;
  REG_PIOC_SODR |= d << 18 & 1 << 24;
  REG_PIOC_SODR |= d << 16 & 1 << 23;

  REG_PIOA_CODR |= 1 << 24;
  REG_PIOA_SODR |= 1 << 24;
}

void Lcd_Write_Com(unsigned char VH)  
{   
  REG_PIOA_CODR |= 1 << 23;
  Lcd_Writ_Bus(VH);
}

void Lcd_Write_Data(unsigned char VH)
{
  REG_PIOA_SODR |= 1 << 23;
  Lcd_Writ_Bus(VH);
}

void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)                   
{ 
  unsigned int i, j;
  REG_PIOA_CODR |= 1 << 22;
  l = l + x;
  Address_set(x, y, l, y);
  j = l * 2;
  for(i = 1; i <= j; i++)
    Lcd_Write_Data(c);
  REG_PIOA_SODR |= 1 << 22;
}

void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)                   
{ 
  unsigned int i, j;
  REG_PIOA_CODR |= 1 << 22;
  l = l + y;
  Address_set(x, y, x, l);
  j = l * 2;
  for(i = 1; i <= j; i++)
    Lcd_Write_Data(c);
  REG_PIOA_SODR |= 1 << 22;
}

void LCD_Clear(unsigned int j)                   
{ 
  unsigned int i,m;
  REG_PIOA_CODR |= 1 << 22;
  Address_set(0, 0, 239, 319);

  for(i = 0; i < 240; i++)
    for(m = 0; m < 320; m++){
      Lcd_Write_Data(j>>8);
      Lcd_Write_Data(j);
    }
  REG_PIOA_SODR |= 1 << 22;
}

こうすると、なんと3秒で完了する。 「3秒ならUNO R3と同じじゃん」って思うかもしれないが、前回書いたようにこの液晶ディスプレイはUNO R3で最大の効果が出るように設計されている。 最適ではない状態でも3秒という時間で終わるのだから、驚異的な速さだ。

配線をし直して最適状態で動かしたらどうなるか。 ちょっと気になるよね。