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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3693|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Arduino智能車入門程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:336773 發(fā)表于 2018-5-23 19:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//引腳定義
const int left_Forward_PWM_Pin  = 3; //左電機(jī)正轉(zhuǎn)控制引腳
const int left_Backward_PWM_pin = 5; //左電機(jī)反轉(zhuǎn)控制引腳

const int right_Forward_PWM_Pin  = 6; //右電機(jī)正轉(zhuǎn)控制引腳
const int right_Backward_PWM_pin = 9; //右電機(jī)正轉(zhuǎn)控制引腳

const int AD_Left_Pin  = A0; //左電磁傳感器AD引腳
const int AD_Right_Pin = A1; //右電磁傳感器AD引腳

int pos; //傳感器位置變量
int speed_Forward,left_speed_Forward,right_speed_Forward; //中心速度占空比、左、右電機(jī)占空比

void setup()
{
  Serial.begin(9600);  //串口設(shè)置,用于輸出,波特率9600

  pinMode(left_Forward_PWM_Pin, OUTPUT);  //配置各電機(jī)控制引腳為輸出
  pinMode(left_Backward_PWM_pin, OUTPUT);
  pinMode(right_Forward_PWM_Pin, OUTPUT);
  pinMode(right_Backward_PWM_pin, OUTPUT);

  analogWrite(left_Forward_PWM_Pin, 0);   //初始化各電機(jī)正轉(zhuǎn)占空比, 0為停止
  analogWrite(left_Backward_PWM_pin, 0);
  analogWrite(right_Forward_PWM_Pin, 0);
  analogWrite(right_Backward_PWM_pin, 0);
}

void loop()
{
  DirectionControl(); //方向檢測

  //根據(jù)方向量pos控制左右輪差速,當(dāng)pos=0時(shí)小車直走,pos<0時(shí)左拐,pos>0時(shí)右拐
  left_speed_Forward  = speed_Forward + pos ;     //左輪
  right_speed_Forward = speed_Forward - pos + 10; //右輪, +10 為左右輪固有速度差補(bǔ)償

  //限制電機(jī)PWM控制輸出的極值(0<PWM<255)
  if(left_speed_Forward<20){left_speed_Forward=20;}
  if(left_speed_Forward>220){left_speed_Forward=220;}
  if(right_speed_Forward<20){right_speed_Forward=20;}
  if(right_speed_Forward>220){right_speed_Forward=220;}

  //設(shè)置電機(jī)正轉(zhuǎn)占空比
  analogWrite(left_Forward_PWM_Pin, left_speed_Forward);    //左電機(jī)
  analogWrite(right_Forward_PWM_Pin, right_speed_Forward);  //左電機(jī)

  delay(33); //延時(shí)33ms
}

void DirectionControl() //方向檢測函數(shù)
{
  static int AD_Left, AD_Right = 0; //左右電磁傳感器AD值
  static float posTemp; //位置臨時(shí)變量,為了提高精度,采用浮點(diǎn)型
  static float error,last_error=0.0;

  AD_Left  = analogRead(AD_Left_Pin);   //讀左電磁傳感器AD值
  AD_Right = analogRead(AD_Right_Pin);  //讀右電磁傳感器AD值H
  Serial.print(AD_Left); //串口輸出,調(diào)試用
  Serial.print(",");
  Serial.println(AD_Right);

  if(AD_Left+AD_Right>50) //當(dāng)左右電磁傳感器AD值之和較大時(shí)
  //說明:如果左右電磁傳感器AD值之和比較小,則說明傳感器偏離太遠(yuǎn),保持之前的舵機(jī)角度
  {
    error=AD_Left-AD_Right;
    if(last_error==0)
    last_error=error;
    posTemp=(last_error+error)/2;
    last_error=error;
    posTemp /=(AD_Left+AD_Right); //除以和值,為相對(duì)位置
    posTemp = 0 - posTemp*145; //轉(zhuǎn)換成電磁線位置控制占空比(浮點(diǎn)),這里 *100 為比例值,值越大轉(zhuǎn)向越靈敏
    pos = int(posTemp); //位置值取整

    speed_Forward = 265; //正常前進(jìn)速度
  }
  else if(AD_Left+AD_Right<10) //如果當(dāng)左右電磁傳感器AD值之和特別小,則說明已經(jīng)沖出賽道較遠(yuǎn),改為蝸牛速
  {
    speed_Forward = 0;  //蝸牛速
  }
}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-5-24 06:01 | 只看該作者
原理圖能分享一下嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产男人的天堂 | 国产91黄色 | 欧美精品一区在线 | 国产一级在线 | 麻豆久久久久久久久久 | 综合久久久 | 一级毛片视频 | 亚洲国产成人精品女人久久久 | 久久久久亚洲 | 精品国产一区二区三区久久久蜜月 | 中文字幕久久精品 | 精品成人佐山爱一区二区 | 一区二区三区四区视频 | 国产一区二区三区精品久久久 | 久久久久九九九女人毛片 | 日本不卡一区二区三区在线观看 | 国产精品福利在线观看 | 亚洲成人av在线 | 亚洲三级免费看 | 国产精品一区二区无线 | 国产精品视频在线播放 | 亚洲区一区二 | 激情一区 | 91视频网址| 亚洲精品中文在线 | 日日操夜夜操天天操 | 欧美一级欧美三级在线观看 | 一级毛片色一级 | 日韩av资源站 | 99热成人在线 | 国产精品无 | 久久精品国产99国产精品 | 日韩精品一区二区三区免费观看 | 久久69精品久久久久久久电影好 | 久www| 亚洲成人精品国产 | 韩日一区| 在线播放中文 | 国产探花在线精品一区二区 | 成年男女免费视频网站 | 一区二区三区四区av |