您當前的位置:首頁 > 收藏

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

作者:由 我叫徐同學 發表于 收藏時間:2022-01-06

一、介紹

由於其良好的指向性和能量集中性,鐳射廣泛用於醫療和軍事等領域。顧名思義,鐳射發射器模組是一種可以發射鐳射的模組。今天這個實驗呢,我們就用鐳射發射器來做一個製作一個摩爾斯電碼的發射裝置,是不是很好奇呢,接下里就讓我們一起來看一下吧!

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

圖5。1 鐳射發射器模組

二、材料準備

Arduino Uno 主機板*1

USB資料線*1

麵包板*1

鐳射發射器模組*1

杜邦線若干

三、實驗原理

鐳射是一種透過基於受鐳射發射的電子輻射的光學放大過程發光的裝置。鐳射與其他的光源不同,因為他們相干發光。

空間相干性使得鐳射可以聚焦到狹小的地方,從而使鐳射切割和光刻等應用以及鐳射束在很遠的距離保持狹窄(準直),從而實現鐳射指示器等應用。鐳射器還可以具有稿時間相干性,這使得它們具有非常窄的光譜,即它們僅發出單色光。它的時間相干性可以用來產生短至飛秒的光脈衝。

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

圖5。2 電路原理圖

這個實驗中我們透過鐳射發射器發射鐳射的時間間隔來模擬摩爾斯電碼,根據事先寫好的程式我們可以模擬出26個英文字母的大小寫和10個阿拉伯數字,以及一些字元,可以滿足一些基本的通訊需求了。

四、實驗過程

首先,我們需要建立電路,由於鐳射發射器模組只有兩個引腳,所以連線也很簡單,如圖我們首先將紅線接在板子的5V接腳上,一段連線鐳射發射器模組的VCC(實際中是S),將另一根白線接在板子的7號接腳上,另一端接在鐳射發射器模組的SIG端(實際中是-)。

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

圖5。3 類比電路連線圖

按照上面的說明接好線後就是圖5。4的樣子了。

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

圖5。4 實際的電路接線圖

給板子接上USB連線線後,我們就可以進行程式部分的工作了。

五、程式碼

/************************************

* 專案名字:鐳射器發射實驗

* 介面列表:

* laser Arduino Uno R3

* S 5V

* - 7

*

*編寫:南友***********************/

#include

“retrieval。h”

const

int

laserPin

=

7

//定義板子的7號引腳為laserPin

static

int

dotDelay

=

200

//設定一個基礎延遲時間:200毫秒

void

setup

()

{

pinMode

laserPin

OUTPUT

);

//定義板子的7號引腳為訊號的輸出埠

Serial

begin

9600

);

}

void

loop

()

{

char

ch

=

0

if

Serial

available

()

>

0

//從串列埠監視器中讀取資料

{

ch

=

Serial

read

();

//將讀取到的資料賦給字元型常量ch

}

morseSignal

ch

);

}

void

flashDot

char

cha

//函式定義

{

digitalWrite

laserPin

HIGH

);

if

cha

==

‘。’

{

delay

dotDelay

);

}

else

{

delay

dotDelay

*

3

);

//延時3倍的基礎時長

}

digitalWrite

laserPin

LOW

);

delay

dotDelay

);

}

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

}

}

因為在這個程式的開頭我們呼叫了一個頭檔案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

如果大家不知道怎麼建立這個標頭檔案的話,下面是我分享的一個百度網盤的連結,裡面就是一個編寫好的標頭檔案,大家直接下載下來也可以哦!

連結:

https://

pan。baidu。com/s/14C1PIJ

pvieBlxN6rtNdidg

提取碼:ibee

六、效果展示

將程式上傳到Arduino板子上後,我們就可以看到鐳射發射器的效果了。

Arduino小白的學習記錄:基於摩爾斯電碼的鐳射發射器實驗

圖5。5 鐳射發射器

如圖5。5所示,我們可以看到鐳射發射器處於一個常亮的狀態。接下來我們就透過一個影片來看看如何用這個鐳射發射器發射摩爾斯電碼吧!

七、總結分析

這個實驗的電路原理部分相對來說不難,主要可能關於摩爾斯電碼的程式碼實現部分有點繞,因為這裡需要編寫和呼叫很多函式,我們可以發現程式碼量也增加了很多,另外還呼叫了一個頭檔案。

這個小實驗最有意思的地方應該是透過串列埠監視器向鐳射發射器傳送訊號了,然後鐳射發射器將訊號以摩爾斯電碼的形式發射出來。我們直接閱讀這些由燈的亮滅組成的訊號可能有些困難,藉助一個摩爾斯電碼的表就會好很多。多試幾次,你就可以透過這個小實驗跟小夥伴進行一個簡單的通訊了,怎麼樣,是不是很有趣呢,快去試試吧~

標簽: 鐳射  ch  發射器  模組  電碼