圣源电子制作
标题:
Ardunio 入门教程-实验七 摩尔斯代码翻译机
[打印本页]
作者:
sydz
时间:
2012-5-12 15:10
标题:
Ardunio 入门教程-实验七 摩尔斯代码翻译机
Ardunio 入门教程-实验七 摩尔斯代码翻译机
实验用到的元件
(, 下载次数: 71)
上传
点击文件名下载附件
实验用到的元件 ,一个蜂鸣器,2根杜邦线,一块实验板。
原理图
(, 下载次数: 68)
上传
点击文件名下载附件
3 天前 上传
下载附件
(53.23 KB)
LED长脚的为正,短脚为负极。
蜂鸣器长脚的为正,短脚为负极。 在蜂鸣器的底下也有标价正负。
连接图
(, 下载次数: 72)
上传
点击文件名下载附件
LED的正极连接 IO口12,LED负极连接电阻,电阻的另外一端接GND.
实验演示视频:
http://player.youku.com/player.php/sid/XMzk0NzU1Njg0/v.swf
代码
// 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
}
复制代码
欢迎光临 圣源电子制作 (http://syyyd.com/)
Powered by Discuz! X3.4