x 過去ログを見よ!!
x UNOを一時的に3.3Vで動かす(危険)(危険)(危険)PCに繋ぐとPCが破壊されます。(いろいろした)
x 変換がおかしいのは、IMEをそのまま使って、めんどいので変換失敗してもそのまま
x 販売コード 130012
x 型番 MCP9700T-E/TT
いろいろ
表面実装のMCP9700をget
15.625は、マジックナンバーで2.5x2.5x2.5
この企画自体が君と15.625したかっただけ。
らーめにんぐのついでに秋月でget
さらに中野あたりの絶滅メディア博物館(高円寺)
おまけ(なんかの新作らしい)3.3V系だから問題なし(((べつにUNOにこだわつていないし)))とじ
どこ?
ch32v203 144mhzらしい 最終的な値段は、ほとんど変わらないらしい(上級者向け) ライブラリが貧弱だからかなりきっい
●データシートで各自、確認(たぶん3.3V)
参考(10の割り算)
参考(MCP9700)
目的
MCP9700を整数で計算して温度を求める
ステップは、10mV事に1度
センターの0度は、500mV
とりあえず、まず、ADCの値を電圧に変換
500引けば温度。OK!!
int s; //センサーの値
unsigned int vo; //電圧
s = 1024; //センサーの値を1024
//センサーの値から電圧に変換(x3 x15.625/16 1/10)
vo = s;
vo = vo + vo + vo;
vo = ((vo * 15U) + (vo >> 1) + (vo >> 3)) >> 4;
vo = vo + (vo / 10);
まとめると
オンラインコンパイラ
#include <iostream>
using namespace std;
int main(void){
// Your code here!
int s; //センサーの値
unsigned int vo; //電圧
int tmp;
//long
//long
//s = 1024; //センサーの値を1024
for(int i = 0;i<(1024+1);i++){
s=i;
//センサーの値から電圧に変換(x3 x15.625/16 1/10)
vo = s;
vo = vo + vo + vo;
vo = ((vo * 15U) + (vo >> 1) + (vo >> 3)) >> 4;
//vo = vo + (vo / 10);
vo = vo + (( ((long)vo) * 52429L ) >> 19); // vo/10
tmp = vo - 500;
printf("(%4d)[%4d]<%d>",s,vo,tmp/10);
printf("\n");
}//for
}
...省略
(1020)[3286]<278>
(1021)[3290]<279>
(1022)[3293]<279>
(1023)[3296]<279>
(1024)[3300]<280>
で、
UNO((危険)一時的に3.3V(ごにょごにょ))
目的
表面実装のMCP9700で遊ぶ
結果
プログラム
//MCP9700_SMD_3V3_UNO1
//初期化
void setup() {
//シリアルポートの初期化
Serial.begin(9600);
}//setup
//メインループ
void loop() {
int sensorValue; //センサーの読み取り値
unsigned int Voltage; //電圧
int Temperature; //温度
//温度センサーから値を読み込む
sensorValue = analogRead(A0); //UNO
//センサーの値から電圧に変換(x15.625/16 1/10)
//sensorValue = 1024; //debug 約3.3V 3300 280.0℃
//sensorValue = 242; //debug 約0.8V 778 27.8℃
//sensorValue = 0; //debug 約0.0V 0 -50.0℃
Voltage = sensorValue;
Voltage = Voltage + Voltage + Voltage;
Voltage = ((Voltage * 15U) + (Voltage >> 1) + (Voltage >> 3)) >> 4;
//Voltage = Voltage + (Voltage / 10);
Voltage = Voltage + (( ((long)Voltage) * 52429L ) >> 19);//Voltage/10
//電圧を温度に変換 0℃に合わす為に500mVを引く
Temperature = Voltage - 500;
//結果の表示
// print out the value you Temperature:
//Serial.println(Voltage); //debug
Serial.print(Temperature / 10);
Serial.print('.');
Serial.print(Temperature % 10);
Serial.println();
delay(1000); // delay in between reads for stability
}//loop