RCU6093W-B

[RCU6093W-B] 3V/6V以上/PHシリーズ2.0mm15ピン。

ちょっとでかいけど安心のROHM。

LED電圧は、aitendoのページには6Vと書いてるが白色LED三段だから3.6*3=10.8V以上だね。 9V入れたらバックライト点灯。まあこんなもんか。

Arduinoで動かしてみた。ほぼaitendoのページのコード通り。digitalWriteでチマチマとシリアル送ってると遅くて話にならんので、コマンドのとこだけ生PORT叩きに変更。Arduino Nano以外に適用する場合はピン配置に合わせて変更しましょう。。

液晶モジュール Arduino AVR(Nano) その他
LED- - - GND
LED+ - - 9V
SW1-4 - - Open
VDD - - 3V
SDIN D6 PORTD b6
DC_B D4 PORTD b4
SCE_B D5 PORTD b5
SCLK D3 PORTD b3
VSS - - GND
RESET_B D2 PORTD b2

シリアル経由だとキツイかと思ったけど、案外fps出るな。むしろ液晶の応答性で10~20fpsぐらいが限界のような。

#include <avr/pgmspace.h> 

#define RST   2
#define SCE_B 5
#define DC_B  4
#define SCLK  3
#define SDIN  6
#define LED 13

#define DATA    0
#define COMMAND 1

void lcdWrite(char data, char mode){
  int i;

  PORTD &=0b11011111; // SCE_B=0

  for(i=7;i>0;i--){
    if(data & 0x80){
      PORTD |=0b01000000; // SDIN=1 
    }
    else{
      PORTD &=0b10111111; // SDIN=0
    }   

    PORTD |=0b00001000; // SCLK=1
    PORTD &=0b11110111; // SCLK=0

    data<<=1;
  }   

  if(data & 0x80){
    PORTD |=0b01000000; // SDIN=1
  }
  else{
    PORTD &=0b10111111; // SDIN=0
  }   

  if(mode==DATA){
    PORTD |=0b00010000; // DC_B=0
  }
  else{
    PORTD &=0b11101111; // DC_B=0
  }

  PORTD |=0b00001000; // SCLK=1
  PORTD &=0b11110111; // SCLK=0

  PORTD |=0b00100000; // SCE_B=1
}



void initialize(){

  digitalWrite(SCK,0);
  digitalWrite(DC_B,0);
  digitalWrite(SCE_B,0);
  digitalWrite(RST,0);

  delay(10);

  // reset sequence
  digitalWrite(RST,1);  
  digitalWrite(SCK,1);
  digitalWrite(SCK,0);
  digitalWrite(RST,0);  
  digitalWrite(RST,1);  
  digitalWrite(SCK,1);
  digitalWrite(SCK,0);

  delay(10);

  // initialize
  lcdWrite(0x21,COMMAND); // FUNCTION SET: PD=1, V=0, EXTENDED INST
  lcdWrite(0xBD,COMMAND); // CONTRAST 
  lcdWrite(0x14,COMMAND); // BIAS 1/7
  lcdWrite(0x20,COMMAND); // FUNCTION SET: PD=1, V=0, BASIC INST
  lcdWrite(0x0C,COMMAND); // D=1 E=0 normal disp
  
  delay(10);
}



void setup() {
  int i;

  pinMode(SCE_B, OUTPUT);     
  pinMode(DC_B,  OUTPUT);     
  pinMode(SCLK,  OUTPUT);     
  pinMode(SDIN,  OUTPUT);     

  initialize();

  lcdWrite(0x40,COMMAND); // Y adr=0
  lcdWrite(0x80,COMMAND); // X adr=0

  // Clear 
  for(i=0;i<918;i++)
  {
    lcdWrite(0,DATA); 
  }
}


void loop() {

  int i,j;

  for ( j = 0 ; j < 8 ; j++ ){
    delay(100); 

    for ( i = 0 ; i < 918 ; i++ ){
      lcdWrite((1<<((i+j)%8)),DATA);
    }
  }
}

X3チャージポンプ(http://jsdiy.web.fc2.com/avr_tiny10_chargepump/)いくか。 やってみた。Arduinoのポートが4Vちょいしか出てないせいか、12Vぐらい。ところが繋ぐと7.5Vぐらいまで落ちちゃう。電流不足か。