久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: AFMotor驅動步進電機庫文件下載(L293D庫文件) [打印本頁]

作者: 高靠譜    時間: 2018-6-12 12:06
標題: AFMotor驅動步進電機庫文件下載(L293D庫文件)
ARDUINO驅動步進電機需要庫文件 放到library里就好了



L293D Arduino單片機源程序如下:
  1. // Adafruit Motor shield library
  2. // copyright Adafruit Industries LLC, 2009
  3. // this code is public domain, enjoy!

  4. #if ARDUINO >= 100
  5.   #include "Arduino.h"
  6. #else
  7.   #include "WProgram.h"
  8. #endif
  9. #include <avr/io.h>

  10. #include "AFMotor.h"

  11. static uint8_t latch_state;

  12. #define MICROSTEPS 16  // 8, 16 & 32 are popular

  13. //#define MOTORDEBUG 1

  14. AFMotorController::AFMotorController(void) {
  15. }

  16. void AFMotorController::enable(void) {
  17.   // setup the latch
  18.   /*
  19.   LATCH_DDR |= _BV(LATCH);
  20.   ENABLE_DDR |= _BV(ENABLE);
  21.   CLK_DDR |= _BV(CLK);
  22.   SER_DDR |= _BV(SER);
  23.   */
  24.   pinMode(MOTORLATCH, OUTPUT);
  25.   pinMode(MOTORENABLE, OUTPUT);
  26.   pinMode(MOTORDATA, OUTPUT);
  27.   pinMode(MOTORCLK, OUTPUT);

  28.   latch_state = 0;

  29.   latch_tx();  // "reset"

  30.   //ENABLE_PORT &= ~_BV(ENABLE); // enable the chip outputs!
  31.   digitalWrite(MOTORENABLE, LOW);
  32. }


  33. void AFMotorController::latch_tx(void) {
  34.   uint8_t i;

  35.   //LATCH_PORT &= ~_BV(LATCH);
  36.   digitalWrite(MOTORLATCH, LOW);

  37.   //SER_PORT &= ~_BV(SER);
  38.   digitalWrite(MOTORDATA, LOW);

  39.   for (i=0; i<8; i++) {
  40.     //CLK_PORT &= ~_BV(CLK);
  41.     digitalWrite(MOTORCLK, LOW);

  42.     if (latch_state & _BV(7-i)) {
  43.       //SER_PORT |= _BV(SER);
  44.       digitalWrite(MOTORDATA, HIGH);
  45.     } else {
  46.       //SER_PORT &= ~_BV(SER);
  47.       digitalWrite(MOTORDATA, LOW);
  48.     }
  49.     //CLK_PORT |= _BV(CLK);
  50.     digitalWrite(MOTORCLK, HIGH);
  51.   }
  52.   //LATCH_PORT |= _BV(LATCH);
  53.   digitalWrite(MOTORLATCH, HIGH);
  54. }

  55. static AFMotorController MC;


  56. /******************************************
  57.                MOTORS
  58. ******************************************/
  59. inline void initPWM1(uint8_t freq) {
  60. #if defined(__AVR_ATmega8__) || \
  61.     defined(__AVR_ATmega48__) || \
  62.     defined(__AVR_ATmega88__) || \
  63.     defined(__AVR_ATmega168__) || \
  64.     defined(__AVR_ATmega328P__)
  65.     // use PWM from timer2A on PB3 (Arduino pin #11)
  66.     TCCR2A |= _BV(COM2A1) | _BV(WGM20) | _BV(WGM21); // fast PWM, turn on oc2a
  67.     TCCR2B = freq & 0x7;
  68.     OCR2A = 0;
  69. #elif defined(__AVR_ATmega1280__)
  70.     // on arduino mega, pin 11 is now PB5 (OC1A)
  71.     TCCR1A |= _BV(COM1A1) | _BV(WGM10); // fast PWM, turn on oc1a
  72.     TCCR1B = (freq & 0x7) | _BV(WGM12);
  73.     OCR1A = 0;
  74. #endif
  75.     pinMode(11, OUTPUT);
  76. }

  77. inline void setPWM1(uint8_t s) {
  78. #if defined(__AVR_ATmega8__) || \
  79.     defined(__AVR_ATmega48__) || \
  80.     defined(__AVR_ATmega88__) || \
  81.     defined(__AVR_ATmega168__) || \
  82.     defined(__AVR_ATmega328P__)
  83.     // use PWM from timer2A on PB3 (Arduino pin #11)
  84.     OCR2A = s;
  85. #elif defined(__AVR_ATmega1280__)
  86.     // on arduino mega, pin 11 is now PB5 (OC1A)
  87.     OCR1A = s;
  88. #endif
  89. }

  90. inline void initPWM2(uint8_t freq) {
  91. #if defined(__AVR_ATmega8__) || \
  92.     defined(__AVR_ATmega48__) || \
  93.     defined(__AVR_ATmega88__) || \
  94.     defined(__AVR_ATmega168__) || \
  95.     defined(__AVR_ATmega328P__)
  96.     // use PWM from timer2B (pin 3)
  97.     TCCR2A |= _BV(COM2B1) | _BV(WGM20) | _BV(WGM21); // fast PWM, turn on oc2b
  98.     TCCR2B = freq & 0x7;
  99.     OCR2B = 0;
  100. #elif defined(__AVR_ATmega1280__)
  101.     // on arduino mega, pin 3 is now PE5 (OC3C)
  102.     TCCR3A |= _BV(COM1C1) | _BV(WGM10); // fast PWM, turn on oc3c
  103.     TCCR3B = (freq & 0x7) | _BV(WGM12);
  104.     OCR3C = 0;
  105. #endif
  106.     pinMode(3, OUTPUT);
  107. }

  108. inline void setPWM2(uint8_t s) {
  109. #if defined(__AVR_ATmega8__) || \
  110.     defined(__AVR_ATmega48__) || \
  111.     defined(__AVR_ATmega88__) || \
  112.     defined(__AVR_ATmega168__) || \
  113.     defined(__AVR_ATmega328P__)
  114.     // use PWM from timer2A on PB3 (Arduino pin #11)
  115.     OCR2B = s;
  116. #elif defined(__AVR_ATmega1280__)
  117.     // on arduino mega, pin 11 is now PB5 (OC1A)
  118.     OCR3C = s;
  119. #endif
  120. }

  121. inline void initPWM3(uint8_t freq) {
  122. #if defined(__AVR_ATmega8__) || \
  123.     defined(__AVR_ATmega48__) || \
  124.     defined(__AVR_ATmega88__) || \
  125.     defined(__AVR_ATmega168__) || \
  126.     defined(__AVR_ATmega328P__)
  127.     // use PWM from timer0A / PD6 (pin 6)
  128.     TCCR0A |= _BV(COM0A1) | _BV(WGM00) | _BV(WGM01); // fast PWM, turn on OC0A
  129.     //TCCR0B = freq & 0x7;
  130.     OCR0A = 0;
  131. #elif defined(__AVR_ATmega1280__)
  132.     // on arduino mega, pin 6 is now PH3 (OC4A)
  133.     TCCR4A |= _BV(COM1A1) | _BV(WGM10); // fast PWM, turn on oc4a
  134.     TCCR4B = (freq & 0x7) | _BV(WGM12);
  135.     //TCCR4B = 1 | _BV(WGM12);
  136.     OCR4A = 0;
  137. #endif
  138.     pinMode(6, OUTPUT);
  139. }

  140. inline void setPWM3(uint8_t s) {
  141. #if defined(__AVR_ATmega8__) || \
  142.     defined(__AVR_ATmega48__) || \
  143.     defined(__AVR_ATmega88__) || \
  144.     defined(__AVR_ATmega168__) || \
  145.     defined(__AVR_ATmega328P__)
  146.     // use PWM from timer0A on PB3 (Arduino pin #6)
  147.     OCR0A = s;
  148. #elif defined(__AVR_ATmega1280__)
  149.     // on arduino mega, pin 6 is now PH3 (OC4A)
  150.     OCR4A = s;
  151. #endif
  152. }



  153. inline void initPWM4(uint8_t freq) {
  154. #if defined(__AVR_ATmega8__) || \
  155.     defined(__AVR_ATmega48__) || \
  156.     defined(__AVR_ATmega88__) || \
  157.     defined(__AVR_ATmega168__) || \
  158.     defined(__AVR_ATmega328P__)
  159.     // use PWM from timer0B / PD5 (pin 5)
  160.     TCCR0A |= _BV(COM0B1) | _BV(WGM00) | _BV(WGM01); // fast PWM, turn on oc0a
  161.     //TCCR0B = freq & 0x7;
  162.     OCR0B = 0;
  163. #elif defined(__AVR_ATmega1280__)
  164.     // on arduino mega, pin 5 is now PE3 (OC3A)
  165.     TCCR3A |= _BV(COM1A1) | _BV(WGM10); // fast PWM, turn on oc3a
  166.     TCCR3B = (freq & 0x7) | _BV(WGM12);
  167.     //TCCR4B = 1 | _BV(WGM12);
  168.     OCR3A = 0;
  169. #endif
  170.     pinMode(5, OUTPUT);
  171. }

  172. inline void setPWM4(uint8_t s) {
  173. #if defined(__AVR_ATmega8__) || \
  174.     defined(__AVR_ATmega48__) || \
  175.     defined(__AVR_ATmega88__) || \
  176.     defined(__AVR_ATmega168__) || \
  177.     defined(__AVR_ATmega328P__)
  178.     // use PWM from timer0A on PB3 (Arduino pin #6)
  179.     OCR0B = s;
  180. #elif defined(__AVR_ATmega1280__)
  181.     // on arduino mega, pin 6 is now PH3 (OC4A)
  182.     OCR3A = s;
  183. #endif
  184. }

  185. AF_DCMotor::AF_DCMotor(uint8_t num, uint8_t freq) {
  186.   motornum = num;
  187.   pwmfreq = freq;
  188. ……………………

  189. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
AFMotor.rar (7.38 KB, 下載次數: 180)





作者: 幸運石頭    時間: 2019-4-24 15:50
我準備在 用這個驅動在L293D文件里面驅動 28BYJ-48步進電機,不知道具體如何操作。
作者: wzh2007    時間: 2019-7-8 09:57
感謝分享
作者: renfuquan    時間: 2019-12-26 14:07
謝謝分享
作者: renfuquan    時間: 2019-12-26 14:08
謝謝分享
作者: 786548838    時間: 2020-2-10 17:00

我準備在 用這個驅動在L293D文件里面驅動 28BYJ-48步進電機,不知道具體如何操作。
作者: cfqqjdhdh    時間: 2020-2-23 15:35
好東西,我來下載了
作者: cfqqjdhdh    時間: 2020-2-23 15:35
好東西
作者: lsm720318    時間: 2020-10-20 11:51
謝謝,這個板就是占用的IO口太多




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本电影网站 | 国产在线视频99 | 91免费看片 | 国产黄色在线观看 | 日韩视频一区二区 | 免费福利视频一区二区三区 | 欧美亚洲综合久久 | 日韩精品 | 欧美999| 一区二区三区精品视频 | 一级片av | 亚洲一区二区网站 | 亚洲精品久久久一区二区三区 | 亚洲国产激情 | 玖玖玖在线观看 | 96av麻豆蜜桃一区二区 | 一区在线视频 | 波多野结衣精品在线 | 成人av高清在线观看 | 国产一级电影在线 | 新超碰97| 国产一区二区三区视频 | 国产999精品久久久久久绿帽 | 奇米超碰 | 精品国偷自产在线 | 亚洲一区二区三区免费在线观看 | 久久久久久成人 | 国产一级视频在线播放 | 日韩α片 | 国产一区二区三区免费观看视频 | 99精品国产一区二区青青牛奶 | 超碰人人人人 | 国产精品3区 | 综合国产| 就操在线 | 亚洲免费人成在线视频观看 | caoporn国产精品免费公开 | 日韩在线小视频 | 亚洲一二三区精品 | www.日韩欧美 | 91亚洲精选 |