俞晗熠
【摘 要】鍵盤輸入文字仍然是計算機(jī)的常用輸入方法,用正確的指法實現(xiàn)盲打是提高鍵盤輸入速度的關(guān)鍵。從動作技能形成的理論出發(fā)設(shè)計的指法練習(xí)器能有效地使初學(xué)者養(yǎng)成良好的輸入習(xí)慣。用開源硬件Arduino 實現(xiàn)視覺和動覺同步刺激,幫助使用者克服操作模仿階段依賴視覺控制,動覺控制水平較低的狀況,加快技能的養(yǎng)成。
【關(guān)鍵詞】Arduino;鍵盤輸入;盲打;振動電機(jī)
中圖分類號: TP312.1文獻(xiàn)標(biāo)識碼: A文章編號: 2095-2457(2019)15-0025-002
DOI:10.19694/j.cnki.issn2095-2457.2019.15.012
Keyboard-Input Fingering Trainer Based on Arduino
YU Han-yi
(College of International Education, Beijing University of Chemical Engineering, Beijing 100029, China)
【Abstract】In regard to the computer field, keyboard input is still the most significance methods of inputting information. In order to improve the typing speed, we should master touch-typing by forming a good typing habit. In this paper, we use an Arduino to develop a keyboard-input Fingering Trainer, which can help beginners to overcome some difficulties and develop this skill more quickly.
【Key words】Arduino; Touch-typing; Keyboard input; Shaking motor
1 工作原理
雖然智能手機(jī)已經(jīng)普及,通過鍵盤輸入文字仍然是計算機(jī)的常用輸入方法。用正確的指法可以使眼睛不看鍵盤輸入,實現(xiàn)盲打來提高輸入速度。但這項技能的獲得也需要經(jīng)過一段時間的認(rèn)真練習(xí)。使用本文設(shè)計的指法練習(xí)器,能縮短練習(xí)時間,提高練習(xí)的有效性,快速地形成動作技能實現(xiàn)盲打。
在了鍵盤上鍵位的分布和基本的指法后,初學(xué)者練習(xí)輸入時,往往要依賴視覺,目光在屏幕與鍵盤之間不停游移。輸入速度慢,正確率低,容易感到疲勞、緊張從而產(chǎn)生厭倦使練習(xí)時間較短,甚至失去練習(xí)的興致。這是因為手指沒有形成正確的條件反射,動覺水平低,需要看按鍵的位置和當(dāng)前手指的位置,在目光的注視下?lián)翩I。離開目光的注視,很難確定用哪個手指和手指動作的幅度。對初學(xué)者來說,眼睛不看鍵盤的情況下,大腦對自己手指所處的位置和需要動作的幅度是模糊的,所以往往動作遲疑并且正確率差,也容易產(chǎn)生疲勞感。
本指法練習(xí)器使用一副半指手套,在手指位置分別放置有微型振動器。初學(xué)者戴上手套練習(xí)時,在屏幕上出現(xiàn)需要輸入的字母,相應(yīng)的手指就會產(chǎn)生輕微的振動。提示使用者用這個手指去擊鍵,屏幕上也會提示這個字符的鍵位。大腦接收到振動信號后,與視覺接收到的信息結(jié)合,能快速確定需要動作的手指,發(fā)出明確的擊鍵指令。縮短了反饋的路徑和時間,減少動作的遲疑,增加確定性。這樣眼睛看鍵盤的次數(shù)少了,跳過了一般初學(xué)者練習(xí)時眼睛看鍵盤頻率從多逐步減少且正確率較低這一階段,加快了正確的動作技能形成。
2 硬件實現(xiàn)
本練習(xí)器采用一塊Arduino UNO板作為控制板,負(fù)責(zé)把屏幕上要按動的字母鍵轉(zhuǎn)換成對應(yīng)的手指振動信號,振動元件使用手機(jī)上用的微型振動電機(jī),分別放置于手套除大拇指外的其余8個手指上,手套使用露出手指的半指手套,減少對打字的影響。
Arduino UNO是基于ATmega328P單片機(jī)的開發(fā)板,其同時具有14路數(shù)字輸入/輸出口和一個USB接口。因為在鍵盤輸入練習(xí)時,主要是除拇指外的8個手指需要反饋提示,所以在Arduino的數(shù)字端口連接8個振動電機(jī)。PC機(jī)作為上位機(jī)用串口與Arduino進(jìn)行通訊。
振動電機(jī)采用手機(jī)上常用的扁平馬達(dá),直徑約12MM,厚度約3.4MM,體積小,適合綴在手套上使用。它的輸入電壓范圍為2.5V-4.5V,額定電流約70mA,內(nèi)有偏心輪,電機(jī)轉(zhuǎn)動時會發(fā)出振動。串連一個整流二極管后可以直接連接到Arduino的數(shù)字端口。二級管有防止電機(jī)之間互相干擾和降壓的作用。雖然連接有8只振動電機(jī),但處于輪流工作狀態(tài),不是同時工作,所需的電流不大,可以不用放大電路。經(jīng)過實驗直接連接到Arduino的數(shù)字端口完全可以正常工作。Arduino板連接電腦的USB端口,由USB端口提供電源和與電腦通訊,不用連接其它外部電源,這樣設(shè)計電路很簡潔。
3 程序的設(shè)計
用VB編寫一個打字練習(xí)程序,為了提高用戶的練習(xí)趣味,可以設(shè)計成打字游戲的形式,但為了對需要擊打的鍵進(jìn)行即時提示,程序設(shè)計時注意要在屏幕上提示用戶當(dāng)前要輸入的是哪個字符,而不是同時出現(xiàn)多個字符,讓用戶可以自己選擇先輸入哪一個。
按照正確的輸入指法對要輸入的字符進(jìn)行分類,然后用MSComm 控件向作為下位機(jī)的Arduino傳遞字母。下位機(jī)接收到字母后,相應(yīng)的端口輸出一個高電平信號,帶動電機(jī)產(chǎn)生振動。按實驗的情況來看,對一個字符的振動提示,持續(xù)的時間0.2~0.3秒為宜。
Arduino中的程序用Arduino IDE 編寫,程序主要的功能是接收從PC機(jī)發(fā)送的信號,用接收到的字母控制相應(yīng)端口連接的電機(jī)適時工作。下面是接收字母“B”使6號端口電機(jī)振動的例子,其它端口的程序編寫相似。
void setup() {
Serial.begin(9600);//串口通信速率設(shè)置為9600bps
pinMode(6,OUTPUT); //6號數(shù)字口設(shè)置為輸出
}
void loop() {
digitalWrite(6,LOW); // 輸出低電平
if (Serial.available()>0 ) { ? //檢查串口緩存中是否有數(shù)據(jù)等待讀取
char serialData = Serial.read(); ? ? //讀取串口緩存中等待的字符
if(serialData=='B') //如果上位機(jī)發(fā)送字符'B'
{
digitalWrite(6,HIGH); //輸出高電平,電機(jī)振動
delay(200); ? ? ? ? ?//持續(xù)0.2秒
digitalWrite(6,LOW); //輸出低電平,停止振動
}
}
}
4 應(yīng)用效果
本文給出的基于Arduino設(shè)計的鍵盤輸入指法練習(xí)器,已經(jīng)提供給初學(xué)打字的小學(xué)生和部分指法不夠正確的初中生使用,反響很好。使用時在初步了解鍵位布局后就能逐步適應(yīng)不看鍵盤只感受手指上傳來的輕微振動來按鍵。按鍵速度加快了,正確率也大有提高。并且練習(xí)時不急躁,不亂按鍵,不易感到緊張疲勞。對短時間內(nèi)感受到自己的提高有成就感。
【參考文獻(xiàn)】
[1]李江全,張麗,岑紅蕾著.《Visual Basic串口通信與測控應(yīng)用技術(shù)實戰(zhàn)詳解 》,人民郵電出版社,2007.
[2]吳忠海.《用VB+Arduino開展創(chuàng)客式教學(xué)》,中小學(xué)信息技術(shù)教育,2016(2).