這是一個(gè)小的8位灰色碼頭旋轉(zhuǎn)位置傳感器,提供128個(gè)獨(dú)特的位置。它使用單個(gè)編碼器軌道進(jìn)行管理,其中8個(gè)觸點(diǎn)間隔均勻。該“數(shù)字旋鈕”編碼器可用于控制您的arduino項(xiàng)目,它也可以用于壽命有限的運(yùn)動(dòng)控制系統(tǒng)。附件內(nèi)容分享的代碼是針對(duì)Arduino UNO R3開發(fā)的。它應(yīng)該在任何Arduino上工作。該代碼目前支持MCP23008,PCF8574和PCF8574A I2C擴(kuò)展器。
128位高分辨率絕對(duì)編碼器實(shí)物展示:
使用以下地址選擇這些
- 0x00 - 0x07 MCP23008地址0x20-0x27。(這與較早的庫修訂版向后兼容)
- 0x20 - 0x27 PCF8574
- 0x38 - 0x3F PCF8574A
請(qǐng)注意,MCP23008和PCF8574芯片使用相同的i2c地址范圍。許多LCD背包也使用這些芯片之一。在同一總線上混合所有這些時(shí)要小心,以避免重復(fù)地址。為了進(jìn)一步混淆事物,原始I2C地址具有作為讀/寫信號(hào)的最低位,因此一些文檔(如某些PCF8574數(shù)據(jù)表)將參考0x40和0x70,0x20和0x38向左移位一位。
安裝
封閉的示例草圖ACE128test通過任意一個(gè)和I2C背包驅(qū)動(dòng)2x16顯示,或直接從Arduino驅(qū)動(dòng),具體取決于您是否注釋了LCD_I2C宏。
公共方法
用法
請(qǐng)參見ACE128測(cè)試示例。
- 包括您需要的所有編碼器映射(見下文),以匹配ACE單元的引腳序列。
- 使用ACE128構(gòu)造函數(shù)聲明所有ACE128對(duì)象。它需要I2C地址和指向編碼器映射的指針??蛇x的第三個(gè)整數(shù)可以取一個(gè)正整數(shù)來顯示在eeprom中存儲(chǔ)零信息的位置。允許三個(gè)字節(jié)。
- 從setup()調(diào)用每個(gè)ACE128對(duì)象的begin方法。這將使用eeprom設(shè)置或回退將當(dāng)前位置設(shè)置為零。
- pos()和upos()方法返回相對(duì)于邏輯零位置的位置,而不是由機(jī)械任意位置的編碼器返回的零位置。當(dāng)它滾動(dòng)時(shí),轉(zhuǎn)動(dòng)被存儲(chǔ)以供mpos使用并保存在eeprom中
- 每循環(huán)一次(),調(diào)用pos(),upos()或mpos()并將值存儲(chǔ)在一個(gè)變量中。訪問i2c總線需要一些周期,所以每次要引用它時(shí)都不要調(diào)用pos()。
- 有三個(gè)設(shè)置功能
- setZero() - 將當(dāng)前位置設(shè)置為零(不更新多圈)
- setZero(int) - 將零點(diǎn)設(shè)置為給定的0-127數(shù)字
- setMpos(int) - 將當(dāng)前位置設(shè)置為此多圈值
編碼器地圖
該庫帶有各種編碼器映射,可以在ACE和IO擴(kuò)展器之間實(shí)現(xiàn)引腳的不同接線。這些由包含的make_encodermap示例草圖生成。生成自定義編碼器圖:
- 編輯make_encodermap草圖
- 更改pinOrder數(shù)組以匹配您的接線
- 更改pinString以匹配您的接線
- 將草圖加載到Arduino
- 將串行監(jiān)視器輸出復(fù)制到ACE128文件夾中的新.h文件。
12345678用于“逆時(shí)針上升”接線,與數(shù)據(jù)表編號(hào)相匹配,建議進(jìn)行面包板測(cè)試。