看完相当于学过并实践用过arduino! ——复现arduino开发板的众多小实验

在这里插入图片描述

吃饱喝足,回学校了。今天到了arduino开发板和一整套学习工具,马上就回宿舍开始学习,直播更新
在这里插入图片描述
回到宿舍吃点补品就开始啦。
首先是开箱,整个箱子的图片就不拍了,是一个塑料盒子。里面包含一本教材和各种硬件材料。

在这里插入图片描述
上面图中就是一部分硬件材料,包含电池/纽扣电池、诸多杜邦线、一块面包板和一块应该是用来定位的板子。
在这里插入图片描述
然后就是这里面的一块核心开发板,这块板是arduino的升级版,能兼容arduino,相当于是个多了几个功能的arduino plus,它的名字叫ZYDUINO。
还有附带的两条连接线,一条是usb数据线,用来供电/下载;另一条是带电池扣的DC电源供电线。
在这里插入图片描述
上面是第一包零件包
根据其中的编号分别是
1、液晶模块
2、超声波模块
3、AD/DA转换模块
4、显示屏
5、湿度传感器模块
6、角度舵机
7、时钟传感模块
8、气压传感器模块
9、温度传感器模块
10、射频读卡模块
11、不知道是什么
12、风扇
现在是20:17,从发帖到现在居然已经过去一小时了,深感时间流逝之快,突然有点事情,等会再更。
🆗,事情办完了,现在是20:44,继续学习。
接下来一边吃石榴,一边打开了第二包零件,里面有27个电子元件,我们分两张图来说明
在这里插入图片描述
图中按编号来分别是:
1、红外遥控器
2、烟雾传感器
3、电位器传感器
4、继电器
5、火焰传感器
6、电位器传感器
7、倾斜开关传感器
8、声音传感器
9、雨滴传感器
10、U型光电传感器
11、有源蜂鸣器
12、360旋转传感器
在这里插入图片描述
1、振动传感器
2、激光传感器
3、轻触开关
4、光敏电阻传感器
5、红外避障
6、无源蜂鸣器
7、双色LED灯
8、IR接受模块
9、RGB LED传感器
10、干簧管传感器
11、红外循迹模块
12、触摸传感器
13、模拟温度传感器
14、七彩LED灯
15、霍尔开关传感器
上面三组电子模块,大多都是传感器,也符合单片机的基本工作流程:接受信息——处理信息——发出信息,拆这些电子模块还真花了不少时间,因为每一个都是单独装的,现在已经来到了九点一刻。

接下来就是开发软件的下载了,arduino有专门的开发软件叫做arduino IDE,可以在官方网站https://www.arduino.cc/en/Main/Software免费下载。下面就讲一讲如何安装arduino IDE
第一步在这个地方选择你需要的文件下载,我下载的是windows版本的软件压缩包,点进去后会问你想不想要捐款,不要把界面误认为购买了哦。
下载地有点慢,趁这个时候,去洗个澡。不过下载确实很慢,要一个多小时,洗完澡还没下载完在这里插入图片描述
在这里插入图片描述
这个是解压后的文件,双击图中这个arduino.exe文件就可以用了,当然这个仅限于电脑上已经有JAVA驱动的同学,如果没有呢,那可以下载安装程序,会自动安装对应的驱动。
对于ZYduino开发板,还需要下载另外的驱动CH341SER.exe,在商家提供的资料里面有,当然在网上也能直接找到
在这里插入图片描述
在这里插入图片描述
进去点安装就可以了
这个时候就用USB数据线连接你的电脑和板子
然后打开设备管理器
在这里插入图片描述
在这里插入图片描述
如果在端口中能看到这个东西,就说明已经成功了,你的电脑能识别出你的板子。

现在我已经成功了,那我们就开始第一个实验吧!

一、双色LED实验

先看一下双色灯的原理图和代码吧

int redpin=11;
int greenpin=10;
int val=0;
//设定两个引脚,初始化val值
void setup() {
pinMode(redpin,OUTPUT);
pinMode(greenpin,OUTPUT);
//设定引脚模式,表示10,11串口都是输出电的
Serial.begin(9600);
//设定波特率
}
//以下两个for循环表示val从0累加到255,再从255回到0
//println表示在助手中打印val的值
//analogWrite表示在这个口输出某电压,电压值0到5v,对应val0到255
//delay函数表示延迟多少毫秒,在延迟固定的时间后进入下一次循环
void loop() {
for(val=255;val>0;val--)
{
  analogWrite(redpin,val);
  analogWrite(greenpin,255-val);
  Serial.println(val,DEC);
  delay(30);
  
  }
for(val=0;val<255;val++)
{
  analogWrite(redpin,val);
  analogWrite(greenpin,255-val);
  Serial.println(val,DEC);
  delay(30);
}
}

看了注释之后大家应该明白了,这个程序的意思就是让10,11引脚输出高电压,只不过一个升高另一个就降低,两个以同样的速度升高降低。
我们再来看一下双色二极管的电路原理图
在这里插入图片描述
这个电路图非常简单,就不多做解释了。也就是说当R端连接11引脚,G端连接10引脚时,两个二极管各自两端的电压会从高到低再从低到高变化,当高于导通电压时,二极管发光,这时另一个二极管电压可能不足导通电压,此时表现出红或绿色。当val值在255/2左右时,可能两个二极管都导通,出现混色的情况。

在这里插入图片描述
这个实验正是这样连接,同时让K端接地(GND端),达到红绿轮流亮的效果。
注:在编译器界面右上角可以打开助手
在这里插入图片描述

这个放大镜就是了

2、RGBLED实验

原理跟上一个差不多,没什么好讲的
元件的电路原理图展示一下
在这里插入图片描述
也就是说要给rgb三个脚不同的电压来控制这个器件中红绿蓝三原色的配比,以表现出不同的电压。
一种思路是设置一个color函数,传三个数据进去,三个数据分别表示r、g、b的电压,

color(int r,int g,int b)
{
analogWrite(rpin,r);
analogWrite(gpin,g);
analogWrite(bpin,b);
}

在这里插入图片描述
也是很轻松就完成了

3、七彩LED灯

七彩更简单,只需要将元件连接正负极就可以了,然后就会自动闪烁
在这里插入图片描述

舍友已经睡觉了,不能打扰人家,我到客厅继续学习了。
在这里插入图片描述
虽然非常简单,写给新手看应该也能帮助到人吧。

4、继电器实验

继电器我们在中学里面就学过,原理是利用磁力控制开关的开闭,这套里面的继电器模块能用led灯展示各种运行状态。
在这里插入图片描述

上面是这个继电器模块的原理图
可以看到就算不加信号端SIG,D0灯也会亮,表示元件正常通电。当SIG输入高电平时,三极管导通并且给线圈通电,触发继电器,同时D1灯发光;输入低电平时,不会触发,继电器复位。

int delaypin=7;
void setup() {
 pinMode(delaypin,OUTPUT);
}

void loop() {
 digitalWrite(delaypin,HIGH);
 delay(2000);
 digitalWrite(delaypin,LOW);
 delay(500);
}

通过这样的代码可以听出两种不同的状态(一个时间长,一个时间短)。设置的7号端口就是信号端,连接SIG(或者in),另外两个vcc,gnd(dc+,dc-)则按惯例连接电池正负极。
在这里插入图片描述
这样继电器控制就做好了。

已经一点了,就先睡觉啦。

早起的鸟儿有虫吃,可惜起床时不知怎么已经十点,计划已经用不了了。那就干脆吃个华夫饼,来学一学arduino吧!
书接上文,上次的看完相当于学过并实践用过arduino!(一) ——复现arduino开发板的众多小实验在此处可以直接点击观看。
先回顾一下上次的内容。我买了一个arduino的实验箱,里面有各种电子元件,用来完成arduino的各种小实验。上次带大家看了一下箱子里面到底有哪些东西,下载了一下arduino的开发软件,并且完成了四个小实验。那么今天就是接下去推进其他的实验。
首先开始之前,是传统补品环节。
在这里插入图片描述
吃完就开始学习!

实验五 激光传感器实验

这个实验其实难住了我,因为电路原理图看不懂,整个电子元件的结构也完全不知道。这个资料也实在是太简略了!!!
在这里插入图片描述
不过如图所示,要使用这个电子元件只需要接两根线就行,VCC和SIG,那么其实很容易想到的是,这个元件使用SIG的高低电平来控制。所以马上我就来验证一下。

int laserpin=7;
void setup() {
pinMode(laserpin,OUTPUT);
}

void loop() {
 digitalWrite(laserpin,LOW);
 delay(2000);
 
 digitalWrite(laserpin,HIGH);
 delay(500);
}

把7号引脚设置为输出,并且循环输出**(loop的意思为循环,arduino自带的loop函数会一次又一次输出其中的内容)**,同时设置低电平的持续时间为2秒,高电平为0.5秒,用来判断这个元件如何使用。
在这里插入图片描述
把VCC接上元件上的“s”端,7号口接上元件的“-”端,就能正常发出激光了,经过检验,是低电平发出激光高电平不发出激光,这也与常理一致。
接下来用这个元件表达一下摩斯电码。摩斯电码可将信息用点、线表示,我们就用元件的开关来表示1,0。
整个程序的结构是:

1

.在头文件中将字母和数字各归为不同的数组,将26个字母用数组的1到26个值表示,这26个值就是各字母的莫斯电码。

#ifndef __RETRIEVAL_H__
#define __RETRIEVAL_H__

char* letters[] = {
  ".-",  //A
  "-...",  //B
  "-.-.",  //C
  "-..",  //D
  ".",  //E
  "..-.",  //F
  "--.",  //G
  "....",  //H
  "..",  //I
  ".---",  //J
  "-.-",  //K
  ".-..",  //L
  "--",  //M
  "-.",  //N
  "---",  //O
  ".--.",  //P
  "--.-",  //Q
  ".-.",  //R
  "...",  //S
  "-",  //T
  "..-",  //U
  "...-",  //V
  ".--",  //W
  "-..-",  //X
  "-.--",  //Y
  "--.."  //Z
};
char* numbers[] = {
  "-----",  //0
  ".----",  //1
  "..---",  //2
  "...--",  //3
  "....-",  //4
  ".....",  //5
  "-....",  //6
  "--...",  //7
  "---..",  //8
  "----."   //9
};

#endif

2
用函数3把输入的字母和字母与头文件中的对应,比如输入B赋给ch,头文件中对应的应该是letters数组的第二个值,也就是letters[1],然后利用ascii码,用ch-'A’来得到1,同理也可以通过ch-‘A’,或ch-‘a’,或ch-'0’调用出头文件的每一个摩斯电码。

 void morse_signal(char ch)//定义函数3,把输入字母转为头文件中的内容
  {
    if(ch>='a'&&ch<='z'){
      flash_sequence(letters[ch-'a']);//letters,numbers是定义在头文件中的数组
      }
     else if(ch>='A'&&ch<='Z'){
      flash_sequence(letters[ch-'A']);
      }
      else if(ch>='0'&&ch<='9'){
      flash_sequence(numbers[ch-'0']);
      }
      else if(ch==' '){
        delay(800);
        }
    
    }

3

用函数二将某个值表示的一串点线码读取出来,传给函数一。读取的方式是:这个点线码原本是一串char数据,函数二将这串数据中每一个点/线的值分开,保存在一个数组中,如’. . - - -’,就保存为 [ ‘.’ , ‘.’ , ‘-’ , ‘-’ , ‘-’ ]

void flash_sequence(char*sequence)//定义函数2,把函数3发来的信息发给函数1
{
  int i=0;
  while(sequence[i]!=NULL)//逐个读取数组中的各个值并且执行函数1
  {
    flash_dot(sequence[i]);
    i++;
    }
    delay(600); 
  }

4

用函数一将点/线用激光表示出来

void flash_dot(char cha)
{
  digitalWrite(laser_pin,LOW);//定义信号发送的函数1
  if(cha=='.')
  {
    delay(200);//如果是点发光时间短一些
    }
  else
  {
    delay(600);//如果是线发光时间长一些
    }
  digitalWrite(laser_pin,HIGH);
  delay(200);//每个点线信号之间的停顿
  }

5

最后就是常规的setup和loop函数体

#include"retrieval.h"//这个头文件定义了各个字母的点线表示,存在数组中
int laser_pin=7;
void setup() {
pinMode(laser_pin,OUTPUT);
Serial.begin(9600);
}

void loop() {
  char ch = 0;
//下面是available和read函数的常用用法,这个判断式的意思是如果串口给单片机发消息了,就读出来并且保存到ch上
  if(Serial.available()>0)
  {
    ch = Serial.read();
    }

   morse_signal(ch);//把ch传进函数3
}

现在已经下午三点半了,去上一下习题课,回来继续更。

🆗,上完了两节极度无聊的习题课,回到宿舍来更新了。

实验六 轻触开关按键

在这里插入图片描述

三个引脚分别接VCC,SIG, GND。原理是开关会连接VCC与GND中间的一条电路,这条电路与SIG相连,这条电路接通时给SIG输出高电平(boolean类值的“1”),反之输出低电平。本实验通过开发板上面自带的LED灯验证。正常通电情况下LED灯亮,当13口输出高电平时LED灯会熄灭。故可以通过按下按钮熄灭此灯。

const int key_pin=7;
const int led_pin=13;
void setup() {
  pinMode(key_pin,INPUT);
  pinMode(led_pin,OUTPUT);
}

void loop() {
  boolean value= digitalRead(key_pin);
  if(value==1){
    digitalWrite(led_pin,HIGH);
    }
  else{
    digitalWrite(led_pin,LOW);
  }

}

上面的代码与上述思路一致,由于简单就不作解说。
连完线之后,也确实达到了预期的效果。
在这里插入图片描述

实验七 倾斜开关实验

这个实验的大体思路与实验六一致,只不过实验六和实验七用的开关不一样而已。代码用的是实验六中的代码。
在这里插入图片描述

上面是电路图(请横置设备观看),tlit是倾斜的意思。根据电路图,LED1-D0是常亮的;当开关触发的时候LED1-D2会亮,此时SIG输出高电平。本实验同样用高低电平来控制13口的LED。
在这里插入图片描述
如图,倾斜时有一个灯不会亮,此时arduino上的13口灯亮着(忘记拍了)。放平时输出高电平,灯13熄灭。
晚上又要去上课了,先走一步。。。
现在回到宿舍了,准备接下来学一个小时,目标是完成五个小实验。

实验八 震动开关传感器

在这里插入图片描述
与前两个开关很相似,开关触发的条件是震动。直接跳过。代码用的是实验六中的代码。

第十课 干簧管传感器实验

在这里插入图片描述
与前三个很相似,开关触发的条件是干簧管附近有磁铁,里面的簧片就会变化,然后联通电路。代码还是实验六中的。

实验十一 U型光电传感器
其实这个传感器也与之前几个很相似,触发的条件是U型传感器中间有东西会触发,因为挡住了发射器发出的光。代码用的是实验六中的代码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
今天就到这里啦

Arduino创意制作 自动垃圾桶设计说明: 整制作安装视频:https://v.youku.com/v_show/id_XMzIzMzY0OTI3Mg==.html 第1步:组件 为了创造这个,我们需要一个在铰链上有盖开口桶。这是从家庭用品买来,叫做洗衣粉桶。作为Arduino董事会,我拿了Nano模型。伺服驱动器对于金属减速器是理想。下一个是 超声波距离传感器和一个3指电池电池舱。 Arduino NANO 量程传感器 伺服 电池盒 方块 MOSFET强烈建议使用电解电容器10V 470-1000 uF 电阻100欧姆 电阻10千欧姆 第2步:硬件 首先我们摆脱封面上多余塑料。这是一个闩锁和手柄。距离传感器美地装入盒子中,只有连接引脚伸出。我们将删除它们。首先,我们将削减引脚塑料。在伺服驱动器上,我们将电线延伸至垃圾箱前端。而且我们根据这个简单电路来连接所有东西。传感器将从Arduino一个引脚供电,以免焊接一堆导线到电源引脚,因为伺服器已经连接在那里。 现在我们把所有东西放在案例中。首先,我们将为传感器打孔。我用刀标记了这些中心。首先,我用普通钻孔钻出中心精度,然后用台阶钻把它扩大。用热胶填满所有东西。电池盒上粘有双面胶带,伺服驱动器导线会通过侧孔外出。 第3步:伺服和盒装 现在用砂纸伺服侧和箱盖在这个地方清理。我们用普通即时胶粘在一起。我们还可以用电缆扎带加强它。还需要在电线下面制作凹槽,以免卡住。当然,伺服驱动器必须进入水桶,不要紧贴任何东西。电线沿着水桶边缘用热胶固定。 盒子本身用螺丝和螺母固定在桶上。这是必要,以便传感器梁不会抓住篮子盖。为此,您可以在上方螺丝下放置几个螺母。 第4步:机制 首先,我从冰淇淋棒做起。但它太厚了,不让盖子自由关闭。然后,我用一个金属罐子做罐头做同样事情。伺服驱动器杆上部固定有一个回形针。这件作品用超强胶水和苏打水粘在金属条上。 那么,让我们登上它。非常心地将伺服转动到极限位置将摇臂固定在打开盖子位置上。那么,现在我们桶关闭和打开。这样做要心,因为中国这个产品可以打破,反之工作。原则上,硬件部分已经准备就绪,让我们继续编程。首先,我们将写一个简单算法,不节能。 第5步:在XOD中编程 我使用基于视觉编程语言XOD,它基于节点。节点是代表传感器,电机或继电器等某些物理设备块,或者是一些操作(如添加,比较或文本串联)。您可以在我关于垃圾桶视频中观XOD制作whisky项目所有过程。另外第一张照片是一个简单XOD程序没有一些“迟滞”,第三张照片是用它。 您可以在GitHub项目页面下载XOD垃圾桶项目。 正如你已经注意到,要创建这个设备,我们不需要任何编程语言知识。我们只需要正确地思考工作逻辑,知道程序中存在哪些节点。这是阅读文档几个晚上任务。在xod中,我们清楚地到了数据传输方式,数据传输方式以及传输方式。创建代码长片是Arduino下一步。您可以从这里开始使用函数式编程。 所以,它作品!我们来谈谈节能。 第6步:节能 硬件修改 所以,我们有3个能源消费者,Arduino本身,传感器和伺服驱动器。为了让Arduino减少使用电池,您需要关闭在电源开启时不断发光“pwr”LED。只要切断通往它轨道。 接下来在电路板背面有一个电压调节器,我们也不需要它,咬掉它左脚。现在睡眠模式下Arduino需要几十个微安。传感器可以直接由Arduino打开和关闭。 但待机模式下伺服器消耗大量能量。因此,我们将在电子天气预报器视频中使用mosfet晶体管。你可以从这个列表中选取任何一个mosfet。还需要一个100欧姆和10千欧姆电阻。我将在视频下描述中留下项目组件整列表。 新电路起来像这样,伺服电源通过mosfet。在运动开始时,伺服需要大电流,因此您需要将电容器置于电源输入端。 第7步:编程 Arduino IDE 这项工作逻辑如下。不幸是,xod还没有添加电源模式,所以我在Arduino IDE中经典地编写了固件,在那里我用“LowPower”库管理系统。唤醒,给传感器供电,获得距离,关闭传感器。如果需要打开和关闭盖子,请将电源连接到伺服器,打开重新关闭电源。 您可以从GitHub项目页面下载Arduino IDE草图 (代码见上传附件。) 第8步:结论 现在,处于待机模式电路消耗大约0.1毫安,可以从指纹电池长时间安全工作。但是怎么回事?为了稳定运行,你需要一个高于3.6伏电压,也就是每个电池高于1.2伏。 从图表来碱性电池,可以出电池正好放电一半,即大约1.1安培时。那在待机状态下工作约460天,不错?但电池将只消耗一半电量,然后可以插入电视机遥控器中。但

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

天下0325

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值