Arduino控制舵机,你甚至不需要一个单独的电源为伺服Arduino可以处理一个微型伺服。伺服信号线到数字引脚5,停电5伏和地面。
我原本复制代码从另一个命令然后修改了不少。注意代码需要额外更多的条目,如果你使用标点符号。
#包括伺服。H
************************************************** / / /
类型转换为摩尔斯电码在这里/字符串
************************************************** / / /
焦stringtomorsecode [] =“CQ CQ de XXXX”;
/ *摩尔斯码项目
设置您的摩尔斯电码的速度
调整的dotlen长度来加快或减慢你的摩尔斯电码
(其他所有的长度都是基于dotlen)
这是比代码元素:
虚线长度=点长x 3
元素=点长度之间的停顿
(汉字中的点和线之间的停顿)
字符长度x 3 =点之间的停顿
词=点长x 7之间的停顿
HTTP:/ / www.nu-ware。COM / nucode % 20help / index.html?M.
* /
国际dotlen = 150;的摩尔斯电码/长度的“点”
国际dashlen = dotlen×3;的摩尔斯码/长的破折号
国际elempause = dotlen;对特征元素之间的暂停/ /长度
国际空间= dotlen×3;人物之间的空间/长度
国际wordpause = dotlen×7;词与词之间的停顿/长度
伺服myservo1,myservo2,myservo3;//创建伺服对象控制伺服
国际potpin = 0;//模拟引脚用于连接电位计
int val;//变量从模拟引脚读取值
setup() { void
(9600)开始连载;
myservo1。附(5);//将伺服引脚5上的伺服对象
myservo1写(90);
}
无效dit()
{
myservo1写(125);
延迟(dotlen);/ /保持在这个位置
charpause(elempause);
}
无效dah()
{
myservo1写(125);
延迟(dashlen);/ /保持在这个位置
charpause(elempause);
}
/ /移动伺服中立位
无效charpause(int延迟时间)
{
myservo1。写(110);/ /移动伺服回到中立位置
延迟(延迟时间);/ /保持在这个位置
}
无效的TX(char摩尔斯密码[ ]){
为(int i = 0;i < 7;i++)
{
//在当前位置的字符
字符< =摩尔斯密码[我];
串行打印(“< =”);串口打印(sizeof(摩尔斯密码));串行。println(<);
开关(<){
案例:dit();打破。”;
“-”:dah();打破;
“/”:返回;
案例:返回;
} //端开关
} //结束
延迟(空间);/ /暂停字符之间
} //端功能
/ / ***人物摩尔斯电码转换* / /
GetChar(<无效字符)
{
/ /以通过字符和使用开关箱为人物找到摩尔斯电码
/ /注:必须终止参数空间(或只是削减如果你想我用空间的光线)—
/ /功能收发工作。一些无法读取的参数字符串长度函数。愚蠢的.
开关(<){
案例一:TX(“-”);休息;
案例B:TX(“…”);突破;
案例C:TX(“-”。);突破;
案例D:TX(“..”);突破;
案例E:TX(“。”);突破;
案例F:TX(“..”。);突破;
案例G:TX(“。”);突破;
案例H:TX(“…”);突破;
“我”:TX(“..”);突破;
案例“J”:TX(“,”);休息;
案例“K”:TX(“-”);休息;
案例l:TX(“-”。);突破;
案例M:TX(“”);休息;
案例“N”:TX(“。”);突破;
案例“O”:TX(“”);休息;
案例“P”:TX(“--”。);突破;
案例“Q”:TX(“-”);休息;
案例的“r”:TX(“-”。);突破;
案例是:TX(“…”);突破;
例“T”:TX(“-”);休息;
例U:TX(“..”);休息;
案例“V”:TX(“…”);休息;
案例“W”:TX(“-”);休息;
“X”:TX(“-”);休息;
例“Y”:TX(”,“);突破;
案例“Z”:TX(“..”);突破;
案例’。”:TX(”。-。-。-);突破;
案例1:TX(”,“);突破;
案例2:TX(“..”);休息;
案例3:TX(“…”);休息;
案例4:TX(“…”);休息;
案例5:TX(“.....”);突破;
案例6:TX(“_的…”);突破;
案例7:TX(“…”);突破;
案例8:TX(“---”。);突破;
案例9:TX(“----”。);突破;
案例0:TX(“-----”);休息;
默认
//如果匹配字符发现它将默认为词与词之间没有空间
charpause(wordpause);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
创建一个循环的字母/单词你想在莫尔斯码输出(定义在字符串在上面的代码)
无效loop()
{
//遍历字符串,每个字符一次直到结束
为(int i = 0;i < sizeof(stringtomorsecode)- 1;i++)
{
//在当前位置的字符
字符< = stringtomorsecode [我];
/ /以较低的情况下设置的情况
< = toLowerCase(<);
//调用子程序来得到这个角色的摩尔斯电码的等效
GetChar(<);
延迟(空间);/ /暂停字符之间
}
/ /在字符串长暂停结束前循环又开始
延迟(2000);
}