特別註記:他們的套件包我沒有參與任何設計項目,單純自己拿到,看到有問題,想說幫忙處理,歡迎公司找我開發教具 XD )
因為使用翰林販售的三年級的套件中有一個實作內容是透過開發版,接收超音波感測器,並控制蜂鳴器以及LED產生反應的活動。而這其中,這張開發板上面的編號是LGT8F328P,因此激起了我的興趣,想說查看看這到底是什麼?結果發現他其實是一張仿ATmega328P的晶片,且有許多不同的版本及類型。下面就來分享一下他與一般的ATmega328P的差異,以及如何使用這張板子進行程式撰寫囉。
LGT8F328P
http://www.lgtic.com/upload/lgt8fx8p/LGT8FX8P_databook_v1.0.4.pdf
上面是他的官方Datasheet,這張板子有三種不同的封裝,而我手上這張板子拿到的是SSPO20的封裝類型,然後晶片上的雷射編碼被去除(也可能本來就沒打),但板子後面有寫他是哪顆IC。





而這張板子的工作電壓為1.8V~5.5V,因此可以在我們一般的供電環境下使用。我們可以直接用USB或是麵包板供電器等提供控制板需要的用電。其他在Arduino的使用在這張板子上也類似,因此下面我們就進入如何操作的環節吧?

LGT8F328P與Arduino的「軟體」設置
因為他不是Arduino他們家自己的產品,因此在使用上還是需要像ESP32系列,需要先安裝一些資料,讓Arduino IDE能有辦法跟LGT8F328P溝通。
這邊我以Arduino 1.0.6做示範(因為相對穩定,我電腦裡基本上都用這個版本)
我們可以先下載下面兩組資料
https://github.com/donly/Larduino_HSP#installation
https://github.com/RalphBacon/LGT8F328P-Arduino-Clone-Chip-ATMega328P
第一組資料可以直接從Arduino IDE裡面的 Sketch > Import Library > Add Library 點入後,點選下載下來的Zip檔,然後就會安裝進去了。
第二組資料則是點選C槽> Program File(x86) > Arduino > Hardware ,將第二組資料解壓縮後,Hardware中的資料丟入就OK了。
在接下來就是處理硬體的問題。
LGT8F328P與Arduino的「硬體」設置
一般我們使用Arduino或是其他開發板都是透過UART傳輸介面(通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter,通常稱為UART))進行傳輸,而我們如果買原廠的Arduino板,他會透過ATmega16U2的IC作為對USB的連接晶片,副廠的或是自製的則會使用CH340這顆IC協助連接;另外如果手上拿的是Nano或是leonardo,他們則可以直接跟USB溝通,這是一些板子上不同的差異。
而我們這顆LGT8F328P在使用上則可以有兩種方式使他可以跟電腦進行溝通,第一種是買「TTL轉USB」的轉換器,第二種是使用DIP的Arduino,透過Arduino上面的晶片協助溝通。

在使用上,參考以下的接線方式即可做傳輸
VCC <—> VCC
GND <—> GND
Rx <—> Tx
Tx. <—> Rx
DTR <—> DTR
然後因為現在主流的晶片都是CH340,因此需要再下載他的驅動程式(http://www.wch.cn/download/ch341ser_zip.html )
以上的操作都完成後,接下來我們就回到LGT8F328P這顆IC的部分。我們可以將「VCC, GND, Rx, Tx, DTR」五個孔位都焊上針腳或是24AWG的單芯線。


接下來將他與TTL連接上,接上電腦後就可以開始燒錄囉。
這邊進入Arduino IDE之後,在上排的功能列依照下面的位置選下去我們合適的開發板:Tool > Board> Arduino Pro or Pro mini (5V,16MHz)w/ATmega328。

選擇之後,接下來就可以正常燒錄程式囉。
那因為我拿到的板子裡面只有Blink,等於他的實際功能沒辦法發揮功效,因此這邊附上我自己幫翰林國中套件包寫的程式(特別註記:他們的套件包我沒有參與任何設計項目,單純自己拿到想說幫忙處理,歡迎公司找我開發教具 XD )
int trigPin = 8; // 超音波感測器 Trig腳接 LGT8F328P pin 8
int echoPin = 11; //超音波感測器 Echo 腳接 LGT8F328P pin 11
int speakerpin = 3; //蜂鳴器訊號腳位(S)接 LGT8F328P pin 3
long duration, cm ; //宣告計算距離時,需要用到的兩個實數
void setup() {
Serial.begin (9600); //設定序列埠監控視窗 (Serial Monitor) 和 Arduino資料傳輸速率為 9600 bps (Bits Per Second)
pinMode(trigPin, OUTPUT); //啟動距離感測器Trig腳,射出超音波
pinMode(echoPin, INPUT); //超音波被障礙物反射後,用Echo讀取超音波
pinMode(speakerpin, OUTPUT); //對蜂鳴器送出PWM,使其鳴叫
}
void loop()
{ //程式計算出距離值 cm
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = (duration/2) / 29.1;
Serial.print(cm); //印出距離值 cm 在序列埠監控顯示器 單位公分
Serial.println(" cm");
if (cm <= 5) { //距離小於5公分,蜂鳴器一直叫
tone(speakerpin, 1000, 100);
delay (20);
}
if (cm > 5 && cm <= 15) { //距離介於5到15公分,蜂鳴器斷斷續續叫,每次0.1秒
tone(speakerpin, 1000, 100);
delay (100);
}
}
以上,供大家做參考唷。