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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1185|回復: 0
打印 上一主題 下一主題
收起左側

Arduino紅外避障

[復制鏈接]
跳轉到指定樓層
樓主
ID:672963 發表于 2019-12-29 10:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <LiquidCrystal.h>
  2. // initialize the library by associatingany needed LCD interface pin
  3. // with the arduino pin number it isconnected to
  4. const int rs = 53, en = 49, d4 = 47, d5 =45, d6 = 43, d7 = 41.;
  5. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

  6. #define INA1 22  //TB6612FNG驅動模塊控制信號 共6個
  7. #define INA2 26
  8. #define INB1 24
  9. #define INB2 28
  10. #define INC1 30  //TB6612FNG驅動模塊控制信號 共6個
  11. #define INC2 34
  12. #define IND1 32
  13. #define IND2 36

  14. #define PWMA 8  //OC4C
  15. #define PWMB 7  //OC4B
  16. #define PWMC 6 //OC4C
  17. #define PWMD 5  //OC4B


  18. float Kp = 15, Ki = 0 , Kd = 0;
  19. static float error = 0, P = 0, I = 0, D =0, PID_value = 0;
  20. float previous_error = 0, previous_I = 0;
  21. static int initial_motor_speed = 140; //期望速度
  22. int left_motor_speed = 0;
  23. int right_motor_speed = 0;
  24. uint8_t irs = 0;
  25. static int a = 9 , b = 6, c = 5, d;

  26. static int key = 0;
  27. static int MERIDIAN = 0;
  28. static int WEFT = 0;
  29. static int meridian = 0;
  30. static int weft = 0;
  31. static int flag1 = 0;
  32. static int flag2  = 0;
  33. unsigned int aa;

  34. const int IR_PIN[] = {A0, A1, A2, A3, A4};//紅外對管引腳定義
  35. void read_ir_values(void);
  36. void calculate_pid(void);
  37. void motor_control(void);
  38. void LCD_PRINT(void);
  39. void ISRR1();
  40. void ISRL1();
  41. void STEP_FRONT(void);
  42. void STEP_RIGHT(void);
  43. void STEP_LEFT(void);
  44. void STEP_TOUCH(void);
  45. void Set_Pwm(int left_motor_speed, intright_motor_speed);

  46. void setup()
  47. {
  48. lcd.begin(16, 2);
  49. meridian = 0;
  50. weft = 0;
  51.   key= 0;
  52. pinMode(INA1, OUTPUT);        //TB6612控制引腳,控制電機1的方向,01為正轉,10為反轉
  53. pinMode(INA2, OUTPUT);         //TB6612控制引腳,
  54. pinMode(INB1, OUTPUT);       //TB6612控制引腳,控制電機1的方向,01為正轉,10為反轉
  55. pinMode(INB2, OUTPUT);         //TB6612控制引腳,
  56. pinMode(PWMA, OUTPUT);        //TB6612控制引腳,電機PWM
  57. pinMode(PWMB, OUTPUT);        //TB6612控制引腳,電機PWM
  58. pinMode(INC1, OUTPUT);       //TB6612控制引腳,控制電機1的方向,01為正轉,10為反轉
  59. pinMode(INC2, OUTPUT);         //TB6612控制引腳,
  60. pinMode(IND1, OUTPUT);       //TB6612控制引腳,控制電機1的方向,01為正轉,10為反轉
  61. pinMode(IND2, OUTPUT);         //TB6612控制引腳,
  62. pinMode(PWMC, OUTPUT);        //TB6612控制引腳,電機PWM
  63. pinMode(PWMD, OUTPUT);        //TB6612控制引腳,電機PWM
  64. pinMode(A0, 0);         //TB6612控制引腳,電機PWM
  65. pinMode(A1, 0);
  66. pinMode(A5, 0);         //TB6612控制引腳,電機PWM
  67. pinMode(A6, 0);
  68. pinMode(A8, 0);
  69. digitalWrite(14, 0);         //TB6612控制引腳拉低
  70. digitalWrite(15, 0);         //TB6612控制引腳拉低
  71. analogWrite(PWMA, 0);         //TB6612控制引腳拉低
  72. analogWrite(PWMB, 0);         //TB6612控制引腳拉低
  73. analogWrite(PWMC, 0);         //TB6612控制引腳拉低
  74. analogWrite(PWMD, 0);         //TB6612控制引腳拉低
  75.   for(int i = 0; i < 4; i++)
  76. {
  77. pinMode(IR_PIN[i], INPUT);
  78.   }
  79. Serial2.begin(9600);
  80. attachInterrupt(3, ISRL1, CHANGE); //開啟外部中斷2
  81. attachInterrupt(2, ISRR1, CHANGE); //開啟外部中斷3
  82. attachInterrupt(4, XIAN1, CHANGE); //開啟外部中斷2
  83. //attachInterrupt(5, XIAN2, CHANGE); //開啟外部中斷3
  84.   Kp= 20 , Ki = 0, Kd = 0, a = 9 , c = 5, initial_motor_speed = 60; //期望速度;
  85. }

  86. void loop()
  87. {
  88.   if((digitalRead(A0)==0)&&(digitalRead(A1)==0))//右
  89. {
  90.   Set_Pwm(-100,-100);
  91.   delay(500);
  92. }
  93. else if( digitalRead(A0)==0)//右
  94. {
  95.   Set_Pwm(-100, 100);
  96.   delay(500);
  97. }
  98.    else if( digitalRead(A1)==0)//右
  99. {
  100.   Set_Pwm(100, -100);
  101.   delay(500);
  102. }
  103. else
  104.   {
  105.   Set_Pwm(100, 100);
  106. }

  107. }
  108. void Set_Pwm(int motoA, int motoB)
  109. {
  110.   if(motoA > 0)
  111.   {
  112.    digitalWrite(INA1, HIGH),     digitalWrite(INA2, LOW);  //TB6612的電平控制
  113.    digitalWrite(INC1, HIGH),     digitalWrite(INC2, LOW);  //TB6612的電平控制
  114.   }
  115. else
  116.   {
  117.    digitalWrite(INA1, LOW),      digitalWrite(INA2, HIGH); //TB6612的電平控制
  118.    digitalWrite(INC1, LOW),      digitalWrite(INC2, HIGH); //TB6612的電平控制
  119.   }

  120.   if(motoB > 0)
  121.   {
  122.    digitalWrite(INB1, HIGH),     digitalWrite(INB2, LOW);  //TB6612的電平控制
  123.    digitalWrite(IND1, HIGH),     digitalWrite(IND2, LOW);  //TB6612的電平控制
  124.   }
  125. else
  126.   {
  127.    digitalWrite(INB1, LOW),      digitalWrite(INB2, HIGH); //TB6612的電平控制
  128.    digitalWrite(IND1, LOW),       digitalWrite(IND2, HIGH); //TB6612的電平控制
  129.   }

  130.   {
  131.    analogWrite(PWMA, abs(motoA)); //賦值給PWM寄存器
  132.    analogWrite(PWMB, abs(motoB)); //賦值給PWM寄存器
  133.     analogWrite(PWMC, abs(motoA)); //賦值給PWM寄存器
  134.    analogWrite(PWMD, abs(motoB)); //賦值給PWM寄存器
  135.   }
  136. }

  137. void ISRL1()//外部中斷2
  138. {
  139. flag1 = 1;
  140. }

  141. void ISRR1()//外部中斷3
  142. {
  143. flag1 = 1;
  144. }

  145. void XIAN1()//外部中斷2
  146. {
  147. flag1 = 2;
  148. }

  149. void XIAN2()//外部中斷3
  150. {
  151. flag1 = 2;
  152. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美亚洲 | 一级毛片在线看 | 国产视频在线观看一区二区三区 | 亚洲 欧美 日韩 在线 | 亚洲成人免费视频 | av片在线观看 | 亚洲人人 | 精品视频一区二区三区 | 国产精品久久久久久久久久 | 国产一级大片 | 国内精品伊人久久久久网站 | 视频在线观看一区二区 | 91黄色片免费看 | 99精品亚洲国产精品久久不卡 | 亚洲欧美一区二区在线观看 | 国产高潮好爽受不了了夜色 | 亚洲高清在线 | 国产区在线免费观看 | 亚洲精品www久久久久久广东 | 麻豆精品久久久 | av中文字幕在线观看 | 国产福利91精品 | 宅男噜噜噜66一区二区 | 国产一区日韩在线 | av一区二区三区 | 免费九九视频 | 国产人成精品一区二区三 | 盗摄精品av一区二区三区 | 国产精品久久 | 涩涩视频在线看 | 久久久www成人免费无遮挡大片 | 亚洲精品福利视频 | 免费观看毛片 | 在线成人av| 99久久精品免费看国产小宝寻花 | 国产yw851.c免费观看网站 | 国产精品久久久久久久久动漫 | 色综网 | 久久久久久久av | 亚洲视频一区在线观看 | 国产三级精品视频 |