数据记录仪的制作图解

步骤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毫伏
}

凭借AI“超级芯片”AMD拟向强势英伟达发起挑战
透彻理解超级电容的11个参数
浅谈ASCP300与汽车充电桩配套运用案例
简易电动机调速电路
大众杀手级SUV途昂来袭,碾压奥迪Q7,汉兰达一脸懵逼!
数据记录仪的制作图解
欧洲5G商用进程向前迈进一大步,将为用户带来无与伦比的5G体验
5G未来,高岘已来
广凌实验室智慧物联管控:构建自动化、共享化、开放化的智慧教学空间
4月华为、OV连发新机,20193D复合板材依旧火爆
头戴显示器目视光学系统的基本参数
AI分布式无纸化交互系统:突破传统,引领AI智能会商新革命!
博通并购高通,幕后半导体华人陈福阳浮出水面
独角兽企业代表了新兴产业的发展方向,地方大力扶持独角兽
马斯克称特斯拉Cybertruck空气动力学性能优越
一加TV Q1 Pro渲染图和配置曝光,搭载Gamma Color Magic处理器
图片集:客户回传项目地LED显示屏图片
日亚化向Corlant提起专利诉讼 并请求损害赔偿并核发禁制令
Dymola — 多学科系统仿真平台
Arduino支持DigisparkArduino的技巧