找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: eagler8
打印 上一主题 下一主题
收起左侧

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

  [复制链接]
401#
ID:513258 发表于 2019-6-18 14:59 | 只看该作者
5050RGB灯珠
规格尺寸:5.0*5.0*1.5mm
亮度:R: 550-650MCD G: 1200-1800MCD B: 400-450MCD
波段:R:620-625NM G:520-525NM B: 465-470NM
工作电压:R:2.0-2.2V G:3.0-3.2V B:3.0-3.2V
功 率:0.2W
发光颜色:RGB/可控制幻彩 全彩
工作电流:60MA(单个芯片20MA)
使用范围:汽车灯 灯条 数码管 遥控灯 闪幻灯 彩灯等





回复

使用道具 举报

402#
ID:513258 发表于 2019-6-18 15:10 | 只看该作者
5050RGB特点
1、采用进口芯片;
2、光色一致性好;
3、LED贴片寿命:大于5万小时;
4、高亮度,低衰减,耗能小,抗静电能力强;
5、采用进口正规合格芯片,美国英特美荧光粉,质量保证;
6、采用日本进口优质硅胶胶水封装,光衰低,寿命长,符合环保无铅制程产品要求。





回复

使用道具 举报

403#
ID:513258 发表于 2019-6-18 15:27 | 只看该作者
RGB全彩LED模块由一个贴片全彩LED制成,通过R、G、B三个引脚的PWM电压输入可以调节三种基色(红/蓝/绿)的强度从而实现全彩的混色效果。用Arduino对模块的控制可实现酷炫的灯光效果。




回复

使用道具 举报

404#
ID:513258 发表于 2019-6-18 15:35 | 只看该作者
模块参数:
1.PCB尺寸:15mm*10.6mm
2.PCB颜色:绿色
3.使用5050全彩高亮LED
4.带限流电阻防止烧坏LED
5.可接各种单片机
6.高电平点亮LED
7.工作电压:3.3V/5V
8.重量:4g
9.LED驱动模式:共阴驱动
10.可直接插在主板上使用,无需杜邦线连接
11.通过PWM调节三基色可混合得到不同的颜色





回复

使用道具 举报

405#
ID:513258 发表于 2019-6-18 15:57 | 只看该作者
电原理图












回复

使用道具 举报

406#
ID:513258 发表于 2019-6-18 16:44 | 只看该作者
  1. /*
  2. 【Arduino】37种传感器模块系列实验(28)
  3. 实验二十八:5050 RGB全彩LED模块 KY-009 (三色灯)
  4. */

  5. int led1 = 13;
  6. int led2 = 12;
  7. int led3 = 11;

  8. void setup() {               
  9.   pinMode(led1, OUTPUT);
  10.   pinMode(led2, OUTPUT);     
  11.   pinMode(led3, OUTPUT);
  12. }

  13. void loop() {
  14.   digitalWrite(led1, HIGH);   
  15.   digitalWrite(led2, LOW);  
  16.   digitalWrite(led3, LOW);
  17.   delay(1000);               
  18.   digitalWrite(led1, LOW);
  19.   digitalWrite(led2, HIGH);  
  20.   digitalWrite(led3, LOW);
  21.   delay(1000);
  22.   digitalWrite(led1, LOW);
  23.   digitalWrite(led2, LOW);  
  24.   digitalWrite(led3, HIGH);  
  25.   delay(1000);
  26. }
复制代码


回复

使用道具 举报

407#
ID:513258 发表于 2019-6-18 16:51 | 只看该作者

回复

使用道具 举报

408#
ID:513258 发表于 2019-6-18 17:03 | 只看该作者

回复

使用道具 举报

409#
ID:513258 发表于 2019-6-18 17:04 | 只看该作者

回复

使用道具 举报

410#
ID:513258 发表于 2019-6-18 17:17 | 只看该作者
  1. /*
  2. 【Arduino】37种传感器模块系列实验(28)
  3. 实验二十八:5050 RGB全彩LED模块 KY-009
  4. */

  5. #define LEDR 11
  6. #define LEDG 12
  7. #define LEDB 13
  8. int i = 0;

  9. void setup()
  10. {
  11.   pinMode(LEDG,OUTPUT);
  12.   pinMode(LEDB,OUTPUT);
  13.   pinMode(LEDR,OUTPUT);
  14. }

  15. void loop()
  16. {
  17.   analogWrite(LEDR,255);
  18.   delay(1000);   
  19.   analogWrite(LEDG,120);
  20.   delay(1000);   
  21.   analogWrite(LEDR,255);
  22.   analogWrite(LEDG,220);
  23.   delay(1000);   
  24.   analogWrite(LEDR,0);
  25.   analogWrite(LEDG,255);
  26.   delay(1000);   
  27.   analogWrite(LEDB,255);
  28.   delay(1000);   
  29.   analogWrite(LEDG,0);
  30.   analogWrite(LEDB,255);
  31.   delay(1000);   
  32.   analogWrite(LEDR,255);
  33.   analogWrite(LEDG,0);
  34.   delay(1000);  
  35.   analogWrite(LEDG,255);
  36.   delay(1000);   
  37.   
  38.   analogWrite(LEDG,0);
  39.   analogWrite(LEDB,0);
  40.   analogWrite(LEDR,255);
  41.   delay(1000);   
  42.   for(i=0;i<255;i++)
  43.   {
  44.     analogWrite(LEDG,i);
  45.     delay(10);
  46.   }
  47.   for(i=255;i>0;i--)
  48.   {
  49.     analogWrite(LEDR,i);
  50.     delay(10);
  51.   }
  52.    for(i=0;i<255;i++)
  53.   {
  54.     analogWrite(LEDB,i);
  55.     delay(10);
  56.   }
  57.   for(i=255;i>0;i--)
  58.   {
  59.     analogWrite(LEDG,i);
  60.     delay(10);
  61.   }
  62.    for(i=0;i<255;i++)
  63.   {
  64.     analogWrite(LEDR,i);
  65.     delay(10);
  66.   }
  67.    for(i=0;i<255;i++)
  68.   {
  69.     analogWrite(LEDG,i);
  70.     delay(10);
  71.   }
  72.   analogWrite(LEDG,0);
  73.   analogWrite(LEDB,0);
  74.   analogWrite(LEDR,0);
  75. }
复制代码


回复

使用道具 举报

411#
ID:513258 发表于 2019-6-18 17:46 | 只看该作者

回复

使用道具 举报

412#
ID:513258 发表于 2019-6-18 18:27 | 只看该作者
实验二十九:DS1302实时时钟模块(带电池CR2032 掉电走时)


DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)RST 复位(2)I/O 数据线(3)SCLK串行时钟。时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信。DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。





回复

使用道具 举报

413#
ID:513258 发表于 2019-6-18 19:32 | 只看该作者
DS1302的内部结构


回复

使用道具 举报

414#
ID:513258 发表于 2019-6-18 19:41 | 只看该作者
DS1302管脚描述
X1 X2 32.768KHz 晶振管脚
GND 地
RST 复位脚
I/O 数据输入/输出引脚
SCLK 串行时钟
Vcc1,Vcc2 电源供电管脚





回复

使用道具 举报

415#
ID:513258 发表于 2019-6-19 14:43 | 只看该作者

回复

使用道具 举报

416#
ID:513258 发表于 2019-6-19 14:48 | 只看该作者
DS1302主要性能指标:
★ 实时时钟具有能计算2100 年之前的秒、分、时、日、星期、月、年的能力,还有闰年调整的能力
★ 31 8 位暂存数据存储RAM
★ 串行 I/O 口方式使得管脚数量最少
★ 宽范围工作电压2.0 5.5V
★ 工作电流 2.0V 时,小于300nA
★ 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式
★ 8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配
★ 简单 3 线接口
★ 与 TTL 兼容Vcc=5V
★ 可选工业级温度范围-40 +85
★ 双电源管用于主电源和备份电源供应




回复

使用道具 举报

417#
ID:513258 发表于 2019-6-19 14:56 | 只看该作者
很多DS1302 存在时钟精度不高,是因为选用的晶振易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。




回复

使用道具 举报

418#
ID:513258 发表于 2019-6-19 15:00 | 只看该作者
应用电路








回复

使用道具 举报

419#
ID:513258 发表于 2019-6-19 15:40 | 只看该作者




回复

使用道具 举报

420#
ID:513258 发表于 2019-6-19 15:48 | 只看该作者
DS1302实时时钟模块




回复

使用道具 举报

421#
ID:513258 发表于 2019-6-19 15:56 | 只看该作者
模块参数
1.PCB为单面板,尺寸:44mm*23mm*1.6mm
2.带4个定位孔,直径3.1mm
3.备用电池为正品天球CR2032,电压3V,电流260mAh,非可充电电池。理论数据保持时间大于10年!
4.晶振32.768KHz,日本原装进口晶振,匹配电容为6pF,尺寸2*6mm
5.DS1302为8脚直插国产大芯片,芯片下面有IC座,方便更换及插拔芯片
6.模块工作电压兼容3.3V/5V,可与5V及3.3V单片机连接
7.工作温度:0°---70°





回复

使用道具 举报

422#
ID:513258 发表于 2019-6-19 16:05 | 只看该作者
模块电原理图




回复

使用道具 举报

423#
ID:513258 发表于 2019-6-19 16:14 | 只看该作者
接线方法(以提供的程序为准,可以接任意IO口,在程序中修改端口定义即可):
VCC→+5V/3.3V
GND→GND
CLK→P02
DAT→P01
RST→P00





回复

使用道具 举报

424#
ID:513258 发表于 2019-6-19 17:38 | 只看该作者
  1. /*
  2. 【Arduino】37种传感器模块系列实验(29)
  3. 实验二十九:DS1302实时时钟模块(带电池CR2032 掉电走时)之一
  4. */

  5. #define RST 5   
  6. #define SCLK 7
  7. #define IO 6
  8. #define uchar unsigned char   

  9. void setup() {   
  10.   pinMode(RST,OUTPUT);
  11.   pinMode(SCLK,OUTPUT);
  12.   pinMode(IO,OUTPUT);
  13.   Serial.begin(9600);
  14.   attachInterrupt(0, settm, FALLING );  
  15. }

  16. void writeData(unsigned char addr,unsigned char dat){
  17.   pinMode(IO,OUTPUT);
  18.   digitalWrite(RST,LOW);   
  19.   digitalWrite(SCLK,LOW) ;
  20.   delayMicroseconds(1);
  21.   digitalWrite(RST,HIGH);

  22.   int i;
  23.   for(i =0;i<8;i++){
  24.     digitalWrite(SCLK,LOW);
  25.     digitalWrite(IO, addr&1);
  26.     addr =addr>>1;
  27.     digitalWrite(SCLK,HIGH);
  28.     delayMicroseconds(1);
  29.   }

  30.   for(i =0;i<8;i++){
  31.       digitalWrite(SCLK,LOW);
  32.       digitalWrite(IO, dat&1);
  33.       dat =dat>>1;
  34.       digitalWrite(SCLK,HIGH);
  35.       delayMicroseconds(1);
  36.   }
  37.   digitalWrite(RST,LOW);
  38. }

  39. uchar readData(uchar addr){              
  40.   addr = addr | 1;

  41.   pinMode(IO,OUTPUT);
  42.   digitalWrite(RST,LOW);
  43.   digitalWrite(SCLK,LOW) ;
  44.   delayMicroseconds(1);
  45.   digitalWrite(RST,HIGH);

  46.   int i;
  47.   for(i =0;i<8;i++){               
  48.     digitalWrite(SCLK,LOW);
  49.     digitalWrite(IO, addr&1);
  50.     addr =addr>>1;
  51.     digitalWrite(SCLK,HIGH);
  52.     delayMicroseconds(1);
  53.   }
  54.   pinMode(IO,INPUT);               

  55.   int dat = 0;
  56.   for(i =0;i<8;i++){
  57.       digitalWrite(SCLK,LOW);
  58.       delayMicroseconds(10);
  59.       uchar b = digitalRead(IO);
  60.       dat = dat >>1;

  61.       dat = dat | (b<<7);
  62.       digitalWrite(SCLK,HIGH);
  63.       delayMicroseconds(1);
  64.   }
  65.   digitalWrite(RST,LOW);  
  66.   return dat ;
  67. }

  68. #define SECOND  0x80   
  69. #define MIN 0x82
  70. #define HOUR 0x84
  71. #define DAY 0x86
  72. #define MONTH 0x88
  73. #define YEAR 0x8C
  74. #define WEEK 0x8A

  75. void writeTimeUnit(uchar TYPE,uchar data){

  76.   uchar high = data / 10;
  77.   uchar low = data % 10;
  78.   uchar d = ((data /10) << 4) | (data % 10);
  79.   writeData(TYPE,data);
  80. }

  81. uchar readTimeUnit(uchar TYPE){  
  82.   uchar r = readData(TYPE);
  83.   r = 10*(r >> 4)+ (r & 0xf);   
  84.   return r;
  85. }

  86. void writeAllTm(uchar tm[]){
  87.   uchar s = SECOND;
  88.   for(uchar i=0;i<5;i++){
  89.     writeTimeUnit(s,tm[5-i]);
  90.     s+=2;
  91.   }
  92.   writeTimeUnit(YEAR,tm[0]);
  93. }

  94. void readAllTm(uchar tm[]){  
  95.   uchar s = SECOND;
  96.   for(uchar i=0;i<5;i++){
  97.     tm[5-i] = readTimeUnit(s);  
  98.     s+=2;
  99.   }  
  100.   tm[0] = readTimeUnit(YEAR);
  101.   tm[6] = readTimeUnit(WEEK);
  102. }


  103. void printTm(uchar tm[]){
  104.   Serial.print(tm[0]);
  105.   Serial.print("-");
  106.   Serial.print(tm[1]);
  107.   Serial.print("-");
  108.   Serial.print(tm[2]);
  109.   Serial.print(" ");

  110.   Serial.print(tm[3]);
  111.   Serial.print(":");

  112.   Serial.print(tm[4]);
  113.   Serial.print(":");

  114.   Serial.print(tm[5]);
  115.   Serial.print(" week ");

  116.   Serial.print(tm[6]);
  117.   Serial.println();
  118. }
  119. uchar st = 0;
  120. void loop() {            
  121.     uchar tm[7] = {0};   
  122.     readAllTm(tm);
  123.     printTm(tm);
  124.     delay(1000);
  125. }

  126. void settm()
  127. {
  128.     uchar tm[] = {11,12,13,4,5,6 ,0};
  129.     Serial.println("set tm ...");
  130.       writeAllTm(tm);
  131. }
复制代码


回复

使用道具 举报

425#
ID:513258 发表于 2019-6-19 17:48 | 只看该作者
总算通过了一个程序,就是不知道如何调整为当前时间?




回复

使用道具 举报

426#
ID:513258 发表于 2019-6-19 21:02 | 只看该作者
  1. /*
  2. 【Arduino】37种传感器模块系列实验(29)
  3. 实验二十九:DS1302实时时钟模块(带电池CR2032 掉电走时)之二
  4. */

  5. #include <DS1302.h>

  6. DS1302 rtc(5, 6, 7);

  7. void setup()
  8. {
  9.   rtc.halt(false);
  10.   rtc.writeProtect(false);
  11.   Serial.begin(9600);
  12.   rtc.setDOW(FRIDAY);        
  13.   rtc.setTime(20, 49, 0);     
  14.   rtc.setDate(19, 6, 2019);  
  15. }

  16. void loop()
  17. {
  18.   Serial.print(rtc.getDOWStr());
  19.   Serial.print(" ");
  20.   Serial.print(rtc.getDateStr());
  21.   Serial.print(" -- ");
  22.   Serial.println(rtc.getTimeStr());
  23.   delay (1000);
  24. }
复制代码


回复

使用道具 举报

427#
ID:513258 发表于 2019-6-19 21:05 | 只看该作者

回复

使用道具 举报

428#
ID:513258 发表于 2019-6-20 06:41 | 只看该作者

回复

使用道具 举报

429#
ID:513258 发表于 2019-6-20 06:41 | 只看该作者

回复

使用道具 举报

430#
ID:513258 发表于 2019-6-20 08:45 | 只看该作者
试了不少串口调试工具,只有这二款能同步打印即使时间




回复

使用道具 举报

431#
ID:513258 发表于 2019-6-20 08:45 | 只看该作者

回复

使用道具 举报

432#
ID:513258 发表于 2019-6-20 13:14 | 只看该作者

回复

使用道具 举报

433#
ID:513258 发表于 2019-6-20 13:15 | 只看该作者

回复

使用道具 举报

434#
ID:513258 发表于 2019-6-20 13:35 | 只看该作者
实验三十:光敏二极管传感器模块(英语:photodiode )


光敏二极管
也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射PN结时,可以使PN结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。因此可以利用光照强弱来改变电路中的电流。常见的有2CU、2DU等系列。





回复

使用道具 举报

435#
ID:513258 发表于 2019-6-20 13:45 | 只看该作者







回复

使用道具 举报

436#
ID:513258 发表于 2019-6-20 13:51 | 只看该作者
工作原理
  光敏二极管是将光信号变成电信号的半导体器件。它的核心部分也是一个PN结,和普通二极管相比,在结构上不同的是,为了便于接受入射光照,PN结面积尽量做的大一些,电极面积尽量小些,而且PN结的结深很浅,一般小于1微米。
  光敏二极管是在反向电压作用之下工作的。没有光照时,反向电流很小(一般小于0.1微安),称为暗电流。当有光照时,携带能量的光子进入PN结后,把能量传给共价键上的束缚电子,使部分电子挣脱共价键,从而产生电子---空穴对,称为光生载流子。
  它们在反向电压作用下参加漂移运动,使反向电流明显变大,光的强度越大,反向电流也越大。这种特性称为“光电导”。光敏二极管在一般照度的光线照射下,所产生的电流叫光电流。如果在外电路上接上负载,负载上就获得了电信号,而且这个电信号随着光的变化而相应变化。





回复

使用道具 举报

437#
ID:513258 发表于 2019-6-20 14:08 | 只看该作者
光敏二极管与光敏电阻的区别
光敏电阻又称光敏电阻器或光导管常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。还有另一种入射光弱,电阻减小,入射光强,电阻增大。根据光敏电阻的光谱特性,可分为三种光敏电阻器:紫外光敏电阻器、红外光敏电阻器、可见光光敏电阻器。和光敏二极管不同,光敏电阻测量的时候,没有正反,2面的电阻是一样的。


光敏电阻和光敏二极管相比,光敏电阻内部的光电效应和电极无关(光电二极管才有关),即可以使用直流电源,灵敏度和半导体材料、以及入射光的波长有关,环氧树脂胶封装,可靠性好, 体积小, 灵敏度高,反应速度快,光谱特性好。但是光敏电阻受温度影响较大,响应速度不快,在ms到s之间,延迟时间受入射光的光照度影响(光电二极管无此缺点,光电二极管灵敏度比光敏电阻高)最后光敏电阻是耗材。









回复

使用道具 举报

438#
ID:513258 发表于 2019-6-20 14:13 | 只看该作者
应用领域
光敏二极管是电子电路中广泛采用的光敏器件。光敏二极管和普通二极管一样具有一个PN结,不同之处是在光敏二极管的外壳上有一个透明的窗口以接收光线照射,实现光电转换,在电路图中文字符号一般为VD。主要用于自动控制、如光耦合、光电读出装置、红外线遥控装置、红外防盗、路灯的自动控制、过程控制、编码器、译码器等。





回复

使用道具 举报

439#
ID:513258 发表于 2019-6-20 14:22 | 只看该作者
我手头上的3线制和4线制的光敏二极管感应器模块




回复

使用道具 举报

440#
ID:513258 发表于 2019-6-20 14:51 | 只看该作者
模块用途
光线亮度检测,光线亮度传感器,具有方向性,只感应传感器正前方的光源,用于寻光效果更佳光线亮度检测,光线亮度传感器,具有方向性,只感应传感器正前方的光源,用于寻光效果更佳。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表