娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | PCA9685 PWM舵機驅動板16路模塊 IIC接口

發布者:夢中的額吉 來源: 51hei關鍵字:PCA9685  PWM舵機  驅動板  IIC接口 手機看文章 掃描二維碼
隨時隨地手機看文章

16路模塊 PWM舵機驅動板 控制器 機器人 IIC接口 使用說明書

AdafruitPWMServoDriverLibrary單片機程序如下:

/***************************************************

  This is a library for our Adafruit 16-channel PWM & Servo driver


  Pick one up today in the adafruit shop!


  These displays use I2C to communicate, 2 pins are required to  

  interface. For Arduino UNOs, thats SCL -> Analog 5, SDA -> Analog 4


  Adafruit invests time and resources providing this open source code,

  please support Adafruit and open-source hardware by purchasing

  products from Adafruit!


  Written by Limor Fried/Ladyada for Adafruit Industries.  

  BSD license, all text above must be included in any redistribution

****************************************************/


#include

#include

#if defined(__AVR__)

#define WIRE Wire

#elif defined(CORE_TEENSY) // Teensy boards

#define WIRE Wire

#else // Arduino Due

#define WIRE Wire1

#endif


// Set to true to print some debug messages, or false to disable them.

#define ENABLE_DEBUG_OUTPUT true


Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(uint8_t addr) {

  _i2caddr = addr;

}


void Adafruit_PWMServoDriver::begin(void) {

WIRE.begin();

reset();

}



void Adafruit_PWMServoDriver::reset(void) {

write8(PCA9685_MODE1, 0x0);

}


void Adafruit_PWMServoDriver::setPWMFreq(float freq) {

  //Serial.print("Attempting to set freq ");

  //Serial.println(freq);

  freq *= 0.9;  // Correct for overshoot in the frequency setting (see issue #11).

  float prescaleval = 25000000;

  prescaleval /= 4096;

  prescaleval /= freq;

  prescaleval -= 1;

  if (ENABLE_DEBUG_OUTPUT) {

    Serial.print("Estimated pre-scale: "); Serial.println(prescaleval);

  }

  uint8_t prescale = floor(prescaleval + 0.5);

  if (ENABLE_DEBUG_OUTPUT) {

    Serial.print("Final pre-scale: "); Serial.println(prescale);

  }

  

  uint8_t oldmode = read8(PCA9685_MODE1);

  uint8_t newmode = (oldmode&0x7F) | 0x10; // sleep

  write8(PCA9685_MODE1, newmode); // go to sleep

  write8(PCA9685_PRESCALE, prescale); // set the prescaler

  write8(PCA9685_MODE1, oldmode);

  delay(5);

  write8(PCA9685_MODE1, oldmode | 0xa1);  //  This sets the MODE1 register to turn on auto increment.

                                          // This is why the beginTransmission below was not working.

  //  Serial.print("Mode now 0x"); Serial.println(read8(PCA9685_MODE1), HEX);

}


void Adafruit_PWMServoDriver::setPWM(uint8_t num, uint16_t on, uint16_t off) {

  //Serial.print("Setting PWM "); Serial.print(num); Serial.print(": "); Serial.print(on); Serial.print("->"); Serial.println(off);


  WIRE.beginTransmission(_i2caddr);

  WIRE.write(LED0_ON_L+4*num);

  WIRE.write(on);

  WIRE.write(on>>8);

  WIRE.write(off);

  WIRE.write(off>>8);

  WIRE.endTransmission();

}


// Sets pin without having to deal with on/off tick placement and properly handles

// a zero value as completely off.  Optional invert parameter supports inverting

// the pulse for sinking to ground.  Val should be a value from 0 to 4095 inclusive.

void Adafruit_PWMServoDriver::setPin(uint8_t num, uint16_t val, bool invert)

{

  // Clamp value between 0 and 4095 inclusive.

  val = min(val, 4095);

  if (invert) {

    if (val == 0) {

      // Special value for signal fully on.

      setPWM(num, 4096, 0);

    }

    else if (val == 4095) {

      // Special value for signal fully off.

      setPWM(num, 0, 4096);

    }

    else {

      setPWM(num, 0, 4095-val);

    }

  }

  else {

    if (val == 4095) {

      // Special value for signal fully on.

      setPWM(num, 4096, 0);

    }

    else if (val == 0) {

      // Special value for signal fully off.

      setPWM(num, 0, 4096);

    }

    else {

      setPWM(num, 0, val);

    }

  }

}


uint8_t Adafruit_PWMServoDriver::read8(uint8_t addr) {

  WIRE.beginTransmission(_i2caddr);

  WIRE.write(addr);

  WIRE.endTransmission();


  WIRE.requestFrom((uint8_t)_i2caddr, (uint8_t)1);

  return WIRE.read();

}


void Adafruit_PWMServoDriver::write8(uint8_t addr, uint8_t d) {

  WIRE.beginTransmission(_i2caddr);

  WIRE.write(addr);

  WIRE.write(d);

  WIRE.endTransmission();

}


關鍵字:PCA9685  PWM舵機  驅動板  IIC接口 引用地址:PCA9685 PWM舵機驅動板16路模塊 IIC接口

上一篇:bascom avr版熱電偶TCK+AD8495+ADC測溫
下一篇:實現AVR單片機芯片程序自刷 USB_Flash_BootLoader HID制作過程

推薦閱讀

LG顯示器廣州8.5代有機發光二極管(OLED)工廠下個月開始搬入設備。由于施工工作即將完成,正在協調早期訂購的設備到貨時間表。由于韓國政府和中國政府的批準延遲,生產計劃推遲了三個月,但目前正在準備并未再有任何問題。 根據業界9月5日消息,LG Display計劃于10月開始將其設備運往廣州的8.5G OLED工廠。廣州工廠啟動目標時間原本是2019年上半年,但...
  據外媒報道,科技公司Rikatec推出了第四款與公司同名的工業設備Rikatec,可幫助打造汽車故障探測信息系統。該公司會利用大量的數據和機器學習機制探測車輛故障、提供有關車輛磨損的信息,并為保險公司和金融公司創建駕駛員檔案和評分。  Rikatec設備適用于所有品牌的汽車,可以探測車輛故障,而且一旦探測到故障,就會發送有關車輛哪個部位發生故障...
目前,雖然折疊屏智能手機的選擇并不多,但該領域的競爭日趨白熱化。作為領頭羊的三星,對保持在該領域的領先地位依然充滿信心。因此,其下一步行動是使 Galaxy Z Fold 2 的產量翻一番。 該公司去年生產了約 40 萬臺 Galaxy Fold 折疊屏手機,而目前他們的目標是生產 70 萬至 80 萬臺 Galaxy Z Fold 2 手機。根據一份新發布的報告指出...
機器人的應用能夠減少職業病嗎?在傳統焊接工作中,焊接工人會直接與有害物質直接接觸,長時間會出現職業病,不僅會危害人身健康,還會導致經濟損失,焊接機器人的應用可以提高焊接作業的自動化水平,在焊接工作中,焊接機器人可以代替人工進行焊接生產,焊接機器人的應用可以減少職業病,帶您了解。 焊接機器人能夠實現自動化焊接,在焊接過程中代替人...

史海拾趣

問答坊 | AI 解惑

寬帶低噪聲放大器的計算機輔助設計

    【摘要7主要討論了徽波通信來統用寬帶低嗓聲放大器的CAA與CAD的原理與方法.介紹了利用CAA與CAD軟件技術,在復合介質墓片上實現了7. 7^-8. 2 GHz頻段上的寬帶放大器。其增益G >20 dB,帶內起伏DG(士1 dB,嗓聲系數NF<=2.5dB, ...…

查看全部問答∨

感光電路板制作經驗之談

記得第一次蝕電路板時,是用毛筆,習毛和油漆,做了近一星期才做出來,那時感覺很了不起. 相信有很多電子愛好者會有很多相同的經歷. 初次接觸感光電路板是在2003年,進了一家開關電源廠,看到一位工程師用感光板曬板.當是真的不相信自已的眼睛. ...…

查看全部問答∨

GCC轉換為類成員的指針的另一方法

GCC轉換為類成員的指針問題: 今天找到另一種方法,使用memcpy_P而不用pgm_read_word,將其轉換為類成員的指針,測試通過。 #include <avr/io.h> #include <avr/pgmspace.h> #include <compat/ina90.h> class KeyObj ; typ ...…

查看全部問答∨

初學PIC單片機

想知道學PIC單片機需要什么軟件? 在網上查的是需要: 1、MPLABV8.43(從microchip網站下的) 2、PICC編譯器(C語言編譯器) 3、PIC單片機單片機燒寫器(具體軟件暫時沒查到)    有精通PIC單片機的高手請給予一下指點,其中第二,第 ...…

查看全部問答∨

gogogo

[url=http://www.artgoin.com][/url]愛藝購,藝術的天堂,藝術的寶庫,愛好藝術的人都該去看看,獲取能找到一件稀世珍寶歐…

查看全部問答∨

關于加速計和陀螺儀的測試

各位高手有沒有測試過加速計和陀螺儀這兩顆的功能阿,三軸加速計有X,Y,Z三個電壓輸出,都是經過其內部的AD轉換后輸出的,不知道這三個方向上的電壓是怎么變化的,是有加速度的時候變化呢,還是位置改變了變化啊? 陀螺儀有X,Y兩個電壓輸出,也是 ...…

查看全部問答∨

求職: 請問有沒有人需要高級WINCE工程師--限深圳地區!

求職: 請問有沒有人需要高級WINCE驅動工程師--限深圳地區! 如有,請如下EMAIL聯系 lumit_hu@126.com…

查看全部問答∨

英蓓特STM32ARM開發板的初級改造(有圖)

上周在研討會上買了英蓓特的開發板,試了下,感覺有幾個地方不爽,所以就自己動手DIY了:1)USB供電問題,必須插2條USB線,可憐我的本本一共才3個,鼠標用了一個,被他全占了,其它USB-232就沒法用了;2)板子附帶的1602沒有接背光,而實際這 ...…

查看全部問答∨

關於LMF232H5QD的UART問題

各位高手大家好,小妹我用此板子的UART出了一點問題,大家可以幫幫我嗎? 感激不盡 問題是這樣的,我開啟了八個UART,為了使輸入資料可以做辨識,個別在UART4跟UART5的地方 加了三個#字號跟一個通道編號 例如:UART4是  ###Edata 這樣 ...…

查看全部問答∨

今年會出功率放大類的嗎?

本帖最后由 paulhyde 于 2014-9-15 03:16 編輯 今年會出功率放大類的嗎    …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 开封县| 华坪县| 巴中市| 正镶白旗| 平原县| 西宁市| 寿宁县| 浙江省| 和硕县| 左权县| 普陀区| 东台市| 濮阳县| 芒康县| 双柏县| 平山县| 驻马店市| 阳东县| 汉川市| 吴川市| 开原市| 辽中县| 随州市| 定边县| 靖安县| 郑州市| 万盛区| 鹤庆县| 临沭县| 临潭县| 弋阳县| 根河市| 洱源县| 盐城市| 安国市| 杭锦后旗| 兰考县| 通州区| 镇赉县| 望城县| 利津县|