什么是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时间函数 delay()
Arduino时间函数delay()是一个用于让Arduino程序暂停执行一段时间的函数。它的语法是:
delay(ms);
其中,ms是一个整数,表示要暂停的毫秒数。例如,delay(1000)表示暂停1秒。
delay()函数的使用范围主要是在需要控制程序的执行速度或者节省电源的情况下。例如,如果要让一个LED灯以一定的频率闪烁,就可以用delay()函数来控制灯的开关时间。又例如,如果要让Arduino进入低功耗模式,就可以用delay()函数来减少CPU的运行时间。
应用场景:
1)延时控制:delay()函数常用于需要在程序中添加固定延迟的场景,如控制设备的运行时间、生成稳定的脉冲信号等。通过在适当的位置调用delay()函数,可以控制程序的执行速率和时间间隔。
2)等待响应:在与外部设备进行通信或进行传感器读取时,可能需要等待一段时间以获取响应或稳定的读数。delay()函数可以用于添加等待时间,确保系统在进行下一步操作之前获得正确的响应或读数。
3)定时任务:在一些应用中,需要按照固定的时间间隔执行某些任务,如数据采集、传输等。通过结合delay()函数和条件判断,可以实现简单的定时任务功能。
delay()函数的注意事项有以下几点:
1)delay()函数会阻塞程序的执行,也就是说,在delay()函数执行期间,Arduino无法响应其他的输入或输出信号。这可能会导致程序错过一些重要的事件或者数据。因此,在使用delay()函数时,要尽量避免使用过长的延时时间,或者使用其他的非阻塞方式来实现延时效果,例如millis()函数。
2)delay()函数会影响Arduino内部的定时器。Arduino内部有一些定时器用于控制PWM信号、串口通信、计时器中断等功能。如果使用delay()函数,这些定时器会被暂停或者延迟,从而影响相关功能的正常运行。因此,在使用delay()函数时,要注意检查是否会对其他功能造成干扰或者冲突。
3)delay()函数不适用于多任务环境。如果Arduino需要同时运行多个任务,例如同时控制多个传感器或者执行器,那么使用delay()函数会导致任务之间的同步问题。因为在一个任务中使用delay()函数会导致其他任务无法及时执行。因此,在多任务环境下,要使用其他的多任务调度方式来实现任务之间的协调和切换,例如FreeRTOS库。
以下是Arduino时间函数delay()几个实际运用程序案例:
案例一:让一个LED灯以1秒为周期闪烁
// 定义LED灯连接的引脚
#define LED_PIN 13
// 初始化函数
void setup() {
// 设置LED灯引脚为输出模式
pinMode(LED_PIN, OUTPUT);
}
// 循环函数
void loop() {
// 设置LED灯引脚为高电平,点亮LED灯
digitalWrite(LED_PIN, HIGH);
// 延时500毫秒
delay(500);
// 设置LED灯引脚为低电平,熄灭LED灯
digitalWrite(LED_PIN, LOW);
// 延时500毫秒
delay(500);
}
案例二:让Arduino进入低功耗模式
// 引入低功耗库
#include <LowPower.h>
// 初始化函数
void setup() {
// 省略其他代码
}
// 循环函数
void loop() {
// 省略其他代码
// 让Arduino进入睡眠模式,并在8秒后自动唤醒
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
案例三:让一个舵机以一定的角度旋转
// 引入舵机库
#include <Servo.h>
// 创建一个舵机对象
Servo servo;
// 定义舵机连接的引脚
#define SERVO_PIN 9
// 初始化函数
void setup() {
// 将舵机对象连接到引脚上
servo.attach(SERVO_PIN);
}
// 循环函数
void loop() {
// 让舵机旋转到0度
servo.write(0);
// 延时1秒
delay(1000);
// 让舵机旋转到90度
servo.write(90);
// 延时1秒
delay(1000);
// 让舵机旋转到180度
servo.write(180);
// 延时1秒
delay(1000);
}
案例四:延时控制:
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // 打开LED
delay(1000); // 延时1秒
digitalWrite(ledPin, LOW); // 关闭LED
delay(1000); // 延时1秒
}
在此案例中,使用delay()函数实现了简单的LED闪烁控制。通过调用delay()函数,使程序在打开LED后延时1秒,然后关闭LED并再次延时1秒,实现LED的周期性闪烁效果。
案例五:等待响应:
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
digitalWrite(ledPin, HIGH); // 打开LED
delay(5000); // 延时5秒
digitalWrite(ledPin, LOW); // 关闭LED
}
}
在此案例中,使用delay()函数实现了等待按钮响应的功能。当按钮被按下时,程序会进入if语句块,打开LED并延时5秒,然后关闭LED。通过添加延时,确保程序在按钮按下后等待一段时间再执行下一步操作。
案例六:定时任务:
const int ledPin = 13;
const unsigned long interval = 1000; // 定时任务间隔为1秒
unsigned long previousMillis =0; // 上次执行定时任务的时间
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis(); // 获取当前时间
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // 更新上次执行时间
digitalWrite(ledPin, !digitalRead(ledPin)); // 切换LED状态
}
}
在此案例中,使用delay()函数的替代方案实现了定时任务。通过使用millis()函数获取当前时间,并比较与上次执行定时任务的时间差,当时间差达到指定的间隔时,切换LED的状态。这样可以在不使用阻塞延时的情况下,实现定时任务的执行。
今天的文章arduino的时间函数_arduino舵机控制程序分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81364.html