2025年3月2日 星期日

[ATtiny85]-003_ATtiny85 單晶片的開發環境設定 (single ATtiny85 chip in Arduino IDE)

  [ATtiny85]-003_ATtiny85 單晶片的開發環境設定 (single ATtiny85 chip in Arduino IDE)


如果拿到以下的ATtiny85單晶片和可以拆卸拆卸晶片的開發板,就不能使用之前的方式,如果直接插電腦,電腦會認不到這個USB裝置,即使安裝了USB的驅動程式也依樣不能使用。


       



2025年2月19日 星期三

[ATtiny85]-002_ATtiny85 DigisPark開發環境 (ATtiny85 Digispark in Arduino IDE)

 [ATtiny85]-002_ATtiny85 DigisPark, Arduino IDE開發環境 (ATtiny85 Digispark in Arduino IDE)


雖然Arduino UNO使用起來很方便,但有時得專案很小,所以使用Arduino UNO就會顯得大材小用了,而且體積及價格也不是最佳方案,所以找了ATtiny85作為小專案的控制器就顯得非常合適。我們同樣使用Arduino IDE來作為ATtiny85 Digispark的開發環境,雖然網路上有許多教學,但是我試了好一陣子還是不能成功,最後整理出一個成功的方式,讓大家可以更容易地使用ATtiny85 Digispark及進行專案。


 步驟一:安裝驅動程式

1. 下載驅動程式:https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip

2. 將下載的驅動程式解壓縮。

如果是64位元的作業系統,執行Install drivers.exe

如果是32位元的作業系統,執行DPinst64.exe


 步驟二:新增開發版管理員網址

1. 開啟Arduino IDE,選擇〝檔案〞中的喜好設定




2. 點選其他開發版管理員網址,最右邊的圖示


3. 在此對話框中,貼上http://digistump.com/package_digistump_index.json。並按下確定。

4. 再按下確定,即可關閉此視窗。

5. 接下來,Arduino IDE便會下載並安裝相關的程式,但很不幸的是會出現下面的警告。看起來就像是無法連結到我們所設定的網址中,如果我們把這一行貼到網頁中搜尋,確實也是無法連結。如果這一步出現錯誤,好像就無法進行下一步動作了,但網路上似乎都是提供這個方法。

所以我又再找到了另一個開發版管理員網址,將剛剛的http://digistump.com/package_digistump_index.json刪除,改成下面的網址就沒問題了。
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

 


 

          

步驟三:安裝Board Pckage

1. 在Arduino IDE中,點選最左側的第二個圖示(開發板管理員),並在搜尋框中打上DIGI,便出現Digistump AVR Boards,並安裝。



   


    步驟四:選擇開發板型號

1. 工具 >>> 開發板>>> Digistump AVR Boards >>> Digispark (Dafault - 16.5MHz)

    
要注意的是,在這裡和一般Arduino的板子不同,使用ATTINT85的時候不用選擇連接埠(PORT),所以接上ATtiny85的時候,在工作管理員是看不到連接埠(COM PORT)的。


  步驟五:開始第一個程式

1. 先讓ATTINY85板上附帶的LED閃爍(一秒閃爍),測試一下是否可以正常燒錄到ATtiny85上。板上附帶的LED燈是接在P1上,所以程式如下,



2. 這裡要先注意一下,上傳程式時,先不要接上ATtiny85,等到下面的程式進度中出現Plug in device now...,再接上ATtiny85。 



3. 之後就可以看到燒錄進度繼續往下執行了,等完成後,應該就可以看到ATtiny85上面的紅色LED燈在一閃一閃了。




參考資料:

[1] https://projecthub.arduino.cc/alaspuresujay/use-an-attiny85-with-arduino-ide-d847c5

[2] https://ruten-proteus.blogspot.com/2015/03/attiny85-dev-board-guide.html

[3] https://sites.google.com/site/wenyunotify/13-attiny85/01-attiny85%E5%88%9D%E9%AB%94%E9%A9%97

[4] https://www.youtube.com/watch?v=JGf6P52LO5c&t=85s

2024年7月24日 星期三

[ATtiny85]-001_ATtiny85 Digispart初探 (Discove ATtiny85 Digispark)

[ATtiny85]-001_ATtiny85 Digispart初探 (Discove ATtiny85 Digispark)


ATtiny是Atmel公司推出的8 bit AVR微控制器,基本上有三種型號ATtiny25、ATtiny45及ATtiny85,這三種型號主要差在內部的記憶體大小,分別為2K Bytes、4K Bytes及8K Bytes,價格都很便宜,常見的有像下圖有USB接口的模組,一般稱為ATtiny85 Digispark,我也不太確定為什麼要叫這個名字,是不是第一個把ATtiny85做成這樣模組化形式的廠商是digispark?這樣的模組對於使用者來說相幫方便,因為可以直接接上USB來直接燒錄程式。當然也可以直接單買ATtiny85的晶片,直接與專案結合,如果是直接買ATtint85的晶片,以下的方式就會不適用,需要另外用ISP來燒錄程式到ATtiny85。



ATtiny85 IC pinout如下,可以看出雖然只有8個腳位,但是功能不少,有一般的GPIO、I2C、SPI等功能,但是這些功能只能擇一使用,所以這非常適合小專案使用。其他更詳細資料可以參考原廠規格書。



ATtiny85模組電路圖。



雖然Arduino UNO使用起來很方便,但有時得專案很小,所以使用Arduino UNO就會顯得大材小用了,而且體積及價格也不是最佳方案,所以找了ATtiny85作為小專案的控制器就顯得非常合適。我們同樣使用Arduino IDE來作為ATtiny85的開發環境,雖然網路上有許多教學,但是我試了好一陣子還是不能成功,最後整理出一個成功的方式,讓大家可以更容易地使用ATtiny85及進行專案。


 步驟一:安裝驅動程式

1. 下載驅動程式:https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip

2. 將下載的驅動程式解壓縮。

如果是64位元的作業系統,執行Install drivers.exe

如果是32位元的作業系統,執行DPinst64.exe


 步驟二:新增開發版管理員網址

1. 開啟Arduino IDE,選擇〝檔案〞中的喜好設定




2. 點選其他開發版管理員網址,最右邊的圖示


3. 在此對話框中,貼上http://digistump.com/package_digistump_index.json。並按下確定。

4. 再按下確定,即可關閉此視窗。

5. 接下來,Arduino IDE便會下載並安裝相關的程式,但很不幸的是會出現下面的警告。看起來就像是無法連結到我們所設定的網址中,如果我們把這一行貼到網頁中搜尋,確實也是無法連結。如果這一步出現錯誤,好像就無法進行下一步動作了,但網路上似乎都是提供這個方法。

所以我又再找到了另一個開發版管理員網址,將剛剛的http://digistump.com/package_digistump_index.json刪除,改成下面的網址就沒問題了。
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

 


 

          

步驟三:安裝Board Pckage

1. 在Arduino IDE中,點選最左側的第二個圖示(開發板管理員),並在搜尋框中打上DIGI,便出現Digistump AVR Boards,並安裝。



   


    步驟四:選擇開發板型號

1. 工具 >>> 開發板>>> Digistump AVR Boards >>> Digispark (Dafault - 16.5MHz)

    
要注意的是,在這裡和一般Arduino的板子不同,使用ATTINT85的時候不用選擇連接埠(PORT),所以接上ATtiny85的時候,在工作管理員是看不到連接埠(COM PORT)的。


  步驟五:開始第一個程式

1. 先讓ATTINY85板上附帶的LED閃爍(一秒閃爍),測試一下是否可以正常燒錄到ATtiny85上。板上附帶的LED燈是接在P1上,所以程式如下,



2. 這裡要先注意一下,上傳程式時,先不要接上ATtiny85,等到下面的程式進度中出現Plug in device now...,再接上ATtiny85。 



3. 之後就可以看到燒錄進度繼續往下執行了,等完成後,應該就可以看到ATtiny85上面的紅色LED燈在一閃一閃了。




參考資料:

[1] https://projecthub.arduino.cc/alaspuresujay/use-an-attiny85-with-arduino-ide-d847c5

[2] https://ruten-proteus.blogspot.com/2015/03/attiny85-dev-board-guide.html

[3] https://sites.google.com/site/wenyunotify/13-attiny85/01-attiny85%E5%88%9D%E9%AB%94%E9%A9%97

[4] https://www.youtube.com/watch?v=JGf6P52LO5c&t=85s

2023年2月5日 星期日

[Arduino]-004_Arduino UNO腳位說明

 [Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

[Arduino]-004_Arduino UNO腳位說明

2023年1月28日 星期六

[MSP430]-005_按鈕控制

 [MSP430]-005_按鈕控制








分析程式結構與語法,

1.  在“ // ”之後的程式或文字,編譯程式會自動略過這些內容,不會成為程式的一部分,所以可以用來作為程式的註解或是說明,日後可以快速地了解程式內容。要注意的是,這只是將一行的程式或是文字作為註解,當第二行也要成為註解文字,則在第二行也要打上“ // ”。


2.  “ /* ”及“ */ ”這兩個符號有別於“ // ”,是可以將整段文字或是程式作為註解,編譯程式會自動略過這些內容。


3. 

const  int  butonPin = PUSH2;

將PUSH2定義為buttonPin,這是將MSP-EXP430G2這張開發板板左下角的按鈕(板上印刷為S2)命名為buttonPin。這個PUSH2是一個特殊的名稱,特指板上的P1.3這個腳位,所以PUSH2這個名稱就不能再用了喔。


4. 

const  int  ledPin = GREEN_LED;

將GREEN_LED定義為ledPin,這是將板上綠色的LED燈定義成ledPin這個名稱。GREEN_LED是一個特殊的名稱,特指板上的P1.6這個腳位,所以GREEN_LED這個名稱就不能再用了喔。


5. 

int  buttonState = 0;

這裡命名一個資料結構為int的變數buttonStatus(按鈕狀態),且將此變數的初始值設為0。


6. 

void setup (){

        pinMode (ledPin, OUTPUT);

        pinMode (buttonPin, INPUT_PULLUP);

}

void setup () { },這段程式是固定寫法,也就是將一開機要設定參數寫在這個大括號中,也就是說這個大括號中的指令只會執行一次,除非再重開MSP430開發板一次。在這個大括號裡面有兩條指令:

pinMode(ledPin, OUTPUT);    這可以解讀成將ledPin這個腳位的腳位模式pinMode定義為輸出OUTPUT。

pinMode (buttonPin, INPUT_PULLUP);   這可以解讀成將buttonPin這個腳位的腳位模式pinMode定義為上拉形式的輸入(INPUT_PULLUP)。 


7.

void loop (){

        buttonState = digitalRead (buttonPin);

        if (buttonStat == HIGH) {

            digitalWrite (ledPin, HIGH);

}

        else {

            digitalWrite (ledPin, LOW);

    }

}


void loop () {}    這段程式是固定寫法,當執行完前面的void setup(){}之後就會執行此段程式,且如同它的名稱一樣,此段程式會一直執行,就像是一個迴圈(loop)一樣。


8.

buttonState = digitalRead (buttonPin);    可以解讀成用數位讀取(digitalRead)的方式來讀取buttonPin這個腳位的狀態,並將此狀態存入變數buttonState中。


9.

        if (buttonState == HIGH) {

            digitalWrite (ledPin, HIGH);

}    

這裡新學到一個語法,就是if的判斷式,小括號中的buttonState == HIGH,是判斷條件,如果符合這個條件,就會執行大括號中的指令digitalWritw(ledPin, HIGH)。如果不符合判斷條件,就會跳到else並執行其大括號的指令。

這段程式的意思是如果butonState(按鈕狀態)是HIGH(高電位),則將ledPin這個腳位寫成HIGH(高電位),ledPin如果是高電位,則這個綠色的LED燈就會亮。(由[MSP430-004]的實驗中知道當內建的LED腳位為高電位時,則LED會被點亮)。

在此說明,因為之前有一條指令pinMode (buttonPin, INPUT_PULLUP);  ,這是先將buttonPin設定成高電位,所以鬆開按鈕(不按下)的時候,是屬於高電位的狀態。


10.

        else {

            digitalWrite (ledPin, LOW);

    }

else之後執行的指令,可以想成與前面 if 的指令相反,也就是說剛剛 if 內的指令是,如果按鈕沒被按下,則LED會被點亮。else內的指令就表示如果按鈕被按下,則LED會熄滅。


程式分析完,可以上傳程式到MSP430開發板中,看看結果囉。