Arduino - 利用tone發出音頻的摩斯密碼(Morse code)
目的:
透過Serial視窗輸入要傳送的文字,喇叭會發出該文字對應的音頻的Morse code
成果:
Arduino Code:
#define Do 440 const byte audio11 = 11; int dotLen = 150; int dashLen = 700; int incomingByte = 0; // 用來儲存收進來的 data byte void setup() { Serial.begin(9600); } void loop() { // 檢查是否有資料可供讀取 if (Serial.available() > 0) { // 讀取進來的 byte incomingByte = Serial.read(); // 印出收到的資料 Serial.println(incomingByte, DEC); GetChar(incomingByte); delay(800); } } void MorseDot() { tone(audio11, Do, dotLen); // start playing a tone delay(500); // hold in this position } // DASH void MorseDash() { tone(audio11, Do, dashLen); // start playing a tone delay(800); // hold in this position } void GetChar(char tmpChar) { switch (tmpChar) { case 'a': MorseDot(); MorseDash(); break; case 'b': MorseDash(); MorseDot(); MorseDot(); MorseDot(); break; case 'c': MorseDash(); MorseDot(); MorseDash(); MorseDot(); break; case 'd': MorseDash(); MorseDash(); MorseDot(); break; case 'e': MorseDot(); break; case 'f': MorseDot(); MorseDot(); MorseDash(); MorseDot(); break; case 'g': MorseDash(); MorseDash(); MorseDot(); break; case 'h': MorseDot(); MorseDot(); MorseDot(); MorseDot(); break; case 'i': MorseDot(); MorseDot(); break; case 'j': MorseDot(); MorseDash(); MorseDash(); MorseDash(); break; case 'k': MorseDash(); MorseDot(); MorseDash(); break; case 'l': MorseDot(); MorseDash(); MorseDot(); MorseDot(); break; case 'm': MorseDash(); MorseDash(); break; case 'n': MorseDash(); MorseDot(); break; case 'o': MorseDash(); MorseDash(); MorseDash(); break; case 'p': MorseDot(); MorseDash(); MorseDash(); MorseDot(); break; case 'q': MorseDash(); MorseDash(); MorseDot(); MorseDash(); break; case 'r': MorseDot(); MorseDash(); MorseDot(); break; case 's': MorseDot(); MorseDot(); MorseDot(); break; case 't': MorseDash(); break; case 'u': MorseDot(); MorseDot(); MorseDash(); break; case 'v': MorseDot(); MorseDot(); MorseDot(); MorseDash(); break; case 'w': MorseDot(); MorseDash(); MorseDash(); break; case 'x': MorseDash(); MorseDot(); MorseDot(); MorseDash(); break; case 'y': MorseDash(); MorseDot(); MorseDash(); MorseDash(); break; case 'z': MorseDash(); MorseDash(); MorseDot(); MorseDot(); break; case '0': MorseDash(); MorseDash(); MorseDash(); MorseDash(); MorseDash(); break; case '1': MorseDot(); MorseDash(); MorseDash(); MorseDash(); MorseDash(); break; case '2': MorseDot(); MorseDot(); MorseDash(); MorseDash(); MorseDash(); break; case '3': MorseDot(); MorseDot(); MorseDot(); MorseDash(); MorseDash(); break; case '4': MorseDot(); MorseDot(); MorseDot(); MorseDot(); MorseDash(); break; case '5': MorseDot(); MorseDot(); MorseDot(); MorseDot(); MorseDot(); break; case '6': MorseDash(); MorseDot(); MorseDot(); MorseDot(); MorseDot(); break; case '7': MorseDash(); MorseDash(); MorseDot(); MorseDot(); MorseDot(); break; case '8': MorseDash(); MorseDash(); MorseDash(); MorseDot(); MorseDot(); break; case '9': MorseDash(); MorseDash(); MorseDash(); MorseDash(); MorseDot(); break; default: break; } }
留言
張貼留言