« CH32V003F4P6 開発ボードでLチカ | トップページ | 今年も aitendo 2024お楽しみ福BOX を買いました »

2023年12月29日 (金)

CH32V003+I2C接続のLCDでHello World !

 CH32V003F4P6開発ボードにI2CでLCDをつないでHello World !と表示させてみました。
また,秋月電子で1個40円の8ピンSOP CH32V003J4M6 を買ったので,これでも同じことをやってみました。
Shotcut_00_00_29_280
開発ボードとデバッガWCH-LinkE前回と同様,このように↓ 接続します。
M18065_20231229124201

スケッチはこんなかんじ↓

//CH32V003 + AQM1602でHello World
//SDA,SCLを10kΩでプルアップ

#include <Wire.h>
#define LCD_ADR 0x3E
char buf[]="";

void writeCmd(byte cmd){
Wire.beginTransmission(LCD_ADR);
Wire.write(0x00);
Wire.write(cmd);
Wire.endTransmission();
delay(1);
}

void writeData(byte data){
Wire.beginTransmission(LCD_ADR);
Wire.write(0x40);
Wire.write(data);
Wire.endTransmission();
}

void setCursor(byte clm,byte row){
if(row==0) writeCmd(0x80+clm);
if(row==1) writeCmd(0xc0+clm);
}

void init_LCD() {
writeCmd(0x38);
writeCmd(0x39);
writeCmd(0x56);
writeCmd(0x6C);
writeCmd(0x01);
writeCmd(0x0C);
}

void strPrint(char *str){
while(*str != 0)
writeData(*str++);
}

void numPrint(int num){
String strnum = String(num);
strnum.toCharArray(buf,10);
strPrint(buf);
}

void setup() {
Wire.begin();
init_LCD();
setCursor(0,0);
strPrint("Hello World!");
}

void loop() {
setCursor(0,1);
numPrint(millis()/100);
}

LCDは秋月電子で買ったAQM1602で,マイコンボードとはこのようにつなぎます。SDAとSCLは10kΩくらいの抵抗でプルアップすることを忘れずに。

Untitled-sketch_2

 このマイコンボードはうまくいったので,続けて8ピンSOPのCH32V003J4M6 でも同じことをやってみました。SOP8のままではブレッドボードに刺さらないのでDIP変換基板を使います。

プログラムをアップロードするときはこうやって↓ つないで,
202312282
LCDはこうつなぎます↓
Untitled-sketch_4

では,動画をご覧ください。

| |

« CH32V003F4P6 開発ボードでLチカ | トップページ | 今年も aitendo 2024お楽しみ福BOX を買いました »

Arduino」カテゴリの記事