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ぐらいまで落ちちゃう。電流不足か。