x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!
目的
I2C液晶のテスト
-317
-318
-319
-184
-185
-361
STM32G031とI2Cスレーブでマスターから送信された文字を液晶に表示(ACM1602K-NLW-BBW)
プログラム
//I2C_LCD_NS_test_UNO_1
#include <Arduino.h>
#include <Wire.h>
//LCD初期化関数
#define lcd_begin(aaa,bbb) Wire.begin()
//画面クリア
#define lcd_clear() for(int ii = 0;ii< 32;ii++){seg1(ii);seg1(' ');}
//カーソルの移動
#define lcd_setCursor(col,rows) seg1((rows * 0x10)+col)
//液晶に一文字送信する
void seg1(char ch)
{
//I2Cに送信
Wire.beginTransmission(0x40);
Wire.write(ch);
Wire.endTransmission();
delay(50);//1mS待つ 連続送信防止用 受信落ち対策
}//seg1
//文字列の表示
void lcd_print(char *str1)
{
//文字の中身がゼロか
while(*str1) {
//一文字出力
seg1(*str1 ++);
} //while
}//print
//初期化
void setup()
{
lcd_begin(16, 2);
delay(3500);
lcd_clear();
//文字列の表示
lcd_setCursor(0, 0);
lcd_print("HELLO WORLD");
} //setup
//メインループ
void loop()
{
} //loop
コメントなしプログラム
//I2C_LCD_NS_test_UNO_2
#include <Arduino.h>
#include <Wire.h>
#define lcd_begin(aaa,bbb) Wire.begin()
#define lcd_clear() for(int ii = 0;ii< 32;ii++){seg1(ii);seg1(' ');}
#define lcd_setCursor(col,rows) seg1((rows * 0x10)+col)
void seg1(char ch){
Wire.beginTransmission(0x40);
Wire.write(ch);
Wire.endTransmission();
delay(50);
}
void lcd_print(char *str1){
while(*str1){seg1(*str1 ++);}
}
void setup(){
lcd_begin(16,2);
delay(3500);
lcd_clear();
lcd_setCursor(0,0);
lcd_print("HELLO WORLD");
}
void loop(){}