北邮arduino实验报告

合集下载

arduino实验报告

arduino实验报告

arduino实验报告Arduino实验报告引言Arduino是一款开源的电子原型平台,通过简单的硬件和软件结合,可以实现各种创意和创新的项目。

本文将对Arduino进行实验探究,展示其在电子制作中的应用和潜力。

一、Arduino简介Arduino是由意大利的团队开发的一款开源电子平台,它基于易于使用的硬件和软件,使得电子制作变得简单易行。

Arduino板上有输入输出引脚,可以连接各种传感器和执行器,通过编写简单的代码,实现各种功能。

二、实验一:LED闪烁LED闪烁是Arduino的入门实验之一。

通过连接一个LED灯到Arduino板上的数字引脚,编写代码使其闪烁,可以初步了解Arduino的基本操作和编程语言。

三、实验二:温度监测温度监测是Arduino在传感器应用方面的一个典型实验。

通过连接温度传感器到Arduino的模拟引脚,编写代码读取传感器的数值,并将其转化为温度显示在串口监视器上。

四、实验三:无线通信Arduino通过无线模块可以实现与其他设备的通信。

通过连接无线模块到Arduino的串口引脚,编写代码实现与另一个Arduino板或者计算机的通信,可以实现远程控制和数据传输等功能。

五、实验四:机器人控制Arduino可以用于控制机器人的运动。

通过连接电机驱动器和传感器到Arduino,编写代码实现机器人的运动控制和避障等功能,可以制作出简单的智能机器人。

六、实验五:音乐播放器Arduino可以用于控制音乐播放。

通过连接音乐模块和扬声器到Arduino,编写代码实现音乐的播放和控制,可以制作出简单的音乐播放器。

七、实验六:环境监测Arduino可以用于环境监测。

通过连接各种传感器到Arduino,编写代码读取传感器的数值,并将其显示在LCD屏幕上,可以实现对温度、湿度、光照等环境参数的监测。

八、实验七:物联网应用Arduino可以与互联网进行连接,实现物联网应用。

通过连接以太网模块到Arduino,编写代码实现与云平台的通信,可以实现远程监控、数据上传等功能。

arduino液晶屏显示实训报告

arduino液晶屏显示实训报告

arduino液晶屏显示实训报告本次实训旨在通过使用Arduino控制液晶屏显示信息来加深对于Arduino的理解,并实际运用其功能。

本报告将详细介绍实训的目标、步骤和结果,并对实训过程中遇到的问题进行总结和分析。

一、实训目标:1.熟悉Arduino开发环境的搭建和基本操作;2.掌握Arduino控制液晶屏显示的基本原理和方法;3.实现Arduino与液晶屏的连接和数据传输;4.利用液晶屏显示特定信息,如温度、湿度等。

二、实训步骤:1.硬件准备:准备Arduino开发板、液晶屏、杜邦线等硬件设备;2.软件设置:安装Arduino开发环境,并选择合适的库文件以支持液晶屏;3.连接电路:按照液晶屏的引脚定义,将Arduino与液晶屏进行正确连接;4.编写代码:使用Arduino编程语言,编写控制液晶屏显示的代码;5.上传代码:将编写好的代码上传至Arduino开发板,实现与液晶屏的通信;6.测试验证:观察液晶屏显示的效果,并进行必要的调试。

三、实训结果:通过本次实训,我们成功实现了Arduino控制液晶屏显示信息的目标。

液晶屏能够准确显示我们预设的各种信息,如温度、湿度等。

在实际的应用场景中,我们可以通过传感器采集环境数据,并通过Arduino将这些数据显示在液晶屏上,从而提供给用户实时的信息反馈。

四、问题总结与分析:在实训过程中,我们遇到了一些问题,如液晶屏的接线错误、代码逻辑错误等。

通过仔细检查接线、逐行调试代码等方法,我们逐一解决了这些问题,并最终实现了预期的功能。

在今后的实践中,我们需要更加注意细节,认真阅读硬件设备和库文件的说明文档,以避免类似的错误。

结论:通过本次实训,我们深入了解了Arduino控制液晶屏显示的原理和方法,并成功实现了相关功能。

这对于我们进一步学习和应用Arduino有着积极的促进作用。

同时,我们也提高了对于硬件设备接线和软件编程的实践能力。

希望今后能够将所学知识应用于更广泛的领域,为社会的发展做出贡献。

arduino实习报告

arduino实习报告

arduino实习报告在上学期结束后的暑假里,我有幸得到了一份在一家科技公司的实习机会。

这家公司专注于物联网领域的研究和开发,并使用Arduino作为主要的开发平台。

作为一名对电子技术有浓厚兴趣的学生,这对我来说是一次绝佳的机会。

在这篇报告中,我将分享我在实习期间所学到的知识和经验。

1. 简介与背景在开始正式介绍我的实习经历之前,我想先为大家提供一些关于Arduino的基本背景信息。

Arduino是一款开源的电子原型平台,它使用易于理解且易于编程的软件和硬件,旨在帮助初学者和专业人士创造交互式的电子作品。

它由一个开放的硬件和一个集成开发环境(IDE)构成,可以轻松地编写和上传程序代码到Arduino板上。

2. 实习目标在实习的开始阶段,我与我的导师一起制定了一系列的实习目标。

首先,我希望能够熟练掌握Arduino的基本操作和编程语言。

其次,我想在物联网项目的实际开发中获得经验,并学习如何将传感器与Arduino板相互连接。

最后,我希望能够参与到一个完整的项目中,亲身体验从设计到制作再到调试的整个过程。

3. 实习内容在整个实习期间,我主要从事两个方面的工作。

首先,我负责为公司开发的智能家居系统编写代码,以实现远程控制和传感器数据的采集。

这对我来说是一个很好的学习机会,因为我不仅能够巩固自己在Arduino编程方面的知识,还能够了解智能家居领域的最新发展动向。

4. 实习心得与体会实习期间,我深刻体会到了实际工作与课堂学习之间的差距。

在学校里,我们通常只会进行一些简单的实验和模拟项目,很少涉及到真实的应用场景。

但在实习过程中,我亲身体验到了产品开发的全过程,包括从需求分析到系统设计,再到最后的测试和部署。

这让我对自己的专业有了更深入和全面的认识。

5. 总结与展望通过这次实习,我不仅提升了自己的技术能力,还了解了物联网领域的最新发展。

我相信,这些经历将对我未来的学习和职业发展产生积极的影响。

未来,我希望能够继续学习和研究Arduino和物联网技术,并将所学应用于更多实际项目中,为社会的发展做出贡献。

arduino实习报告

arduino实习报告

arduino实习报告这学期,我有幸参加了一家公司的Arduino实习。

在这段时间里,我收获了很多,不仅学会了很多硬件和软件知识,还锻炼了自己的动手能力和解决问题的能力。

首先,我要感谢我的导师,一个非常有耐心和负责的工程师。

他每次都会认真对待我的问题,给予我很多指导和建议。

如果没有他的帮助和支持,我不可能完成实习任务,也不可能学会这么多有用的知识。

在实习期间,我的主要任务是学习Arduino的基础知识,并用Arduino制作一些简单的电路和程序,体验这种开发板的强大功能。

在导师的帮助下,我读了很多经典的Arduino教材,学会了如何使用Arduino IDE进行电路设计、程序编写和上传。

接着,我参与了一个小组项目,任务是制作一个智能家居系统,随时监控室内温度和湿度,并自动调节空气净化器和加湿器的工作模式。

我负责设计Arduino的硬件模块,包括传感器、继电器和LED灯,还负责编写程序,实现数据传输和控制功能。

这是一个非常有挑战性的项目,在实践中我遇到了不少困难,比如传感器读数不准、继电器无法控制等等。

但是我通过仔细阅读文档、查找资料和与同事讨论,最终成功完成了任务,并得到了公司领导的一致好评。

除此之外,我还参加了一些技术培训和研讨会,聆听了许多优秀工程师的经验分享和案例分析。

他们的经验和想法启发了我,提高了我的技术素养和创新能力。

在这个行业里,知识的更新和创新的推动非常重要,只有不断学习和升级自己的技能,才能不被淘汰、不被取代。

总的来说,这个Arduino实习让我获得了很多。

除了硬件和软件技术,我还学会了如何与团队协作、如何从错误中吸取教训、如何面对挑战和解决问题。

这些经验和能力,对我今后的学习和工作都非常有帮助。

我希望将来可以继续从事这个行业,探索更多未知的领域,实现自己的梦想和价值。

arduino实验报告

arduino实验报告

arduino实验报告《Arduino实验报告》Arduino是一种开源的电子原型平台,由意大利的开发者设计,用于快速搭建原型并进行实验。

它可以用于各种项目,包括机器人、音乐播放器、智能家居设备等。

在本次实验中,我们将使用Arduino平台进行一系列实验,以探索其功能和应用。

实验一:LED灯控制我们首先搭建了一个简单的电路,将一个LED灯连接到Arduino板上,并编写了一个简单的程序,以控制LED灯的亮灭。

通过这个实验,我们学会了如何使用Arduino的数字输出引脚来控制外部设备。

实验二:温度传感器接下来,我们使用了一个温度传感器,将其连接到Arduino板上,并编写了一个程序来读取传感器的数据,并将其显示在串行监视器上。

通过这个实验,我们学会了如何使用Arduino的模拟输入引脚来读取外部传感器的数据。

实验三:蜂鸣器控制在第三个实验中,我们连接了一个蜂鸣器到Arduino板上,并编写了一个程序,以控制蜂鸣器的发声。

通过这个实验,我们学会了如何使用Arduino的数字输出引脚来控制发声设备。

实验四:无线通信最后,我们使用了一个无线模块,将其连接到Arduino板上,并编写了一个程序,以实现两个Arduino板之间的无线通信。

通过这个实验,我们学会了如何使用Arduino的串行通信功能来实现设备之间的数据传输。

通过以上一系列实验,我们对Arduino平台的功能和应用有了更深入的了解。

它不仅可以用于教育和学习,还可以用于各种实际项目中。

我们期待未来能够进一步探索Arduino的潜力,以应用于更多的创新和实践中。

arduino实验报告3000字论文

arduino实验报告3000字论文

arduino实验报告3000字论文篇一:Arduino毕业设计说明书(论文)模板示例摘要本文针对Arduino能通过各种传感器感知环境的功能,对现有的物联网技术进行了分析和研究,详细介绍了Arduino平台下植物状态监测系统的设计与实现。

文章首先分析了物联网技术的背景和意义。

然后在第一章和第二章简单介绍了单片机和Arduino的相关信息,第三章介绍了本次设计所需要的器材,从第四章到第六章中详细描述了关键的数据上传和实时监控部分,包括:如何采集数据,如何进行数据上传,将从传感器上获取的数据上传到后台WEB,以及上传之后处理数据,设置预警等。

最后本文还分析了在数据上传和处理数据时遇到的一些问题和解决方案,展望了一些扩展功能。

【关键词】物联网Arduino 植物状态监测AbstractAccording to the Arduino through a variety of sensors to perceive the environment function, the existing networking technology for analysis and research, introduces the design and implementation of plant condition monitoring system based on Arduino platform.This paper analyzes the background and significance of the technology of IOT firstly. And then, from the fourth chapter to the sixth chapter, the key data upload and real-time monitoring parts are described in detail, including: How to upload data, upload the data from the sensor to the background WEB, and processing data, set the alarm, etc. Finally, thispaper also analyzes some problems in data processing and data upload and solutions.【Key Words】 IOTArduinoplant conditionmonitoring目录摘要................................................................... (I)Abstract ............................................................ ..................................................... II 目录................................................................... (III)前言................................................................... .. (1)1单片机为核心器件——Arduino.......................................................... . (2)1.1单片机定义................................................................... (2)1.2单片机和个人计算机之间的异同 (2)1.3单片机的功能................................................................... .. (2)1.4单视图................................................................... .. (2)2 Arduino的基本组成 .................................................................. (3)2.1 Arduino定义 .................................................................. . (3)2.2 Arduino的诞生 .................................................................. (3)2.3 Arduino语言 .................................................................. . (3)2.3.1 关键字................................................................... (4)2.3.2 语法符号................................................................... .. (4)2.3.3 运算符................................................................... (4)2.3.4 数据类型................................................................... .. (5)2.3.5 常量................................................................... (5)2.3.6 结构................................................................... (6)2.3.7 功能................................................................... (6)3 本次设计所需的硬件与软件................................................................... . (7)3.1 Arduino UNO.................................................................. . (7)3.1.1 Arduino uno基本概要 (8)3.1.2 通信接口................................................................... .. (8)3.1.3 下载程序................................................................... .. (9)3.1.4 注意要点................................................................... .. (9)3.2 DHT11传感器和LY-69................................................................ (9)3.3 开发环境................................................................... .. (11)4 植物生长状态监测系统介绍................................................................... . (12)4.1 设计思路................................................................... . (12)4.2设计步骤................................................................... .. (13)4.2.1设置网络................................................................... (13)4.2.2获取数据................................................................... (13)4.2.3数据分析................................................................... (13)4.2.4处理分析结果................................................................... . (13)4.2.5设置预警................................................................... (13)4.2.6与用户交互................................................................... .. (13)5植物生长状态监测系统概要设计...................................................................135.1工作原理................................................................... .. (13)图................................................................... . (15)6植物生长状态监测系统详细设计...................................................................166.1设计目的................................................................... .. (16)6.2功能模块设计................................................................... (16)6.2.1网络连接................................................................... (16)6.2.2获取数据................................................................... (17)6.3系统调试................................................................... .. (19)6.3.1编译程序................................................................... . (19)序................................................................... . (20)7运行环境与结论................................................................... . (24)7.1硬件环境................................................................... .. (24)7.2软件环境................................................................... .. (24)7.3运行环境................................................................... .. (24)7.4运行结果................................................................... .. (24)存在的问题和不足................................................................... . (28)总结................................................................... (29)致谢................................................................... (30)参考文献................................................................... . (31)前言物联网是新一代信息技术的重要组成部分,也是信息化时代的重要发展阶段。

arduino实训报告总结1000字

arduino实训报告总结1000字

arduino实训报告总结1000字
本次实训是一次非常有意义的经历。

在这次实训中,我们学习了如何使用Arduino板进行编程和控制。

我们学习了许多有关电子和编程的知识,并且最终成功地构建了一个完整的项目。

在实训的开始,我们学习了基本的电子知识和电路理论,包括电路元件的功能、电路组成、电流电压等基本概念。

我们还学习了如何使用Arduino板和电脑进行编程,并且学习了如何使用Arduino 的IDE软件进行代码编写和上传。

在接下来的实训中,我们开始探索如何使用Arduino板控制各种不同的电子元件,如LED灯、蜂鸣器、电机等。

我们学习了如何使用Arduino的数字和模拟输出来控制这些元件的电流和电压,以达到控制它们的目的。

在接下来的几周中,我们开始着手设计我们的项目。

我们讨论了各种不同的想法,并最终决定设计一个智能家居控制系统。

我们使用了各种传感器和元件,如温度传感器、湿度传感器、LED灯、电机等,并使用了各种控制算法和逻辑来实现我们的目标。

在实现我们的项目时,我们遇到了许多困难和挑战。

例如,我们需要确保不同的元件之间能够正确地通信和互动,我们需要确保我们的代码能够正确地实现我们的控制逻辑。

在这个过程中,我们学习了如何使用调试工具和技术来解决这些问题,并最终成功地实现了
我们的项目。

总的来说,这次实训是一次非常有意义和有益的经历。

我们学习了许多关于电子和编程的知识,并最终成功地构建了一个完整的项目。

这次实训不仅提高了我们的技能和知识水平,也提高了我们的团队合作和解决问题的能力。

我们相信这次实训对我们未来的学习和职业生涯都会产生积极的影响。

arduino实习报告

arduino实习报告

arduino实习报告一、引言在本次实习中,我有幸参与了一个关于Arduino的项目,通过实际操作和团队合作,我对Arduino的应用和原理有了更深入的了解。

本报告将对我在实习中的学习经历和所取得的成果进行详细的介绍。

二、实习概述在实习初期,我与我的团队成员共同制定了项目的目标和计划。

我们的目标是设计一个基于Arduino的智能家居控制系统,通过连接各种传感器和执行器,实现对家居设备的远程监控和控制。

三、实习内容1. 学习Arduino的基础知识在实习开始前,我对Arduino的了解仅限于书本知识。

因此,我在实习初期花了大量的时间学习Arduino的基础知识,包括如何搭建和配置Arduino开发环境,如何编写Arduino程序以及如何与各种传感器和执行器进行交互。

2. 设计和搭建智能家居系统的硬件为了实现我们的目标,我们需要选择合适的传感器和执行器,并将它们与Arduino进行连接。

在这个过程中,我学会了如何选择合适的硬件组件以及如何将它们连接到Arduino上。

3. 编写智能家居系统的控制程序在硬件搭建完成后,我们需要编写控制程序来实现对家居设备的监控和控制。

通过研究和学习,我使用Arduino编程语言开发了一套完整的控制程序,通过该程序,用户可以通过手机应用远程监控和控制家居设备。

4. 测试和优化智能家居系统为了确保我们的系统能够正常工作,我们进行了多次测试和优化。

在测试过程中,我发现了一些硬件和软件方面的问题,并及时进行了修复和改进。

通过多次优化,我们的系统逐渐趋于稳定和可靠。

四、实习成果通过参与这个项目,我获得了许多宝贵的经验和技能。

首先,我深入了解了Arduino的应用和原理,学会了如何搭建和配置Arduino开发环境,以及如何编写Arduino程序。

其次,我学会了如何选择和使用合适的传感器和执行器,并将它们与Arduino进行连接。

最重要的是,我学会了如何通过团队合作来解决问题,这在实际工作中非常重要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子电路综合实验设计实验名称:基于 Arduino 的电压有效值测量电路设计与实现学院:班级:学号:姓名:班内序号:实验基于Arduino 的电压有效值测量电路设计与实现一. 摘要Arduino是一个基于开放原始码的软硬件平台,可用来开发独立运作、并具互动性的电子产品,也可以开发与PC 相连的周边装置,同时能在运行时与PC 上的软件进行交互。

为了测量正弦波电压有效值,首先我们设计了单电源供电的半波整流电路,并进行整流滤波输出,然后选择了通过Arduino设计了读取电压有效值的程序,并实现使用此最小系统来测量和显示电压有效值。

在频率和直流电压幅度限定在小范围的情况下,最小系统的示数基本和毫伏表测量的值相同。

根据交流电压有效值的定义,运用集成运放和设计的Arduino最小系统的结合,实现了运用少量元器件对交流电压有效值的测量。

关键字:半波整流整流滤波 Arduino最小系统读取电压有效值二. 实验目的1、熟悉Arduino 最小系统的构建和使用方法;2、掌握峰值半波整流电路的工作原理;3、根据技术指标通过分析计算确定电路形式和元器件参数;4、画出电路原理图(元器件标准化,电路图规范化);5、熟悉计算机仿真方法;6、熟悉Arduino 系统编程方法。

三. 实验任务及设计要求设计实现 Arduino 最小系统,并基于该系统实现对正弦波电压有效值的测量和显示。

1、基本要求(1)实现Arduino 最小系统,并能下载完成Blink 测试程序,驱动Arduino 数字13 口LED 闪烁;(2)电源部分稳定输出5V 工作电压,用于系统供电;(3)设计峰值半波整流电路,技术指标要求如下:输入信号电压范围:0~1V;频率范围:500Hz~2KHz;电源电压:5V;(4)采用Arduino 最小系统读取峰值半波整流电路的输出结果,并计算正弦波电压有效值;(5)测量出的有效值通过Arduino 串口监视器进行读取。

2、提高要求(1)用数码管显示正弦信号有效值的测量结果;(2)用Arduino 最小系统直接读取正弦信号计算有效值,比较不同测试方法的测量误差;(3)自拟其他功能。

3、提交材料(1)实验报告(含仿真结果、原理图)(2)峰值半波整流等相关电路的仿真文件;(3)Arduino 程序;(4)电路原理图文件。

四. 设计思路及结构框图设计思路:系统组成框图Arduino 电压有效值测量电路包括峰值半波整流电路、最小系统、显示、稳压电路四部分,其中最小系统包括微处理器、振荡电路、下载电路和测试电路。

峰值半波整流电路电源显示部分Arduino 最小系统元器件资料本实验中用到了一个LM741CN芯片,通过查找资料了解LM741CN的主要参数,管脚设置等。

一片ATMEGA8 芯片来搭建一个最小系统,通过查找资料了解ATMEGA8的主要参数和管脚设置。

.分块电路和总体电路的设计(1)半波电路的设计本实验需要的是输入7~10V的直流稳压电源,输出5V。

具体电源电路包括整流,滤波等部分,具体的设计如下。

仿真波形如下图所示(2)半波电路加上整流滤波的设计。

交流电经过整流后得到的是脉动直流,采用滤波电路可以大大降低这种交流纹波成分,让整流后的波形变得比较平滑。

通过整流滤波电路得到电压的峰峰值等于√2倍电压有效值。

仿真波形如下图所示四、功能实现及扩展1基本要求:实际实验中的波形截图及相关分析:五. 故障及问题分析1.问题一:半波整流电路的问题1)选择了不合适的半波电路左图为半波整流实验图,从图中可以看到半波波形无失真,利用直流抬高2.5V左右,读数为2.55V,符合仿真结果。

左图为滤波后实际实验图,从图中可以看到滤波效果很好,减去抬高的2.55V所得值为毫伏表测量值的√2倍,符合滤波要求。

失真波形图电路如下在使用LM741CN之前尝试用LM358做半波整流,由于滤波后峰值太低,采用全波整流完成,但仿真和实验均失真,故最终放弃使用LM358。

半波仿真波形图如下滤波仿真波形图如下2)电路没有共地(此时使用LM358)LM358严重失真波形图实际半波波形比仿真波形好,原因可能是仿真软件的元件库对元件的性能统计不完全,导致了与实际情况不符。

但无论仿真还是实际操作中都存在明显失真,故舍弃此电路设计。

可能和电容值有关。

此图也为LM358实际滤波图,原因是电路没有全部共地,共地后波形为上面的波形图。

分析及解决方法:器件LM358仿真始终就没能找到合适的半波整流电路,所以更换为LM741 最终得到了合适的半波波形。

3)在使用LM741时波形失真,电路没有接错。

分析及解决方法:LM741四号管脚没有接地。

问题二:使用Arduino过程中遇到的问题1)第一次接触Arduino接线接错导致ATMEGA8直接烧毁。

解决方法:确认下载器接口和图示的对应关系,重接导线。

2)没有把VCC和AREF相接,电压读数是错的。

分析及解决方法:AREF是A/D转换的参考电压输入端,是5V,不接入参考电压读数必然不对。

将两端连接问题解决。

问题三:读数时将电压改变范围扩大,出现不能忽略的误差分析及解决方法:通过示波器上测量的输出电压值和毫伏表测量的输入电压值的比值发现,输出和输入并非完美的线性关系,即在电路中存在一定的失真,但由于仿真中没有问题,迫于时间限制没能做出完美的线性输出,但可通过改写程序减小误差,如将电压值分段,计算几组比值,在代码中给每段不同的参数。

改进代码附在最后(在验收时未使用)。

六.实验改进1)将运算放大器U1由LM358换成LM741,将电路改为经典半波整流电路,观测波形,滤波电路最初使用20kΩ电阻,滤波后幅值较低,与毫伏表读数相差较多,后改为200Ω,幅值正常。

原因是20kΩ消耗能量过多,电路的负载能力可能不够。

改小电阻虽能减小损耗,但理论上输出电流的平滑性会降低,好在实验中没有出现此类现象。

2)Arduino程序改进。

①电压示数不对:第一次获得电压示数的时候发现是毫伏表测量的有效值的√2倍,于是我们在获取的电压上乘以了0.707,使读数相对准确了许多但误差依然存在。

②电压读数存在误差:为了使读数更加准确,我在不同幅值处都计算了输出端和毫伏表示数的比值并求平均,最终使Arduino读数在小范围内零误差读数。

但输入幅值一旦非常小或者非常大之后会体现出不小的误差,由于时间问题最终没能对程序进行改进,个人认为由于输出和输入并非完全线性关系,所以对电压读值进行分段,每段计算出不同的输出/输入的比例系数,相对会减少误差,但非线性关系也意味着输出存在失真,所以电路还应进行改进。

同组同学的滤波电阻都取的较小,相对的误差也较小,仿真中并无区别,希望还能在实际操作中进行探究。

后面附了改进之后的代码,一共进行两次改进,但最后一次停留在理论,未能进行实际操作的验证。

七. 总结和结论1.实验总结:本次试验是综合设计性实验,要求我们将以前学过的知识都综合运用起,并和新接触的Arduino器件结合起来使用,设计出具有一定综合功能的电路。

对Arduino进行了解并未花费太多时间,而半波整流电路的设计却是整个过程中最难的一部分,由于器件的性能和仿真似乎有出入,不同电路的仿真做了不下十种最终才找到了比较合适的。

2.实验结论:通过Arduino搭建最小系统和模拟电路的结合实现了电压有效值的读取,还有许多功能有待尝试。

有程序通过下载器经导线对ATMEGA8的输入输出管脚进行控制来实现自己的程序是非常有意思的事情,希望日后还有机会做此类尝试。

3.心得体会:这是一年的模电实验里最有意义的一次,约了六次实验,跑了9次实验室,用了非常多的时间去解决各种问题,起初觉得别人拿着现有的数据很快出图出结果非常羡慕,但是到后来一步一步慢慢达成试验目的也获得了许多成就感。

尤其是很难忘记烧掉一个ATMEGA8之后第二次连上导线接到电脑成功地进行第一次blink之后的喜悦,当时甚至给自己起了个新名字叫“布令客1号”,现在回想起来有点像小学生做的事情,但真的在完成一个之前全然不懂的任务之后非常的有成就感。

越到后期进步就越缓慢,但和同组的人交流之后发现并不是在原地踏步,虽然很长一段时间没能确定下来电路,但同时排除了不少错误的电路设计。

实验中收获的知识有限,但我觉得我得到了我几乎从来没有过的耐心,我甚至在实验结束后的五一小长假前一天认真的百度了色环读阻值,并且把所有的未知电阻挨个读值之后插回了电阻箱,那一刻我觉得电路实验是大学这两年最珍贵的课程,不能糊弄,不能投机取巧虽然在一定程度上可以,还培养了耐心,上了北邮之后我也算是第一次真正的觉得自己的专业还不错。

八. 所用元器件及测试仪表清单元器件清单仪器仪表清单九. 参考文献1.北邮电路中心《电子电路综合设计实验》2.《电子电路基础》北京邮电大学出版社刘宝玲3.电路中心网站4.极客工房Arduino教程资料附代码:1)初次代码:const int D=5;int a;int V;int Num[4];void disp(int pos,int num){for(int i(0);i<6;i++){digitalWrite(i,LOW);}digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,HIGH);digitalWrite(12,HIGH);digitalWrite(13,HIGH);if(num==0){digitalWrite(6,HIGH);digitalWrite(7,HIGH); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==1){digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,HIGH); }else if(num==2){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,HIGH); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==3){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==4){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,HIGH);}else if(num==5){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,LOW); }else if(num==6){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,LOW); }else if(num==7){digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==8){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==9){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW);digitalWrite(13,LOW);}digitalWrite(pos,HIGH);}// the setup routine runs once when you press reset: void setup() {// initialize the digital pin as an output.pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);pinMode(A0,INPUT);digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);for(int i(0);i<6;i++){digitalWrite(i,HIGH);delay(500);digitalWrite(i,LOW);}}// the loop routine runs over and over again forever: void loop() {a=analogRead(A0);V=a*(5000.0/1023.0);Num[0]=V/1000;Num[1]=(V-Num[0]*1000)/100;Num[2]=(V-Num[0]*1000-Num[1]*100)/10;Num[3]=(V-Num[0]*1000-Num[1]*100-Num[2]*10)/1; for(int i(0);i<100;i++){disp(2,Num[0]);delay(D);disp(3,Num[1]);delay(D);disp(4,Num[2]);delay(D);disp(5,Num[3]);delay(D);}}2)实验时最终改进:[解决了不停地闪的问题]/*for measuring voltage*/const int S=5;int adData=0;int V=0,preV=0;int Num[4];void disp(int pos,int num){for(int i(0);i<6;i++){digitalWrite(i,LOW);}digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,HIGH);digitalWrite(12,HIGH);digitalWrite(13,HIGH);//definations of numbersif(num==0){digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==1){digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,HIGH); }else if(num==2){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,HIGH); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==3){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==4){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,HIGH); }else if(num==5){digitalWrite(6,HIGH); digitalWrite(7,LOW);digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,LOW); }else if(num==6){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,LOW); }else if(num==7){digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==8){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==9){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else{digitalWrite(11,0);}digitalWrite(pos,HIGH);}// the setup routine runs once when you press reset: void setup() {// initialize the digital pin as an output.pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);// pinMode(A5,INPUT);}// the loop routine runs over and over again forever: void loop() {analogReference(DEFAULT);adData=analogRead(A5);V=(adData*(5000.0/1023.0)-2550);preV=V;Num[0]=V/1000;Num[1]=(V%1000)/100;Num[2]=(V%100)/10;Num[3]=(V%10);for(int i(0);i<10;i++){disp(2,Num[0]);delay(S);disp(3,Num[1]);delay(S);disp(4,Num[2]);delay(S);disp(5,Num[3]);delay(S);}}3)实验后制作的改进版[没在实验中测试,添加了电压值范围的判断,用红色标记] /*for measuring voltage*/const int S=5;int adData=0;int V=0,preV=0;int Num[4];void disp(int pos,int num){for(int i(0);i<6;i++){digitalWrite(i,LOW);}digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,HIGH);digitalWrite(12,HIGH);digitalWrite(13,HIGH);//definations of numbersif(num==0){digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);}else if(num==1){digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(12,LOW); digitalWrite(13,HIGH); }else if(num==2){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,HIGH); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==3){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); }else if(num==4){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,HIGH); }else if(num==5){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,LOW); }else if(num==6){digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,HIGH);digitalWrite(13,LOW);}else if(num==7){digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);}else if(num==8){digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);}else if(num==9){digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,HIGH);digitalWrite(10,LOW);digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);}else{digitalWrite(11,0);digitalWrite(10,0);}digitalWrite(pos,HIGH);}// the setup routine runs once when you press reset: void setup() {// initialize the digital pin as an output.pinMode(0, OUTPUT);pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);// pinMode(A5,INPUT);}// the loop routine runs over and over again forever: void loop() {analogReference(DEFAULT);adData=analogRead(A5);if(V<=100) //判断语句{V=((adData*(5000.0/1023.0)-2550)*0.7);}else if(V<=200){V=((adData*(5000.0/1023.0)-2550)*0.703);}else if(V<=300){V=((adData*(5000.0/1023.0)-2550)*0.707);}else if(V<=400){V=((adData*(5000.0/1023.0)-2550)*0.710);}else if(V<=500){V=((adData*(5000.0/1023.0)-2550)*0.714);}else if(V<=600){V=((adData*(5000.0/1023.0)-2550)*0.717);}else if(V<=700){V=((adData*(5000.0/1023.0)-2550)*0.720);}else if(V<=800){V=((adData*(5000.0/1023.0)-2550)*0.723);}else if(V<=900){V=((adData*(5000.0/1023.0)-2550)*0.726);}else if(V<=1000){V=((adData*(5000.0/1023.0)-2550)*0.730);}else if(V>1000){V=((adData*(5000.0/1023.0)-2550)*0.735);}preV=V;Num[0]=V/1000;Num[1]=(V%1000)/100;Num[2]=(V%100)/10;Num[3]=(V%10);for(int i(0);i<10;i++){disp(2,Num[0]);delay(S);disp(3,Num[1]);delay(S);disp(4,Num[2]);delay(S);disp(5,Num[3]);delay(S);}}。

相关文档
最新文档