【雕爷学编程】Arduino 手册之复合运算符/=复合除

在这里插入图片描述
在这里插入图片描述
什么是Arduino?
Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。

如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。

Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣

在这里插入图片描述

维基百科的定义
Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。

Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。

Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。

在这里插入图片描述

八、Arduino复合运算符
复合运算符是一种可以简化代码的方法,它们将一个运算符和一个赋值运算符结合在一起,例如+=,-=,*=等。复合运算符的作用是先对左边的变量和右边的表达式进行运算,然后将结果赋值给左边的变量。复合运算符可以节省代码的空间,也可以提高代码的可读性。

Arduino支持以下几种复合运算符:
1、复合加+=:将左边的变量和右边的表达式相加,然后将结果赋值给左边的变量。例如,i+=5;等效于i = i + 5;1。
2、复合减-=:将左边的变量和右边的表达式相减,然后将结果赋值给左边的变量。例如,i-=5;等效于i = i - 5;1。
3、复合乘*=:将左边的变量和右边的表达式相乘,然后将结果赋值给左边的变量。例如,i*=5;等效于i = i * 5;1。
4、复合除/=:将左边的变量和右边的表达式相除,然后将结果赋值给左边的变量。例如,i/=5;等效于i = i / 5;1。
5、复合模数%=:将左边的变量和右边的表达式求模(即求余数),然后将结果赋值给左边的变量。例如,i%=5;等效于i = i % 5;2。
6、复合按位与&=:将左边的变量和右边的表达式进行按位与运算(即两个位都为1时结果为1,否则为0),然后将结果赋值给左边的变量。例如,如果i=6;(二进制为0110),那么执行i&=5;(二进制为0101)后,i=4;(二进制为0100)1。
7、复合按位或|=:将左边的变量和右边的表达式进行按位或运算(即两个位有一个为1时结果为1,否则为0),然后将结果赋值给左边的变量。例如,如果i=6;(二进制为0110),那么执行i|=5;(二进制为0101)后,i=7;(二进制为0111)1。
8、复合按位异或=:将左边的变量和右边的表达式进行按位异或运算(即两个位不同时结果为1,否则为0),然后将结果赋值给左边的变量。例如,如果i=6;(二进制为0110),那么执行i=5;(二进制为0101)后,i=3;(二进制为0011)2。
9、复合左移<<=:将左边的变量向左移动右边表达式指定的位数(相当于乘以2的指数),然后将结果赋值给左边的变量。例如,如果i=6;(二进制为0110),那么执行 i<<=2; 后, i=24; (二进制为11000)2。
10、复合右移>>=:将左边的变量向右移动右边表达式指定的位数(相当于除以2的指数),然后将结果赋值给左边的变量。例如,如果 i=6; (二进制为0110),那么执行 i>>=2; 后, i=1; (二进制为0001)2。

复合运算符的优先级和赋值运算符一样,都是最低的,所以在使用复合运算符时,要注意加上括号,以避免运算顺序的错误。例如,i+=ab;等效于i = i + (ab);,而不是(i + a) * b;。

复合运算符是Arduino编程中常用的一种工具,它们可以让代码更简洁,也可以提高代码的效率。

4、/=复合除:
Arduino复合运算符/=复合除是一种将两个操作合并在一条语句中的简便方法。它的含义是将左边的变量除以右边的表达式,然后将结果赋值给左边的变量。例如,a /= b等价于a = a / b,但是更简洁和高效。

Arduino复合运算符/=复合除的应用场景有很多,例如:
1)计算平均值,如sum /= n可以计算n个数的平均值。
2)计算百分比,如x /= y * 100可以计算x占y的百分比。
3)计算单位换算,如m /= 1000可以将米转换为千米。

Arduino复合运算符/=复合除的注意事项有以下几点:
1)左边的变量必须是可修改的,不能是常量或表达式。
2)右边的表达式必须与左边的变量类型兼容,或者可以隐式转换。
3)右边的表达式不能为零,否则会导致除零错误或无穷大的结果。
4)如果左边的变量是一个数组元素,要注意数组下标是否越界。

以下是Arduino复合运算符/=复合除三个实际运用程序案例:

案例一:计算n个数的平均值

int n = 5; //指定n的值
int sum = 0; //初始化总和为0
for (int i = 0; i < n; i++) { //循环n次
  sum += analogRead(A0); //每次将A0口的模拟输入值累加到总和中
  delay(100); //延时100毫秒
}
sum /= n; //将总和除以n得到平均值
Serial.println(sum); //打印平均值

案例二:计算电阻值

float v = 5.0; //指定电源电压为5伏特
float r1 = 1000.0; //指定上拉电阻为1000欧姆
float vout = analogRead(A0) * v / 1024.0; //计算A0口的输出电压
float r2 = r1 * vout / (v - vout); //计算下拉电阻(欧姆定律)
Serial.println(r2); //打印下拉电阻

案例三:计算温度值

float v = analogRead(A1) * 5.0 / 1024.0; //计算A1口的电压值
float r = (5.0 - v) * 10000.0 / v; //计算热敏电阻的阻值
float t = log(r); //计算自然对数
t /= 3950.0; //除以B常数
t += 1.0 / (25 + 273.15); //加上环境温度倒数
t = 1.0 / t; //取倒数
t -= 273.15; //减去绝对零度
Serial.println(t); //打印温度值(摄氏度)

当在Arduino编程中使用复合赋值运算符/=时,它用于将左侧操作数除以右侧操作数的值,并将结果赋值给左侧操作数。下面是三个实际运用程序案例,展示了/=运算符的使用:

1)缩小变量的倍数(Reducing a variable by a divisor):

void setup() {
  int value = 100;

  value /= 5;
  value /= 2;
  value /= 10;

  Serial.begin(9600);
  Serial.println("Value: " + String(value));
}

void loop() {
  // 其他代码
}

在上述示例中,我们有一个整数变量value,初始值为100。通过使用/=运算符,我们可以将变量除以不同的除数。在示例中,我们分别将value除以5、2和10,最后得到的结果为1。

2)缩放传感器读数(Scaling sensor readings):

void setup() {
  int sensorValue = analogRead(A0);
  int scaleFactor = 2;

  sensorValue /= scaleFactor;

  Serial.begin(9600);
  Serial.println("Scaled reading: " + String(sensorValue));
}

void loop() {
  // 其他代码
}

在这个示例中,我们使用/=运算符将传感器读数除以一个缩放因子。我们首先从模拟输入引脚A0读取传感器的值,并将其存储在sensorValue变量中。然后,我们将sensorValue除以比例因子scaleFactor,以缩放传感器的读数。最后,我们打印输出缩放后的读数。

3)计算平均值(Calculating average):

void setup() {
  int total = 100;
  int count = 5;

  int average = total / count;

  Serial.begin(9600);
  Serial.println("Average: " + String(average));
}

void loop() {
  // 其他代码
}

在这个示例中,我们使用/=运算符计算一组数字的平均值。我们有一个总和变量total和一个计数变量count,它们表示需要计算平均值的数字总和和个数。通过将total除以count,我们可以得到平均值,并将结果存储在average变量中。最后,我们打印输出计算得到的平均值。

这些示例展示了复合赋值运算符/=的实际应用。它可以用于缩小变量的倍数、缩放传感器读数和计算平均值等操作。通过/=运算符,我们可以方便地对变量进行除法操作,并将结果保存在原变量中。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值