北航自动电报

 这道题据我所知大部分人都没能写出

代码仅供参考

char stringToMorseCode[] = "";
int dotLen = 100;
int audio8 = 2;
int note = 1200;  
int dashLen = dotLen * 3;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  uint32_t fTransmit = 800; // KHz
  TCCR1A = 0b01000000;
  TCCR1B = 0b00001001; // CTCHIt
  OCR1A = F_CPU / (2000 * fTransmit) - 1;
  pinMode(9, OUTPUT) ;
  char strbuf[255];
  sprintf(strbuf,"设置载波频率:%d KHZ",(F_CPU / (2 * (1 + OCR1A)) / 1000));
  Serial.println(strbuf);
}
void loop()
{ 
  char inChar = 0;          
  char inData[100] = "";        
  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] = '\0';        
    }
    variable.toUpperCase();       
    for (byte  i = 0 ; i < 100 ; i++) {
      variable.concat(String(inData[i]));   
    }
    delay(20);
  }
  String  stringToMorseCode = String(variable);                          

  for (int i = 0; i < 100; i++)
  {
  char tmpChar = stringToMorseCode[i];
  tmpChar = toLowerCase(tmpChar);
  GetChar(tmpChar);
  }
}
void GetChar(char tmpChar)
{
    switch (tmpChar) {
    case 'a':
    Serial.println(".-"); 
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'b':
    Serial.println("-...");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'c':
    Serial.println("-.-.");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'd':
    Serial.println("-..");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100); 
    break;
    case 'e':
    Serial.println(".");
    MorseDot();
    delay(100);
    break;
    case 'f':
    Serial.println("..-.");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'g':
    Serial.println("--.");
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'h':
    Serial.println("....");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'i':
    Serial.println("..");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'j':
    Serial.println(".---");
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'k':
    Serial.println("-.-");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'l':
    Serial.println(".-..");
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'm':
    Serial.println("--");
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'n':
    Serial.println("-.");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'o':
    Serial.println("---");
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'p':
    Serial.println(".--.");
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 'q':
    Serial.println("--.-");
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'r':
    Serial.println(".-.");
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 's':
    Serial.println("...");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    case 't':
    Serial.println("-");
    MorseDash();
    delay(100);
    break;
    case 'u':
    Serial.println("..-");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'v':
    Serial.println("...-");
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'w':
    Serial.println(".--");
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'x':
    Serial.println("-..-");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'y':
    Serial.println("-.--");
    MorseDash();
    delay(100);
    MorseDot();
    delay(100);
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);
    break;
    case 'z':
    Serial.println("--..");
    MorseDash();
    delay(100);
    MorseDash();
    delay(100);   
    MorseDot();
    delay(100);
    MorseDot();
    delay(100);
    break;
    default:
       break;
  }
}
void MorseDash()
{
  tone(audio8, note, dashLen);  
  delay(dashLen);              
}
void MorseDot()
{
  tone(audio8, note, dotLen); 
  delay(dotLen);              
}

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值