Arduino/温度センサー/多数接続
をテンプレートにして作成
[
凌宮
|
技術
|
一覧
|
検索
|
最新
] [
ソース
]
開始行:
* 実績 [#a9e1ac59]
- 32個接続
- 寄生電力モード
- スキャン速度は1fps前後
** Soft [#bc699197]
###
#include <OneWire.h>
#include <DallasTemperature.h>
#include <stdlib.h>
OneWire oneWire(2);
DallasTemperature sensor(&oneWire);
#define dSensorNumber 32
// 高速化のため、バッファに溜めてから纏めてシリアル送信する
// バッファフォーマットは正規表現で「\N\N(,\N\N\.\N)+\0」。
// \0はナル文字。
#define dBufferIndex(aIndex) (2 + aIndex * 5)
#define dBufferSize (dBufferIndex(dSensorNumber) + 1)
static char sBuffer[dBufferSize];
static int sSensorNumber = 0;
void setup();
void loop();
void fBufferInit();
void fBufferSetSensorNumber(int number);
void fBufferSetValue(int index, float value);
/////////////////////////////////////////////////////////...
void softwareReset(void) {
Serial.println("\n----\nSoftware RESET\n----");
delay(100);
//setup();
((void(*)(void))0)();
delay(100);
}
/////////////////////////////////////////////////////////...
void setup() {
Serial.begin(9600);
Serial.println("\n\nBegin OneWireTemprature");
sensor.begin();
delay(100);
if (sensor.isParasitePowerMode()) {
Serial.println(" sensor.isParasitePowerMode() ==> tr...
}
sSensorNumber = sensor.getDeviceCount();
Serial.print(" sensor.getDeviceCount ==> ");
Serial.print(sSensorNumber);
if (sSensorNumber > dSensorNumber) {
sSensorNumber = dSensorNumber;
Serial.print(", fixed to ");
Serial.print(sSensorNumber);
}
Serial.println("");
fBufferInit();
Serial.println("\nsetup.done");
delay(100);
}
/////////////////////////////////////////////////////////...
void loop() {
sensor.requestTemperatures();
//Serial.print(sSensorNumber);
fBufferSetSensorNumber(sSensorNumber);
for(int s = 0; s < sSensorNumber; s++) {
float v = sensor.getTempCByIndex(s);
if (v <= 0 || v > 80) {// Error
// センサー挿入時は85が出る
softwareReset();
}
//Serial.print(", ");
//Serial.print((int)v);
fBufferSetValue(s, v);
}
//Serial.println("");
Serial.println(sBuffer);
if (sSensorNumber < dSensorNumber) {
// センサー不足 ==> ある分だけ読んでからリセット
softwareReset();
}
delay(100);
}
/////////////////////////////////////////////////////////...
void fBufferInit() {
char* p = sBuffer;
*(p++) = '0';
*(p++) = '0';
for (int s = 0; s < dSensorNumber; s++) {
*(p++) = ',';
*(p++) = '0';
*(p++) = '0';
*(p++) = '.';
*(p++) = '0';
}
*(p++) = '\0';
if (p - sBuffer != dBufferSize) {
Serial.println("\n\nError: fBufferInit");
Serial.print(" dBufferSize ==> ");
Serial.println(dBufferSize);
Serial.print(" inited ==> ");
Serial.println(p - sBuffer);
while(true) delay(10000);
}
Serial.println("fBufferInit() ==> /");
Serial.println(sBuffer);
Serial.println("/");
}
void fBufferSetSensorNumber(int number) {
if (number < 0 || 100 <= number) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(number);
return;
}
int d0 = (int)(number * 10);
int c1 = d0 % 10; int d1 = d0 / 10;
int c2 = d1 % 10;
sBuffer[0] = '0' + c2;
sBuffer[1] = '0' + c1;
}
void fBufferSetValue(int index, float value) {
if (index < 0 || dSensorNumber <= index ) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(dSensorNumber);
Serial.print(") ==> ");
Serial.println(index);
return;
}
if (value < 0 || 100 <= value) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(value);
return;
}
int d0 = (int)(value * 10);
int c1 = d0 % 10; int d1 = d0 / 10;
int c2 = d1 % 10; int d2 = d1 / 10;
int c3 = d2 % 10;
// + 0 = ',' ;
sBuffer[dBufferIndex(index) + 1] = '0' + c3;
sBuffer[dBufferIndex(index) + 2] = '0' + c2;
// + 3 = '.' ;
sBuffer[dBufferIndex(index) + 4] = '0' + c1;
}
/////////////////////////////////////////////////////////...
###
終了行:
* 実績 [#a9e1ac59]
- 32個接続
- 寄生電力モード
- スキャン速度は1fps前後
** Soft [#bc699197]
###
#include <OneWire.h>
#include <DallasTemperature.h>
#include <stdlib.h>
OneWire oneWire(2);
DallasTemperature sensor(&oneWire);
#define dSensorNumber 32
// 高速化のため、バッファに溜めてから纏めてシリアル送信する
// バッファフォーマットは正規表現で「\N\N(,\N\N\.\N)+\0」。
// \0はナル文字。
#define dBufferIndex(aIndex) (2 + aIndex * 5)
#define dBufferSize (dBufferIndex(dSensorNumber) + 1)
static char sBuffer[dBufferSize];
static int sSensorNumber = 0;
void setup();
void loop();
void fBufferInit();
void fBufferSetSensorNumber(int number);
void fBufferSetValue(int index, float value);
/////////////////////////////////////////////////////////...
void softwareReset(void) {
Serial.println("\n----\nSoftware RESET\n----");
delay(100);
//setup();
((void(*)(void))0)();
delay(100);
}
/////////////////////////////////////////////////////////...
void setup() {
Serial.begin(9600);
Serial.println("\n\nBegin OneWireTemprature");
sensor.begin();
delay(100);
if (sensor.isParasitePowerMode()) {
Serial.println(" sensor.isParasitePowerMode() ==> tr...
}
sSensorNumber = sensor.getDeviceCount();
Serial.print(" sensor.getDeviceCount ==> ");
Serial.print(sSensorNumber);
if (sSensorNumber > dSensorNumber) {
sSensorNumber = dSensorNumber;
Serial.print(", fixed to ");
Serial.print(sSensorNumber);
}
Serial.println("");
fBufferInit();
Serial.println("\nsetup.done");
delay(100);
}
/////////////////////////////////////////////////////////...
void loop() {
sensor.requestTemperatures();
//Serial.print(sSensorNumber);
fBufferSetSensorNumber(sSensorNumber);
for(int s = 0; s < sSensorNumber; s++) {
float v = sensor.getTempCByIndex(s);
if (v <= 0 || v > 80) {// Error
// センサー挿入時は85が出る
softwareReset();
}
//Serial.print(", ");
//Serial.print((int)v);
fBufferSetValue(s, v);
}
//Serial.println("");
Serial.println(sBuffer);
if (sSensorNumber < dSensorNumber) {
// センサー不足 ==> ある分だけ読んでからリセット
softwareReset();
}
delay(100);
}
/////////////////////////////////////////////////////////...
void fBufferInit() {
char* p = sBuffer;
*(p++) = '0';
*(p++) = '0';
for (int s = 0; s < dSensorNumber; s++) {
*(p++) = ',';
*(p++) = '0';
*(p++) = '0';
*(p++) = '.';
*(p++) = '0';
}
*(p++) = '\0';
if (p - sBuffer != dBufferSize) {
Serial.println("\n\nError: fBufferInit");
Serial.print(" dBufferSize ==> ");
Serial.println(dBufferSize);
Serial.print(" inited ==> ");
Serial.println(p - sBuffer);
while(true) delay(10000);
}
Serial.println("fBufferInit() ==> /");
Serial.println(sBuffer);
Serial.println("/");
}
void fBufferSetSensorNumber(int number) {
if (number < 0 || 100 <= number) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(number);
return;
}
int d0 = (int)(number * 10);
int c1 = d0 % 10; int d1 = d0 / 10;
int c2 = d1 % 10;
sBuffer[0] = '0' + c2;
sBuffer[1] = '0' + c1;
}
void fBufferSetValue(int index, float value) {
if (index < 0 || dSensorNumber <= index ) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(dSensorNumber);
Serial.print(") ==> ");
Serial.println(index);
return;
}
if (value < 0 || 100 <= value) {
Serial.print("\n\nError: argment out of range: fBuffe...
Serial.print(value);
return;
}
int d0 = (int)(value * 10);
int c1 = d0 % 10; int d1 = d0 / 10;
int c2 = d1 % 10; int d2 = d1 / 10;
int c3 = d2 % 10;
// + 0 = ',' ;
sBuffer[dBufferIndex(index) + 1] = '0' + c3;
sBuffer[dBufferIndex(index) + 2] = '0' + c2;
// + 3 = '.' ;
sBuffer[dBufferIndex(index) + 4] = '0' + c1;
}
/////////////////////////////////////////////////////////...
###
ページ名:
3doodler-04.jpg
341件
[
詳細
]
3doodler-03.jpg
303件
[
詳細
]
3doodler-02.jpg
305件
[
詳細
]
3doodler-01.jpg
323件
[
詳細
]
3doodler-13.jpg
336件
[
詳細
]
3doodler-11.jpg
149件
[
詳細
]
3doodler-14.jpg
276件
[
詳細
]
3doodler-22.jpg
287件
[
詳細
]
3doodler-21.jpg
268件
[
詳細
]
MerryXmas.jpg
279件
[
詳細
]
Xperia-01.jpg
299件
[
詳細
]
Xperia-02.jpg
329件
[
詳細
]
Xperia-04.jpg
307件
[
詳細
]
Xperia-07.jpg
335件
[
詳細
]
Xperia-06.jpg
316件
[
詳細
]
Xperia-08.jpg
283件
[
詳細
]
Xperia-10.jpg
269件
[
詳細
]
Xperia-15.jpg
273件
[
詳細
]
Melody.zip
181件
[
詳細
]
CSample.lzh
195件
[
詳細
]
Sendv2.limg.lzh
212件
[
詳細
]
HttpServer.2013.0819.0954.zip
230件
[
詳細
]
EasyMacroLens.05.JPG
402件
[
詳細
]
EasyMacroLens.04.JPG
427件
[
詳細
]
EasyMacroLens.03.JPG
418件
[
詳細
]
EasyMacroLens.02.jpg
422件
[
詳細
]
EasyMacroLens.01.jpg
415件
[
詳細
]
01.DeviceManager.png
550件
[
詳細
]
02.DeviceProperty.png
453件
[
詳細
]
03.DeviceDriver.png
443件
[
詳細
]
04.DriverUpdate.png
424件
[
詳細
]
05.LocationSetting.png
426件
[
詳細
]
06.SecurityCheck.png
530件
[
詳細
]
07.Updating.png
397件
[
詳細
]
08.DeviceManager.png
434件
[
詳細
]
00.AdbDevices.png
419件
[
詳細
]
Nexus7-2013-KaifuuNoGi-11.jpg
294件
[
詳細
]
Nexus7-2013-KaifuuNoGi-10.jpg
284件
[
詳細
]
Nexus7-2013-KaifuuNoGi-09.jpg
282件
[
詳細
]
Nexus7-2013-KaifuuNoGi-08.jpg
310件
[
詳細
]
Nexus7-2013-KaifuuNoGi-07.jpg
304件
[
詳細
]
Nexus7-2013-KaifuuNoGi-06.jpg
288件
[
詳細
]
Nexus7-2013-KaifuuNoGi-03.jpg
282件
[
詳細
]
KaifuuNoGi-08.jpg
301件
[
詳細
]
KaifuuNoGi-06.jpg
308件
[
詳細
]
KaifuuNoGi-05.jpg
273件
[
詳細
]
KaifuuNoGi-04.jpg
322件
[
詳細
]
KaifuuNoGi-03.jpg
299件
[
詳細
]
KaifuuNoGi-02.jpg
300件
[
詳細
]
KaifuuNoGi-01.jpg
299件
[
詳細
]
DeviceManager.LeapDevKit.WestBridge.Stop.png
303件
[
詳細
]
DeviceManager.LeapDevKit.WestBridge.png
370件
[
詳細
]
DeviceManager.LeapDevKit.png
385件
[
詳細
]
DeviceManager.LeapDevKit.Off.png
211件
[
詳細
]
junaio_download_qrcode.png
542件
[
詳細
]
junaio_channel_qrcode_LimgNameCard.png
536件
[
詳細
]
TheEyeTribe.07.jpg
319件
[
詳細
]
TheEyeTribe.06.jpg
328件
[
詳細
]
TheEyeTribe.05.jpg
333件
[
詳細
]
TheEyeTribe.04.jpg
323件
[
詳細
]
TheEyeTribe.03.jpg
337件
[
詳細
]
TheEyeTribe.02.jpg
337件
[
詳細
]
TheEyeTribe.01.jpg
341件
[
詳細
]
Hwd14-01.jpg
297件
[
詳細
]
Hwd14-02.jpg
296件
[
詳細
]
Hwd14-03.jpg
300件
[
詳細
]
Hwd14-04.jpg
304件
[
詳細
]
Hwd14-05.jpg
320件
[
詳細
]
Hwd14-06.jpg
316件
[
詳細
]
Decode.zip
176件
[
詳細
]
s-ColorSample-5Y--9.0-01.0-f.JPG
419件
[
詳細
]
filament-color12.jpg
418件
[
詳細
]
s-ColorSample-N---9.5------f.jpg
358件
[
詳細
]
s-ColorSample-N---1.5------f.jpg
376件
[
詳細
]
s-ColorSample-4R--4.5.14.0-f.jpg
363件
[
詳細
]
s-ColorSample-8YR-7.0-13.5-f.jpg
384件
[
詳細
]
s-ColorSample-8Y--8.0-10.0-f.jpg
323件
[
詳細
]
s-ColorSample-8GY-7.0-09.5-f.jpg
356件
[
詳細
]
s-ColorSample-9G--3.5-08.5-f.jpg
358件
[
詳細
]
s-ColorSample-5BG-4.5-10.0-f.jpg
363件
[
詳細
]
s-ColorSample-5B--5.5-08.5-f.jpg
354件
[
詳細
]
s-ColorSample-6PB-3.5-11.5-f.jpg
336件
[
詳細
]
s-ColorSample-1RP-3.5-11.5-f.jpg
372件
[
詳細
]
s-ColorSample-6RP-4.5-12.5-f.jpg
330件
[
詳細
]
s-IMG_6009.JPG
377件
[
詳細
]
s-IMG_6014.JPG
406件
[
詳細
]
Suporter.png
405件
[
詳細
]
Gap1.png
344件
[
詳細
]
Gap3.png
429件
[
詳細
]
s-IMG_6020.JPG
321件
[
詳細
]
s-IMG_6039.JPG
356件
[
詳細
]
s-IMG_6045.JPG
351件
[
詳細
]
s-IMG_6047.JPG
375件
[
詳細
]
s-IMG_6061.JPG
344件
[
詳細
]
s-IMG_6050.JPG
371件
[
詳細
]
s-IMG_6058.JPG
389件
[
詳細
]
s-IMG_6079.JPG
368件
[
詳細
]
s-IMG_5699.JPG
377件
[
詳細
]
s-IMG_5703.JPG
346件
[
詳細
]
s-IMG_5707.JPG
332件
[
詳細
]
s-IMG_5710.JPG
303件
[
詳細
]
s-IMG_5713.JPG
311件
[
詳細
]
s-IMG_5716.JPG
323件
[
詳細
]
s-IMG_5723.JPG
329件
[
詳細
]
s-IMG_5727.JPG
300件
[
詳細
]
s-IMG_5728.JPG
301件
[
詳細
]
s-IMG_5729.JPG
291件
[
詳細
]
s-IMG_5731.JPG
320件
[
詳細
]
s-IMG_5733.JPG
334件
[
詳細
]
s-IMG_5735.JPG
303件
[
詳細
]
s-IMG_5737.JPG
322件
[
詳細
]
s-IMG_5739.JPG
332件
[
詳細
]
s-IMG_5752.JPG
329件
[
詳細
]
s-IMG_5756.JPG
293件
[
詳細
]
s-IMG_5761.JPG
302件
[
詳細
]
s-IMG_5764.JPG
317件
[
詳細
]
s-IMG_5767.JPG
318件
[
詳細
]
s-IMG_5905.JPG
413件
[
詳細
]
s-IMG_5907.JPG
414件
[
詳細
]
s-IMG_5914.JPG
418件
[
詳細
]
s-IMG_5917.JPG
381件
[
詳細
]
s-IMG_5920.JPG
414件
[
詳細
]
s-IMG_5934.JPG
405件
[
詳細
]
s-IMG_5935.JPG
362件
[
詳細
]
s-IMG_5937.JPG
383件
[
詳細
]
s-IMG_5948.JPG
357件
[
詳細
]
s-IMG_5966.JPG
368件
[
詳細
]
s-IMG_5971.JPG
364件
[
詳細
]
10005832_540049732781991_265704328_o[1].jpg
341件
[
詳細
]
s-IMG_5613.JPG
343件
[
詳細
]
Nucleo32.JPG
169件
[
詳細
]
[
凌宮
|
技術
|
一覧
|
検索
|
最新
] [
ソース
]