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

標題: 基于arduino系統的pid循跡小車開發 [打印本頁]

作者: beoc    時間: 2025-7-3 10:26
標題: 基于arduino系統的pid循跡小車開發
該小車采用Arduino UNO主控制核心,通過傳感器傳來的信號,對當前環境作出判斷,最后對電機做出相應的動作。單片機通過紅外傳感器檢測場地黑線,從而控制電機驅動模塊,改變電機轉速來控制小車方向,從而達到循跡的目的
整個系統包括Arduino UNO主控板、電機驅動模塊L298n、循跡傳感器TCR5000L、鋰電池(建議是可充放電的)和車體。

循跡代碼:
float Kp , Ki = 0, Kd ;                         //pid彎道參數參數
float error = 0, P = 0, I = 0, D = 0, PID_value = 0;      //pid直道參數
float previous_error = 0, previous_I = 0;               //誤差值
static int initial_motor_speed = 70;      //此處值為0-255的值,受電池電壓影響,需要自己調試
int A[5] = {19, 18, 17, 16, 15};
double L, R;
float a, b, c, d, p, m;
int ena = 5;
int enb = 10;
void setup()
{
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  pinMode(ena, OUTPUT);
  pinMode(enb, OUTPUT);

  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
}

void loop()
{
Kp =3.25;
    Kd =30;               //此處的Kp和Kd也需使用者根據車的結構和既定軌跡調試進行調試,
  m = 0;
  a = 3, b = 6, c = 11, d = 18, p = 1;
  trac_run();
}
void trac()
{
  unsigned char temp = 0b00000;       //臨時變量用于新一輪采集
  for (int i = 0; i < 5; i++)
    temp |= digitalRead(A[ i]) << i;       //輪詢5個傳感器輸出,并將查詢結果轉換為編碼形式
  switch (temp)
  {
    case 0b01111: error = -d; break;
    case 0b00111: error = -c; break;
    case 0b10111: error = -b; break;
    case 0b10011: error = -a, m = 10; break;
    case 0b11011: error = 0, m = 20; break;
    case 0b11001: error = a, m = 10; break;
    case 0b11101: error = b; break;
    case 0b11100: error = c; break;
    case 0b11110: error = d; break;
    default: p = 1; break;
  }
}

void pid()
{
  P = error;
  I = I + error;
  D = error - previous_error;
  PID_value = (Kp * P) + (Ki * I) + (Kd * D);
  previous_error = error;
}

void trac_run()
{
  trac();
  pid();
  L = p * ( initial_motor_speed + PID_value + m);
  R = p * ( initial_motor_speed - PID_value + m);
  if (abs(L) > 255) L = L / abs(L) * 255;
  if (abs(R) > 255) R = R / abs(R) * 255;
  if (abs(L) == 0) L = 1;
  if (abs(R) == 0) R = 1;
  motor();
}

void motor()
{
  if (L > 0 && R > 0)
    analogWrite(enb, L),
                analogWrite(ena, R),
                motordir(0, 1, 1, 0);
  else if (- L > 0 && - R > 0)
    analogWrite(enb, -L),
                analogWrite(ena, -R),
                motordir(1, 0, 0, 1);
  else if (- L > 0 && R > 0)
    analogWrite(enb, -L),
                analogWrite(ena, R),
                motordir(0, 1, 0, 1);
  else if (L > 0 && -R > 0)
    analogWrite(enb, L),
                analogWrite(ena, -R),
                motordir(1, 0, 1, 0);
  else

    motordir(0, 0, 0, 0);
}

void motordir(int out1, int out2, int out3, int out4)   //輸入1 0,控制方向
{
  digitalWrite(6, out1);
  digitalWrite(7, out2);
  digitalWrite(8, out3);
  digitalWrite(9, out4);
}


圖片1.png (493.12 KB, 下載次數: 0)

整體圖

整體圖





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品毛片va一区二区三区 | 日日操夜夜爽 | 日本少妇一区二区 | 少妇视频在线观看 | 成人免费毛片网站 | 亚洲精品久久久久久久久 | 99国产在线视频 | 国 产 黄 色 大 片 | 不卡中文字幕 | 久草新视频 | 一区二区三区色 | 久久久久久国产 | 日本综合久久 | 日韩一区二区三区在线播放 | 欧美成视频| 黄色免费av | 成人国产在线 | 超碰一区二区 | 精品一区三区 | 亚洲成年人在线观看 | 黑人操亚洲女人 | 女人av在线 | 天天干视频 | 久久免费看 | 成人免费网站在线观看 | 日韩精品欧美 | 亚洲一区二区免费 | 一级片欧美 | 四虎影视在线播放 | 国产伦精品一区二区三区免费视频 | 日韩免费 | av观看网站 | 久草综合网 | 色哟哟入口国产精品 | 久久久免费看 | 国产精品久久久久久妇女6080 | 中文字幕+乱码+中文乱码91 | 久久久久久久久久国产 | 成人黄色一级片 | 国产成人精品网站 | 午夜在线视频观看日韩17c |