arduino豪华版 使用灯光摩斯密码发送你好世界代码及解释
时间: 2024-11-06 08:21:20 浏览: 6
LoRa协议在Arduino上的应用——原理及代码分析(一)
Arduino豪华版可以用来创建一些有趣的电子项目,比如通过灯光显示摩斯密码。下面是一个简单的示例代码,它将“Hello World”转换成摩斯电码并点亮LED灯:
```cpp
// 导入必要的库
#include <Wire.h>
#include <Adafruit_NeoPixel.h>
// 创建NeoPixel对象,假设你有8个LED连接到pin 6
const int LED_PIN = 6;
Adafruit_NeoPixel strip(8, LED_PIN, NEO_GRB + NEO_KHZ800); // NeoPixel类型为GRB
// 摩斯电码对应字典
char morseCode[] = {
'.-', // 点划-点 (.)
'-...', // 点划-点-破折线 (-...)
'-.-.', // 点划-点-点-破折线 (-.-.)
'-..', // 点划-点-点 断开 (.-..)
'.', // 只有点 (.)
'..-.', // 点划-点-点-点 断开 (...-)
'--.', // 点划-破折线-点-破折线 (-..-)
'....' // 四个连续点 (....)
};
void setup() {
strip.begin(); // 初始化NeoPixel
strip.clear(); // 清空所有LED状态
}
void loop() {
String message = "Hello World"; // 待发送的消息
for (int i = 0; i < message.length(); ++i) {
char c = tolower(message.charAt(i)); // 转换为小写字母,便于处理全字母表
if (c >= 'a' && c <= 'z') { // 只处理字母
for (unsigned short j = 0; j < strlen(morseCode[c - 'a']); ++j) {
switch (morseCode[c - 'a'][j]) {
case '.':
strip.setPixelColor(j, strip.Color(255, 0, 0)); // 设置红色(LED)
strip.show();
delay(300);
strip.setPixelColor(j, 0); // 关闭LED
break;
case '-':
strip.setPixelColor(j, strip.Color(0, 255, 0)); // 设置绿色(LED)
strip.show();
delay(600);
strip.setPixelColor(j, 0);
break;
}
}
delay(400); // 每个字符间停顿
}
}
}
```
这个代码首先初始化了NeoPixel,并定义了一个摩斯电码字典。`loop()`函数会遍历消息中的每个字符,将其转换为摩斯电码,然后逐个点亮LED来展示每个电码段。每个字符之间会有短暂的暂停。
阅读全文