【雕爷学编程】Arduino 手册之数学运算 min()

在这里插入图片描述
在这里插入图片描述
什么是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数学运算 min()
Arduino数学运算min()是一个用于返回两个或多个数值中最小的那个数值的函数。它的语法是:

min(x, y);

或者

min(x, y, z, ...);

其中,x, y, z, …是任意类型的数值,可以是整数、浮点数、字符等。例如,min(3, 5)返回3,min(3.14, 2.72)返回2.72,min(‘a’, ‘b’)返回’a’。

min()函数的使用范围主要是在需要对数值进行比较或者限制的情况下。例如,如果要让一个变量的值不超过一个上限,就可以用min()函数来实现。又例如,如果要找出一组数据中的最小值,就可以用min()函数来实现。

应用场景:
1)最小值选择:min()函数常用于需要从多个数值中选择最小值的场景。例如,在传感器数据处理中,可能需要选择最小的测量值作为有效数据,或者在控制循环中选择最小的误差值进行调整。
2)范围限制:min()函数可以用于限制数值的范围。通过将一个数值与上限进行比较,可以确保该数值不超过指定的上限值。这在控制输出范围、限制传感器读数或防止溢出等方面非常有用。
3)数值排序:在一些排序算法中,可能需要比较多个数值并选择最小的数值。使用min()函数可以方便地在排序过程中选择最小值。

min()函数的注意事项有以下几点:
1)min()函数可以接受任意数量的参数,但是至少要有两个参数。如果只有一个参数,或者没有参数,会导致编译错误。
2)min()函数会根据参数的类型来返回相应类型的结果。如果参数中有不同类型的数值,会先进行隐式类型转换,然后再比较。例如,min(3, 5.0)会先将3转换为浮点数3.0,然后返回浮点数3.0。
3)min()函数会按照从左到右的顺序依次比较参数。如果有多个参数具有相同的最小值,会返回最左边的那个参数。例如,min(3, 5, 3)返回3,min(‘a’, ‘b’, ‘a’)返回’a’。

以下是Arduino数学运算min()三个实际运用程序案例:

案例一:让一个模拟输入信号不超过500

// 定义模拟输入引脚
#define ANALOG_PIN A0

// 初始化函数
void setup() {
    
    
  // 设置串口通信波特率为9600
  Serial.begin(9600);
}

// 循环函数
void loop() {
    
    
  // 读取模拟输入引脚的电压值(0-1023)
  int value = analogRead(ANALOG_PIN);
  // 使用min()函数将电压值限制在0-500之间
  value = min(value, 500);
  // 将电压值打印到串口
  Serial.println(value);
}

案例二:让一个LED灯根据光敏电阻的光照强度调节亮度

// 定义LED灯连接的引脚(支持PWM)
#define LED_PIN 9
// 定义光敏电阻连接的引脚(支持模拟输入)
#define LDR_PIN A0

// 初始化函数
void setup() {
    
    
  // 设置LED灯引脚为输出模式
  pinMode(LED_PIN, OUTPUT);
}

// 循环函数
void loop() {
    
    
  // 读取光敏电阻引脚的电压值(0-1023)
  int value = analogRead(LDR_PIN);
  // 使用map()函数将电压值映射到0-255之间(PWM范围)
  value = map(value, 0, 1023, 0, 255);
  // 使用min()函数将亮度值限制在0-200之间(避免过亮)
  value = min(value, 200);
  // 设置LED灯引脚的PWM值(0-255),控制亮度
  analogWrite(LED_PIN, value);
}

案例三:找出一个数组中的最小值

// 定义一个数组
int array[] = {
    
    10, 20, 30, 40, 50};
// 定义数组的长度
int length = sizeof(array) / sizeof(array[0]);
// 定义一个变量用于存储最小值
int min_value;

// 初始化函数
void setup() {
    
    
  // 设置串口通信波特率为9600
  Serial.begin(9600);
  // 将数组的第一个元素赋值给最小值变量
  min_value = array[0];
}

// 循环函数
void loop() {
    
    
  // 遍历数组中的其他元素
  for (int i = 1; i < length; i++) {
    
    
    // 使用min()函数比较当前元素和最小值变量,将较小的值赋值给最小值变量
    min_value = min(min_value, array[i]);
  }
  // 将最小值变量打印到串口
  Serial.println(min_value);
}

案例四:最小值选择:

int sensor1Value = analogRead(A0); // 读取传感器1的值
int sensor2Value = analogRead(A1); // 读取传感器2的值

int minValue = min(sensor1Value, sensor2Value); // 选择最小的传感器值

// 在LCD显示屏上输出最小值
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 2);
lcd.print("Min Value: ");
lcd.print(minValue);

在此案例中,使用min()函数比较两个传感器的读数,并选择最小的传感器值。然后,将最小值显示在连接的LCD显示屏上。

案例五:范围限制:

int inputValue = analogRead(A0); // 读取输入值
int minValue = 0;
int maxValue = 1023;

int constrainedValue = min(maxValue, max(minValue, inputValue)); // 限制输入值在最小值和最大值之间

analogWrite(9, constrainedValue); // 输出限制后的值到PWM引脚

在此案例中,使用min()函数将输入值限制在最小值和最大值之间。这可以用于限制输入的范围,以确保其在一定的有效范围内。然后,将限制后的值作为PWM信号输出到引脚。

案例六:数值排序:

int value1 = 5;
int value2 = 3;
int value3 = 7;

int minValue = min(min(value1, value2), value3); // 从三个数值中选择最小值

Serial.print("Min Value: ");
Serial.println(minValue);

在此案例中,使用min()函数比较三个数值,并选择最小的数值。然后,将最小值输出到串口监视器,用于调试或显示目的。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132633922
今日推荐