x MCP9701-E/TO 販売コード 103199
参考
↓ここをクリック↓
x 過去ログを見よ
x 「Arduino」関連を見てください
x 自己責任の意味がわかる人がお読みください。
x 間違った操作を行うと二度と書き込めなくなります。
x なぜか知らないが、表示速度を速くするとジャムるので各自で調整してくざさい。
x 74HC164を使いピン数を減らしています。
x ターゲットリセットを接続してください。
x 非常用として「3秒ルール」があり、起動後、3秒以内に接続してください。
接続
1
2 VCC
3 GND
4 ターゲットリセット
8 液晶 CLK (SWCLK)
7 液晶 DATA (SWDIO)
6 液晶 EN
5 ADC MCP9701
基板パターン ACM1602K-NLW-BBW
o_con88.jpg
結果
プログラム
//GPIO_LCD_MCP9701_XXC_C011_1
//インクルド
#include <Arduino.h>
//* ***** *****
//* * * *
//* * * *
//* * * *
//* * * *
//******** ***** *****
//定義
#define DW digitalWrite
//STM32G031J6M6 i2cピンの定義
//#define sdaPin PA12 // ArduinoA4
//#define sclPin PA11 // ArduinoA5
//#define S5851A 0x48
#define swdclk PA14 // 8pin
#define swdio PA13 // 7pin
//#define swdclk PA11 // 5pin
//#define swdio PA12 // 6pin
//#define swdclk PA12 // 6pin
//#define swdio PA11 // 5pin
//#define t_led1 PA12 // 6pin
//#define t_led2 PA11 // 5pin
//#define en PA0 // 4pin
//#define in7 PB7 // 1pin
//#define en PB7 // 1pin
#define en PA12 // 6pin
// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN
//シフトパターン
// 12345678 12345678 12345678 12345678
char b8[8] = {0b10000000,0b01000000,0b00100000,0b00010000,
0b00001000,0b00000100,0b00000010,0b00000001 };
//液晶の初期化配列
int lcd_int[]={
0x30,0x30,0x30,0x38,0x08,0x01,0x06,0x08+0x04
};//lcd_init
//温度の定義
char ss[] = {
"#9#9#9#8#7#7#6#5#5#4#3#3"
"#2#1#1#0-9-9-8-7-7-6-5-5"
"-4-3-3-2-2-1-1 0 1 1 2 2"
" 3 4 4 5 6 6 7 8 8 91010"
"111212131414151616171818"
"192020212222232424252626"
"272828293030313232333434"
"353636373838394040414242"
"434444454546474748494950"
"50#0#0#0#0#0#0#0#0#0#0#0"
"#0#0#0#0#0#0#0#0"
};
//液晶に一文字を表示する。
void seg1(int v,int rs)
{
//一文字分のデータをセット
for(int jj=0;jj<8;jj++){
if( (v & b8[jj]) == 0 ){
DW(swdio,0); //ビットが0
} else {
DW(swdio,1); //ビットが1
}//endif
DW(swdclk,1);
DW(swdclk,0);
}//for
DW(swdio,rs); //コマンド/データ
DW(en,1); delay(1); //イネーブルオン
DW(en,0); //イネーブルオフ
}//seg1
//文字列の表示 nana_seg
int ns_printf(char *str1) {
//文字の中身がゼロか
while(*str1){
//一文字出力
seg1( *str1 ++ , 1 );
} //while
//戻り値
return(0);
}//ns_printf
//初期化
void setup() {
delay(3000); //not Delete (絶対消すな)(消しちゃィゃーん)
//GPIO初期化
pinMode(swdclk,OUTPUT);
pinMode(swdio,OUTPUT);
pinMode(en,OUTPUT);
DW(en,0);
//液晶の初期化
for(int ii=0;ii<8;ii++){
seg1( lcd_int[ii] , 0);delay(2);
}//for
//スタートアップ表示
seg1( 0x80+0x00 , 0 ); //1ライン目にカーソルを移動
ns_printf( "START" ); delay(500);
seg1( 0x01 , 0 ); delay(5); //画面クリア
} //setup
//メインループ
void loop() {
//アナログ値の読み込み
int s = analogRead(PA8); // PIN5
//s=250;
//温度の表示
seg1( 0x80+0x00 , 0 ); //1ライン目にカーソルを移動
seg1( (char)ss[((s>>2)&0x7f)*2] ,1 ); //10の桁
seg1( (char)ss[((s>>2)&0x7f)*2+1] ,1 ); // 1の桁
//1秒の待ち
delay(1000);
} //loop