ocrobot:alpha:kitone:tutorial09
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
ocrobot:alpha:kitone:tutorial09 [2017/04/07 10:03] – 外部编辑 127.0.0.1 | ocrobot:alpha:kitone:tutorial09 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ~~NOTOC~~ | ||
+ | ====== Blink Without Delay(不使用delay来使LED闪烁) ====== | ||
+ | <WRAP left round info 100%> | ||
+ | 这个例子里你会学到怎么设置一个类似的计时器。 | ||
+ | </ | ||
+ | 有时候你需要同时做两件事,比如读取按键信息的同时想点亮熄灭一个LED,在这种情况下,你可能不会想去用[[reference: | ||
+ | |||
+ | 这个例程教你不用[[reference: | ||
+ | |||
+ | 类似的就像你在微波炉里做披萨,同时等着接收重要的邮件。你把披萨放在微波炉,设置10分钟,同样的[[reference: | ||
+ | |||
+ | 你再真实世界里要做的就是放好披萨,检查邮件,还可以去做一些其他的不太占用很多时间的事,然后你再回来看微波炉是否到0了,到了0就表明披萨做好了。 | ||
+ | |||
+ | |||
+ | |||
+ | ===== ALPHA MEGA328-U核心 ===== | ||
+ | ==== 硬件 ==== | ||
+ | |||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | * [[ocrobot: | ||
+ | |||
+ | |||
+ | ==== 搭建电路 ==== | ||
+ | |||
+ | - ALPHA 11 LED模块插入并行扩展版1号槽位。 | ||
+ | - ALPHA MEGA328-U模块插入并行扩展板2号槽位。 | ||
+ | - USB线连接计算机与ALPHA MEGA328-U。 | ||
+ | {{ocrobot: | ||
+ | ==== 代码 ==== | ||
+ | |||
+ | <code cpp> | ||
+ | /* Blink without Delay | ||
+ | 不使用delay函数来使一个连接在数字口的LED闪烁,这意味着别的代码可以同时执行,而不会被LED的代码打断。 | ||
+ | */ | ||
+ | |||
+ | const int ledPin = 2; // 设置LED的引脚 | ||
+ | |||
+ | int ledState = LOW; // 设置 LED状态 | ||
+ | long previousMillis = 0; // 存储上一次LED状态改变的时间 | ||
+ | |||
+ | long interval = 1000; // 设置间隔时间为1000毫秒 | ||
+ | // 下面的变量是长整形,因为以毫秒为单位测量的时间会快速地变成一个更大的,整形无法存储的数字。 | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(ledPin, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | unsigned long currentMillis = millis(); | ||
+ | if (currentMillis - previousMillis > interval) { | ||
+ | previousMillis = currentMillis; | ||
+ | if (ledState == LOW) // 如果LED灭了就点亮它 ,反之亦然: | ||
+ | ledState = HIGH; | ||
+ | else | ||
+ | ledState = LOW; | ||
+ | digitalWrite(ledPin, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <WRAP left round tip 100%> | ||
+ | 这个例子中我们使用了一个新函数:[[reference: | ||
+ | </ | ||
+ | |||
+ | [[ocrobot: |