arduino控制激光灯发送摩斯密码

一、实物连接

在这里插入图片描述

二、程序实现

1.主程序

代码如下(示例):

#include "retrieval.h"

const int laserPin = 7; //laser attach to 

static int dotDelay = 200; //

void setup()
{
  pinMode(laserPin, OUTPUT);  //initialize laser as an output
  Serial.begin(9600);  
}

void loop()
{
  char ch = 0; //store the  character or digit read from the serial monitor
  if(Serial.available() > 0) //is there anything to be read
  {
    ch = Serial.read(); //read a single letter from serial monitor
  }
  morseSignal(ch); //flashes depend on the letter 
}
//
void flashDot(char cha)
{
  digitalWrite(laserPin, HIGH); //turn the laser on
  if(cha == '.') //
  {
    delay(dotDelay);
  }
  else
  {
    delay(dotDelay * 3);  //gap between letters
  }
  digitalWrite(laserPin, LOW);
  delay(dotDelay);  //gap between flashes
}
//
void flashSequence(char *sequence)
{
  int i = 0;
  while(sequence[i] != NULL)
  {
    flashDot(sequence[i]);
    i++;
  }
  delay(dotDelay * 3);
}
//
void morseSignal(char ch)
{
  if(ch >= 'a' && ch <= 'z')  
  {
    flashSequence(letters[ch - 'a']);
  }
  else if(ch >= 'A' && ch <= 'Z')
  {
    flashSequence(letters[ch - 'A']);
  }
  else if(ch >= '0' && ch <= '9')
  {
    flashSequence(numbers[ch - '0']);
  }
  else if(ch == ' ')
  {
    delay(dotDelay * 4);  //gap between words
  }
}


2.头文件retrieval.h

代码如下:

#ifndef __RETRIEVAL_H__
#define __RETRIEVAL_H__

char* letters[] = {
  ".-",  //A
  "-...",  //B
  "-.-.",  //C
  "-..",  //D
  ".",  //E
  "..-.",  //F
  "--.",  //G
  "....",  //H
  "..",  //I
  ".---",  //J
  "-.-",  //K
  ".-..",  //L
  "--",  //M
  "-.",  //N
  "---",  //O
  ".--.",  //P
  "--.-",  //Q
  ".-.",  //R
  "...",  //S
  "-",  //T
  "..-",  //U
  "...-",  //V
  ".--",  //W
  "-..-",  //X
  "-.--",  //Y
  "--.."  //Z
};
char* numbers[] = {
  "-----",  //0
  ".----",  //1
  "..---",  //2
  "...--",  //3
  "....-",  //4
  ".....",  //5
  "-....",  //6
  "--...",  //7
  "---..",  //8
  "----."   //9
};

#endif
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gcc future.c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值