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