|
Ardunio 入门教程-实验七 摩尔斯代码翻译机
实验用到的元件
实验用到的元件 ,一个蜂鸣器,2根杜邦线,一块实验板。
原理图
3 天前 上传
下载附件 (53.23 KB)
LED长脚的为正,短脚为负极。
蜂鸣器长脚的为正,短脚为负极。 在蜂鸣器的底下也有标价正负。
连接图
LED的正极连接 IO口12,LED负极连接电阻,电阻的另外一端接GND.
实验演示视频:
代码- // Listing. Project 3.
- int ledPin = 12;
- char* letters[] = {
- ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // A-I
- ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R
- "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z
- };
- char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};
- int dotDelay = 200;
- void setup()
- {
- pinMode(ledPin, OUTPUT);
- Serial.begin(9600);
- }
- void loop()
- {
- char ch;
- if (Serial.available()) // is there anything to be read from USB?
- {
- ch = Serial.read(); // read a single letter
- 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
- }
- }
- }
- void flashSequence(char* sequence)
- {
- int i = 0;
- while (sequence[i] != NULL)
- {
- flashDotOrDash(sequence[i]);
- i++;
- }
- delay(dotDelay * 3); // gap between letters
- }
- void flashDotOrDash(char dotOrDash)
- {
- digitalWrite(ledPin, HIGH);
- if (dotOrDash == '.')
- {
- delay(dotDelay);
- }
- else // must be a -
- {
- delay(dotDelay * 3);
- }
- digitalWrite(ledPin, LOW);
- delay(dotDelay); // gap between flashes
- }
复制代码 |
|