STM32F767 및 MCP9701에서 온도를 128x32 OLED로 출력 (Arduino)
x 가끔 OLED를 재설정하지 못함 전체 전원을 여러 번 껐다 켜십시오.
x UNO와 767 차이는 ADC의 최대 전압이 5V, 3.3V
x U8glib과 U8g2가 있기 때문에 각자 확인 일
목적
아키즈키에서 팔고 있는 저렴한 MCP9701(약 25엔)을 사용하여 온도를 출력한다.
구성
MCP9701-E/TO I-03199
AL12832AWWB-H-U02 P-14686
설명
설명하면 길어지기 때문에 싸움의 기록은 아마 모두 써 있기 때문에
각자 마음대로 조사해
팁 MCP9701 AL12832AWWB
ArduinoUNO와 MCP9701에서 온도를 128x32 OLED로 출력 (Arduino)
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED
int cursor1; //カーソルの位置
char data_read[8]; //i2cバッファー
void i2c_oled_w(char *s)
{
//文字の表示
u8x8.drawString(
((cursor1-0) & 0x07 )*2, // x
(cursor1>>3)*2, // y
s);
while(s[0] != 0) {
s++;
cursor1++;
}
//cursor1=cursor1 + 3;
} //i2c_oled_w
//初期化
void setup(void) {
delay(2000); //oledのリセット時間
u8x8.begin();
u8x8.setFont(u8x8_font_px437wyse700a_2x2_r);
//スタートロゴ
cursor1 = 0;
i2c_oled_w("START");
delay(500);
//画面の初期化
u8x8.drawString( 0,0," ");
u8x8.drawString( 0,2," ");
cursor1 = 0;
} //setup
int s; //ADCの値
int n0; //温度 小数点以上
int nt[] = {0,2,5,7}; //温度
void loop(void) {
// //画面の初期化
// u8x8.drawString( 0,0," ");
// u8x8.drawString( 0,2," ");
//カーソルのクリア
cursor1 = 0;
//adcの読み込み 0から4096
analogReadResolution(12);
s = analogRead(A0);
//電圧を温度に変換 ex 20.0 -> 200 温度の十倍を出力
s=((s*1692)>>12)-205;
//小数点以上と小数点以下を分ける
n0=s/10; // 小数点以上
s =(s-(n0*10)); // 小数点以下
//画面に表示
i2c_oled_w("TMP=");
data_read[0] = '0' + n0/10;;
data_read[1] = '0' + ( n0-( (n0/10) *10) );
data_read[2] = '.';
data_read[3] = '0' + s;
data_read[4] = 0;
i2c_oled_w(data_read);
//1秒待つ
delay(1000);
} //loop
Reference
이 문제에 관하여(STM32F767 및 MCP9701에서 온도를 128x32 OLED로 출력 (Arduino)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/caa45040/items/920cac91bdfc7f018eaa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)