然後把電腦的畫面,用AirParrot2, 或是miracast等方式投影到大螢幕上,就可以讓全班看到然後討論了。
如果可以架個webcam,就可以同時把實驗的實況和數據同時都從電腦投出來給全班看。應該也是不錯的實驗觀察方式。
本來是要看冰塊融化時的溫度的,不過這還需要更多麻煩的設備,就算了,看沸騰就好。把比較低溫的部份數據切掉就變成下面這張圖。
橘色的線是另一個溫度計,測室溫。
Arduino溫度計的作法:by 阿簡
p.s. 從34度到沸騰這條線,很直對吧。這是R2>0.99的直線,怎麼弄這麼直呢?酒精燈火給它開大一點就行了!(提供熱的速度遠大於散熱速度)
code
//從阿簡那邊拿到的code, 將LCD部分做了調整。包括 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)
//把 lcd.init; 改成 lcd.begin(16, 2); LCD就可以運作了
#include <Wire.h> // Arduino IDE 內建
// LCD I2C Library,從這裡可以下載:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // 設定 LCD I2C 位址
// 匯入程式庫標頭檔
//from http://playground.arduino.cc/Learning/OneWire
#include <OneWire.h>
//from https://github.com/milesburton/Arduino-Temperature-Control-Library
#include <DallasTemperature.h>
#include <Wire.h>
// from http://arduino-info.wikispaces.com/file/view/LiquidCrystal_I2C1602V1.zip
int row =0;
// Arduino數位腳位2接到1-Wire裝置
#define ONE_WIRE_BUS 2
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
sensors.begin();
lcd.begin(16, 2);
lcd.backlight();
// 初始化
Serial.begin(9600);
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
// 參數0代表匯流排上第0個1-Wire裝置
Serial.print("DATA,TIME");
Serial.print(",");
Serial.print("TIMER");
Serial.print(",");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(",");
Serial.print(sensors.getTempCByIndex(1));
Serial.println(",");
row ++;
//超過1000行資料後就覆蓋舊資料
/*
if (row > 1000)
{
row=0;
Serial.println("ROW,SET,2");
}
*/
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("C");
delay(100);
}
橘色的線是另一個溫度計,測室溫。
Arduino溫度計的作法:by 阿簡
p.s. 從34度到沸騰這條線,很直對吧。這是R2>0.99的直線,怎麼弄這麼直呢?酒精燈火給它開大一點就行了!(提供熱的速度遠大於散熱速度)
code
//從阿簡那邊拿到的code, 將LCD部分做了調整。包括 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)
//把 lcd.init; 改成 lcd.begin(16, 2); LCD就可以運作了
#include <Wire.h> // Arduino IDE 內建
// LCD I2C Library,從這裡可以下載:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // 設定 LCD I2C 位址
// 匯入程式庫標頭檔
//from http://playground.arduino.cc/Learning/OneWire
#include <OneWire.h>
//from https://github.com/milesburton/Arduino-Temperature-Control-Library
#include <DallasTemperature.h>
#include <Wire.h>
// from http://arduino-info.wikispaces.com/file/view/LiquidCrystal_I2C1602V1.zip
int row =0;
// Arduino數位腳位2接到1-Wire裝置
#define ONE_WIRE_BUS 2
// 運用程式庫建立物件
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
sensors.begin();
lcd.begin(16, 2);
lcd.backlight();
// 初始化
Serial.begin(9600);
}
void loop(void)
{
// 要求匯流排上的所有感測器進行溫度轉換
sensors.requestTemperatures();
// 參數0代表匯流排上第0個1-Wire裝置
Serial.print("DATA,TIME");
Serial.print(",");
Serial.print("TIMER");
Serial.print(",");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(",");
Serial.print(sensors.getTempCByIndex(1));
Serial.println(",");
row ++;
//超過1000行資料後就覆蓋舊資料
/*
if (row > 1000)
{
row=0;
Serial.println("ROW,SET,2");
}
*/
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("C");
delay(100);
}
沒有留言:
張貼留言