极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: eagler8

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

[复制链接]
 楼主| 发表于 2019-7-5 16:13:46 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 16:59:32 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(48)
  3. 实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)
  4. 实验代码之二
  5. */

  6. #include <Wire.h>

  7. #define DEVICE (0x53)  
  8. #define TO_READ (6)   

  9. byte buff[TO_READ] ;      
  10. char str[512];            
  11. int regAddress = 0x32;     
  12. int x, y, z;                        
  13. double roll = 0.00, pitch = 0.00;      

  14. void setup() {
  15.   Wire.begin();         
  16.   Serial.begin(9600);  
  17.   
  18.   writeTo(DEVICE, 0x2D, 0);      
  19.   writeTo(DEVICE, 0x2D, 16);
  20.   writeTo(DEVICE, 0x2D, 8);
  21. }

  22. void loop() {

  23.   readFrom(DEVICE, regAddress, TO_READ, buff);
  24.                                              
  25.   x = (((int)buff[1]) << 8) | buff[0];   
  26.   y = (((int)buff[3])<< 8) | buff[2];
  27.   z = (((int)buff[5]) << 8) | buff[4];

  28.   //we send the x y z values as a string to the serial port
  29.   Serial.print("The acceleration info of x, y, z are:");
  30.   sprintf(str, "%d %d %d", x, y, z);  
  31.   Serial.print(str);
  32.   Serial.write(10);
  33.   
  34.   RP_calculate();
  35.   Serial.print("Roll:"); Serial.println( roll );
  36.   Serial.print("Pitch:"); Serial.println( pitch );
  37.   Serial.println("");
  38.   
  39.   delay(300);
  40. }

  41. void writeTo(int device, byte address, byte val) {
  42.   Wire.beginTransmission(device);
  43.   Wire.write(address);        
  44.   Wire.write(val);      
  45.   Wire.endTransmission();
  46. }

  47. void readFrom(int device, byte address, int num, byte buff[]) {
  48.   Wire.beginTransmission(device);
  49.   Wire.write(address);        
  50.   Wire.endTransmission();

  51.     Wire.beginTransmission(device);
  52.   Wire.requestFrom(device, num);   

  53.   int i = 0;
  54.   while(Wire.available())   
  55.   {
  56.     buff[i] = Wire.read();
  57.     i++;
  58.   }
  59.   Wire.endTransmission();
  60. }

  61. void RP_calculate(){
  62.   double x_Buff = float(x);
  63.   double y_Buff = float(y);
  64.   double z_Buff = float(z);
  65.   roll = atan2(y_Buff , z_Buff) * 57.3;
  66.   pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3;
  67. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 17:01:47 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 17:05:02 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 17:07:21 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 17:09:27 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 18:08:49 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 18:10:52 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 18:39:22 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(48)
  3. 实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)
  4. 实验代码之三
  5. */

  6. #include <Wire.h>
  7. #define Register_ID 0
  8. #define Register_2D 0x2D
  9. #define Register_X0 0x32
  10. #define Register_X1 0x33
  11. #define Register_Y0 0x34
  12. #define Register_Y1 0x35
  13. #define Register_Z0 0x36
  14. #define Register_Z1 0x37

  15. int ADXAddress = 0xA7 >> 1;
  16. int reading = 0;
  17. int val=0;
  18. int X0,X1,X_out;
  19. int Y0,Y1,Y_out;
  20. int Z1,Z0,Z_out;
  21. double Xg,Yg,Zg;

  22. void setup()
  23. {
  24.    Wire.begin();         
  25.    Serial.begin(9600);  
  26.    delay(100);
  27.    
  28.    Wire.beginTransmission(ADXAddress);
  29.    Wire.write(Register_2D);
  30.    Wire.write(8);               
  31.    Wire.endTransmission();     
  32. }

  33. void loop()
  34. {
  35.    
  36.    Wire.beginTransmission(ADXAddress);
  37.    Wire.write(Register_X0);
  38.    Wire.write(Register_X1);
  39.    Wire.endTransmission();
  40.    Wire.requestFrom(ADXAddress,2);
  41.    if(Wire.available()<=2)   
  42.    {
  43.      X0 = Wire.read();
  44.      X1 = Wire.read();
  45.      X1=X1<<8;
  46.      X_out=X0+X1;   
  47.    }

  48.   
  49.    Wire.beginTransmission(ADXAddress);
  50.    Wire.write(Register_Y0);
  51.    Wire.write(Register_Y1);
  52.    Wire.endTransmission();
  53.    Wire.requestFrom(ADXAddress,2);
  54.    if(Wire.available()<=2)   
  55.    {
  56.      Y0 = Wire.read();
  57.      Y1 = Wire.read();
  58.      Y1=Y1<<8;
  59.      Y_out=Y0+Y1;
  60.    }
  61.   
  62.    Wire.beginTransmission(ADXAddress);
  63.    Wire.write(Register_Z0);
  64.    Wire.write(Register_Z1);
  65.    Wire.endTransmission();
  66.    Wire.requestFrom(ADXAddress,2);
  67.    if(Wire.available()<=2)   
  68.    {
  69.      Z0 = Wire.read();
  70.      Z1 = Wire.read();
  71.      Z1=Z1<<8;
  72.      Z_out=Z0+Z1;
  73.    }
  74.   
  75.     Xg=X_out;  
  76.     Yg=Y_out;  
  77.     Zg=Z_out;  
  78.    Serial.print("X= ");
  79.    Serial.print(Xg);
  80.    Serial.print("       ");
  81.    Serial.print("Y= ");
  82.    Serial.print(Yg);
  83.    Serial.print("       ");
  84.    Serial.print("Z= ");
  85.    Serial.print(Zg);
  86.    Serial.println("  ");
  87.    delay(200);
  88. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 18:42:38 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-5 18:44:49 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-7 15:52:25 | 显示全部楼层
实验四十九:有源蜂鸣器报警器发声模块 (低电平触发)

压电陶瓷片
压电陶瓷片,俗称蜂鸣片。压电陶瓷片是一种电子发音元件,在两片铜制圆形电极中间放入压电陶瓷介质材料,当在两片电极上面接通交流音频信号时,压电片会根据信号的大小频率发生震动而产生相应的声音来。压电陶瓷片由于结构简单造价低廉,被广泛的应用于电子电器方面如:玩具,发音电子表,电子仪器,电子钟表,定时器等方面。超声波电机就是利用相关的性质制成的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-7 16:34:29 | 显示全部楼层
工作原理
当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。基于以上作用,便可以将压电陶瓷用作超声波传感器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-7 16:35:45 | 显示全部楼层
压电蜂鸣器
是一种电声转换器件。将压电材料粘贴在金属片上,当压电材料和金属片两端施加上一个电压后,因为逆压电效应,蜂鸣片就会产生机械变形而发出声响。压电材料有多种,用在蜂鸣片上的压电材料通常是高压极化后的压电陶瓷片。压电式蜂鸣器通常呈圆形,由压电陶瓷片、引线和共鸣腔组成。而中间的压电陶瓷片又由金属镀层、陶瓷片、胶水、金属片构成。从电学角度来看,压电陶瓷可以简化为一个电感和一个电容的串联模型。压电式蜂鸣器具有体积小、灵敏度高、耗电省、可靠性好,造价低廉的特点和良好的频率特性。因此它广泛应用于各种电器产品的报警、发声用途。最常见的莫过于音乐贺卡、电子手表、袖珍计算器、电子门铃和电子玩具等小型电子用品上作发声器件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-7 16:44:05 | 显示全部楼层
主要优点
  1、因无可动触点部分,因此寿命长、可靠性高,连续使用可达10000小时以上,是半永久性的器件
  2、不产生飞弧或者射频噪声,对其他线路无干扰
  3、不会因松动而引起大的振动
  4、用电子线路控制,所以能发出多种悦耳的声音及模拟声、断续声。音色纯正,不易被噪声所覆盖
  5、用电压激励,所以消耗电流小,一般在20mA以下,不会超过100mA
  6、小型大音量。音量可达到70分贝/20cm,而元件厚度仅为1mm以下
  7、工作温度范围宽
  8、便于安装,而且无电磁线圈和动圈,不必担心绝缘恶化,并无漏电的可能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 00:58 , Processed in 0.042634 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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