2016年3月4日金曜日

OLEDモジュール SO1602AWWB-UC-WB

I2Cプログラム例
#include<Wire.h>
#define OLED_ADRS 0x3C //SA0=L(SA0=Hの場合は0x3D)

int DisplayON = 0x0F,
ClearDisplay = 0x01,
ReturnHome = 0x02;

void setup() {
  Wire.begin();//Wireライブラリを初期化し、I2Cマスタとしてバスに接続
  init_oled();
}

void loop() {
  char moji[] = "I2C OLED WHITE12345";
  for(int i=0;i<20;i++){
    writeData(moji[i]);
  }
  
  writeCommand(0x20+0x80);//2行目の先頭

  for(int i=0;i<20;i++){
    writeData(i + 0xB1);
  }

  contrast_max();//輝度を最大に設定
  while(1){}
}

//----main end----
void writeData(byte t_data){
  Wire.beginTransmission(OLED_ADRS);
  Wire.write(0x40);
  Wire.write(t_data);
  Wire.endTransmission();
  delay(1);
}

void writeCommand(byte t_command){
  Wire.beginTransmission(OLED_ADRS);
  Wire.write(0x00);
  Wire.write(t_command);
  Wire.endTransmission();
  delay(10);
}

void contrast_max(){
  writeCommand(0x2A);//RE=1
  writeCommand(0x79);//SD=1
  writeCommand(0x81);//コントラストセット
  writeCommand(0xFF);//輝度MAX
  writeCommand(0x78);//SDを0に戻す
  writeCommand(0x28);//2C=高文字 28=ノーマル
  delay(100);
}

void init_oled(){
  delay(100);
  writeCommand(ClearDisplay);
  delay(20);
  writeCommand(ReturnHome);
  delay(2);
  writeCommand(DisplayON);
  delay(2);
  writeCommand(ClearDisplay);
  delay(20);
}

0 件のコメント:

コメントを投稿