發表文章

目前顯示的是有「i2c」標籤的文章

Arduino使用EEPROM練習(2)

圖片
 由於EEPROM我已經事先寫入資料"0xAA"   Arduino使用EEPROM練習(1) 所以以下的練習就是Arduino一通電後,就到指定的位置讀出資料,內容預期因該是"0xAA" 相關參數 I2C address: 0x50 EEPROM address: 0x0 #include byte datain=0; void setup() {   Serial.begin(9600);   // put your setup code here, to run once:   Wire.begin();   Wire.beginTransmission(0x50); // transmit to device #0   Wire.write(0x00);   Wire.write(0x00);   Wire.endTransmission();  Wire.requestFrom(0x50,1);   if (Wire.available()) datain = Wire.read(); } void loop() {   // put your main code here, to run repeatedly:   Serial.print(datain,BIN);   Serial.print("\n");   delay(1000); } Arduino通電後擷取到SCA上的訊號

Arduino使用EEPROM練習(1)

圖片
   電子設備難免都會用到需要斷電後依然可以保存設定或記路蒐集到的資料的功能,例如你可能想做一個可以學習的萬用遙控器,你可能使用紅外線模組接收家中電視或冷氣的遙控器的訊號,將其訊號特徵"儲存"在某種非揮發性(non-volatile)的記憶元件中,然後等到要使用時根據儲存的資料控制紅外線模組打出一樣的訊號,   EEPROM就是其中一種非揮發性(non-volatile)的記憶元件,選擇要使用那種型號的EEPROM最簡單不外乎依照所需儲存的資料量以及該EEPROM的存取介面. 這個範例使用IC 24LC128, 所能儲存的資料為128Kbits (約16K Bytes),而傳輸介面採用I2C. 在電路的設計上SCL和SDA上我原先是沒又加1.5k的提升電組,我也確實看過有人沒加也是可以用,不過我自己使用時,如果沒加SCL上面的波形都是亂的,所以我後來還是加上了這對提升電組,有興趣的朋友可以參考這篇,作者有嘗試使用不同的大小的提升電組,然後觀察其波形的變化 http://www.gammon.com.au/forum/?id=10896 這個練習我將寫入和讀取分開為兩個獨立的程式,實驗步驟如下 1.電路製作 2.寫入程式 使用邏輯分析儀確認送出的波形如預期 3.讀取程式 使用邏輯分析儀確認送出及接收的波形如預期,並在程式中將讀取到的資料print在Arduino開發環境的"序列埠監控視窗" 電路製作: 焊的很醜....另外模組間的接線就直接用插線的(有人知道這種插線叫什麼,麻煩跟我講,thanks) 寫入程式: 這個程式會讓Arduino在開機後自動寫入一筆資料"0xAA"到EEPROM的位置0x00 相關參數 I2C address: 0x50 EEPROM address: 0x0 資料內容:0xAA #include <Wire.h> byte datain=0; void setup() {   Serial.begin(9600);   // put your setup code here, to run once:   Wi...