使用Arduino开发板制作摩尔斯电码生成器

网友投稿 2019-08-27 11:55

摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线。摩尔斯电码由Samuel F.B开发。并进一步用于电报传输秘密信息。它在第二次世界大战时最常用。摩尔斯电码可以通过点击、闪烁灯或写入来执行。摩尔斯电码有两种版本,原始和国际摩尔斯电码。在国际摩尔斯电码中,通过删除空格并设计特定长度的短划线来修改原始版本。摩尔斯电码可用于编码字母和数字。它主要用于无线电和海洋通信,也是士兵训练的一部分。

语言一直是摩尔斯电码的障碍,因为很难用其他语言执行变音字符的代码。有一些著名的词被认为是摩尔斯电码的重要特征,如'SOS'。SOS完整形式是Save Our Souls,创建的通用遇险信号代表危险。

下图显示了从A到Z的字母表的摩尔斯电码。

https://cdn.china-scratch.com/timg/190829/115500C07-0.jpg

今天在本篇文章中,我们将使用Arduino开发板制作一个摩尔斯电码生成器,它将从串行监视器输入任何字符,并通过蜂鸣器将其转换为摩尔斯电码等效的蜂鸣声。

需要的组件

●    Arduino Uno开发板

●    蜂鸣器

●    面包板

●    跳线

电路原理图

https://cdn.china-scratch.com/timg/190829/1155015c5-1.jpg

将蜂鸣器的正极引脚连接到Arudino UNO的第8个引脚,将负极引脚连接到Arduino开发板的地。使用Arduino IDE上传代码并在串行监视器上键入字符以创建声音。还可以使用Arduino添加LCD以显示短划线和圆点。

编程说明

文章末尾给出了Arduino摩尔斯电码生成器的完整代码,这里我们解释了解项目工作的程序。

下面的代码用于接收字符串,然后将其转换为莫尔斯代码。

char stringToMorseCode[] = "";

然后定义连接到Arduino的蜂鸣器的引脚和蜂鸣器产生的声音的音高。然后我们定义点和破折号的长度。

int audio8 = 8;      // output audio on pin 8int note = 1200;      // music note/pitch
int dotLen = 100;     // length of the morse code 'dot'int dashLen = dotLen * 3;    // length of the morse code 'dash'

void loop()函数中,如果串行数据可用,它将保存到变量indata中。然后它使用命令inData [index1]逐个读取字符。命令variable.toUppercase()用于将小写字符更改为大写。然后它根据每个角色创造声音。

void loop(){  char inChar = 0;           char inData[100] = "";        // data length of 6 characters  String variable = "";  String variable1 = "";  int index1 = 0;
  if ( Serial.available() > 0 ) {                        while (Serial.available() > 0 && index1 < 100)    {      delay(100);      inChar = Serial.read();      inData[index1] = inChar;      index1++;      inData[index1] = '';    }    variable.toUpperCase();    for (byte  i = 0 ; i < 100 ; i++) {      variable.concat(String(inData[i]));      }    delay(20);

下面的函数MorseDotMorseDash分别用于创建点和破折号的声音。

void MorseDot(){  tone(audio8, note, dotLen); // start playing a tone  delay(dotLen);              // hold in this position}
void MorseDash(){  tone(audio8, note, dashLen);  // start playing a tone  delay(dashLen);               // hold in this position}

GetChar函数获取所有字母表的代码。因此,每当我们键入任何字母表时,都会从此函数中获取相应的莫尔斯电码以创建特定的声音。

void GetChar(char tmpChar){  switch (tmpChar) {    case 'a':    MorseDot();    delay(100);    MorseDash();    delay(100);    break;………    default:       break;  }}

现在使用Arduino IDE将代码上传到Arduino,然后在串口监视器中输入任何字符,然后按Enter按钮将字符发送到Arduino。

在这里,我们输入了'SOS'这是一个通用的遇险信号,为它创造声音。

https://cdn.china-scratch.com/timg/190829/1155013H2-2.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com