步骤1:零件
以下是我用于零件的内容。根据我的经验,如果您尝试在学习过程中遵循说明并使用不同的部件,则要困难得多。
如果您不想购买Datalogger防护罩的可堆叠排针,则可以使用类似我修改方式的方式第2步中的Datalogger防护板,以便可以将其放置在面包板上。
Datalogger防护板
可堆叠的接头引脚
LCD显示
用于Arduino(Uno R3)的实验套件
或
Arduino Uno
光电池
步骤2:修改数据记录器
如果数据记录器上具有可堆叠的标头引脚,则跳过此步骤。这些是SD卡工作所需的引脚。您可以将电线焊接到板上或按照我的图片进行操作。
3v,5v,Gnd,A4,A5、13、12、11、10。
步骤3:接线图
这是我的数据记录器的接线图。就像使用可堆叠的插头引脚一样绘制。但是也记录了数据记录器使用的arduino引脚。
这是每个LCD引脚用于我的代码工作的表。
LCD引脚对应于它下面的Arduino引脚。
1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17 ,18,lcd
g,+ 5,pt,7,g,8,9,4,4,2,+ 5,G 5,arduino最后改变
步骤4 :库
为使下一步工作,您需要在Arduino文件夹中添加一些库。转到超链接以获取它们。好,只有一个库尚未安装。
LiquidCrystal-已安装
SD-已安装
Wire-已安装
RTClib-这里
第5步:代码
希望这是最后一步。该代码应读取温度传感器和光电元件,然后在LCD上显示值并将其保存到SD卡。如果出现问题,可能会在串行终端上显示一些故障排除代码。当温度更高时,背光应变成红色,当房间更亮时,背光应变成蓝色,如果又热又明亮,则应变成紫色。寒冷和黑暗应该是黑色。
代码非常混乱,我留了很多行作为注释,以防万一我想回去添加它们。
将下面的代码复制到草图中以使用
//包括库代码:
#include
#包括
#include
#include“ RTClib.h”
const int chipSelect = 10;
//文件dataFile;
文件日志文件;
//用接口引脚的编号初始化库
LiquidCrystal lcd(7,8,9,4,4,2,6);
//TMP36引脚变量
int temperaturePin = 0;//TMP36的Vout(感测)引脚连接到的模拟引脚的分辨率为10 mV/摄氏度(500 mV偏移),以使负温度成为选项。
//PhotoResistor引脚
int lightPin = 1;//未将光敏电阻连接到光敏电阻的模拟引脚校准为任何单位,因此这仅仅是光传感器的原始传感器值(相对光)
/ int lcdRed = 3;//LED连接到的引脚
int lcdBlue = 5;//LED的引脚连接到
RTC_DS1307 RTC;//定义实时时钟对象
//====================================== ==================
void setup(){
//设置LCD的列和行数:
lcd.begin(16 ,2);结果,Serial.begin(9600);//使用copmuter
开始串行连接//要查看结果,请打开串行监视器
//文件栏下方的最后一个按钮(看起来像是带有antena
pinMode(lcdRed,INPUT)的框;//将led引脚设置为输入
pinMode(lcdBlue,INPUT);//将led引脚设置为输入
Wire.begin();
RTC.begin();
//----------------------------------------
if(!RTC.isrunning( )){
Serial.println(“ RTC未运行!”);
//以下行将RTC设置为该草图的编译日期和时间
RTC.adjust(DateTime(__ DATE__,__TIME__ ));
}
//-------------------------------
Serial.print( “正在初始化SD卡。..”);
//确保即使不使用默认芯片选择引脚也设置为
//输出:
pinMode(SS,OUTPUT );
//查看卡是否存在并且可以初始化:
if(!SD.begin(chipSelect)){
Serial.println(“卡失败或不存在” );
//不做任何其他操作:
while(1);
}
Serial.println(“ card initia lized。“);
//打开我们要登录的文件!
//dataFile = SD.open(” datalog.txt“,FILE_WRITE);
//如果(! dataFile){
//Serial.println(“错误打开datalog.txt”);
//由于我们无法写入数据,请耐心等待
//而(1);
//}
//-----------------
//创建一个新文件
char filename [] =“ LOGGER00.CSV”;
for(uint8_t i = 0; i 《100; i ++){
filename [6] = i/10 +‘0’;
filename [7] = i%10 +‘0’;
如果(!SD .exists(filename)){
//仅打开不存在的新文件
logfile = SD.open(filename,FILE_WRITE);
break;//退出循环!
}
}
Serial.print(“登录到:”);
Serial.println(文件名);
logfile.println(“ ,,, Willy ,Reen“);
logfile.println(”数据记录文件“);
logfile.println(” Date,Temp(F),Light“);
}
//=== ================================================== ==== void loop(){《浮点温度= getVoltage(temperaturePin);//从温度传感器获取电压读数
temperature =((temperature-.5)* 100)* 1.8 + 32;//从每度10 mv转换为500 mV偏移量
//转换为度((挥发-500mV)乘以100)
//Serial.println(temperature);//打印结果
//delay(500);//等待第二个
//------------------------
int lightLevel = AnalogRead(lightPin);//读取
lightLevel = map(lightLevel,0,900,0,150);//将值0到900调整为0到255
lightLevel = constrain(lightLevel,0,150);//确保该值介于0和255之间
//////
int tempLevel = AnalogRead(temperaturePin)* 100;//读取
tempLevel = map(tempLevel,66,82,0,150);//将值0到900调整为0到255
tempLevel = constrain(tempLevel,0,150);//确保该值介于0和255之间
analogWrite(lcdBlue,lightLevel);//写入值
analogWrite(lcdRed,tempLevel);//写入值
//---------------------------------------- -------------------
String dataString =“”;
//日期时间的东西-------------- -----------------------------结果//---------------- ---------------------------------------结果//logfile.println( “” );
DateTime现在= RTC.now();
//日志时间
//logfile.print(now.unixtime());//自1970年1月1日以来的秒数
//logfile.print(“,”);
logfile.print(‘“’);
logfile.print(now.year(),DEC) ;
logfile.print(“/”);
logfile.print(now.month(),DEC);
logfile.print(“/”);
logfile.print(now。 day(),DEC);
logfile.print(“”);
logfile.print(now.hour(),DEC);
logfile.print(“:”);
日志文件.print(now.minute(),DEC);
logfile.print(“:”);
logfile.print(now.second(),DEC);
logfile.print(‘“’ );结果,logfile.print( “ ”);//搜索结果logfile.print(温度);结果,logfile.print(“,”);结果,logfile.print(lightLevel) ;
delay(500);
//----------------
/*
//读取传感器并追加到字符串:
for(int AnalogPin = 0; AnalogPin 《2; AnalogPin ++){
int sensor = AnalogRead(analogPin);
dataString + = String(sensor);
if(analogPin 《1){
dataString + =“,”;
}
}
*/
//dataFile.println(dataString);
logfile.println(dataString);
//Serial.println (dataString);
//dataFile.flush();
logfile.flush();
//- -------------------------------------------------- -------
//将光标设置为(0,0):
lcd.setCursor(0,0);
//从0到9打印:
//为(int thisChar = 0; thisChar 《10; thisChar ++){
lcd.print(温度);
//lcd.print(myString);
lcd.setCursor(0,1);
lcd.print(lightLevel);
lcd.setCursor(8,0);
lcd.print(“ Temp”);//在LCD上显示温度
lcd.setCursor(8,1);
lcd.print(“ Light”);//在LCD上显示光
delay(500);
//--------------------- LCD背光
//lightLevel = constrain(lightLevel,0,255);//确保
//值介于
//0和255
之间}
//---------------------------------------------- --------------
//将光标设置为(16,1):
//lcd.setCursor(16,1);
//将显示设置为自动滚动:
//lcd.autoscroll();
//从0到9打印:
//for(int thisChar = 0; thisChar 《10; thisChar ++ ){
//lcd.print(thisChar);
//delay(500);
//}
//关闭自动滚动功能
//lcd.noAutoscroll();
//清除下一个循环的屏幕:
//lcd.clear();
//}
//============= ========================================== 《=》浮点getVoltage (int pin){
return(analogRead(pin)* .004882814);//从0到1023的数字范围转换
//到0到5伏(每个1读数等于〜5毫伏
}
-
数据记录仪
+关注
关注
0文章
131浏览量
13352
发布评论请先 登录
相关推荐
评论