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

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

QQ登錄

只需一步,快速開始

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

Arduino智能小車控制 步進(jìn)電機(jī) 花式運(yùn)動(dòng) 紅外遙控程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
里面包含以下3個(gè)程序
步進(jìn)電機(jī)
花式運(yùn)動(dòng)
紅外遙控


步進(jìn)電機(jī)的驅(qū)動(dòng)需要LN298步進(jìn)電機(jī)驅(qū)動(dòng)器
智能小車的花式運(yùn)動(dòng)
紅外遙控智能小車做相對(duì)應(yīng)的運(yùn)動(dòng)

下面是紅外遙控的代碼:

  1. #include <IRremote.h>//包含紅外庫(kù)
  2. int RECV_PIN = A4;//端口聲明
  3. IRrecv irrecv(RECV_PIN);
  4. decode_results results;//結(jié)構(gòu)聲明
  5. int on = 0;//標(biāo)志位
  6. unsigned long last = millis();

  7. long run_car = 0x00FF18E7;//按鍵2
  8. long back_car = 0x00FF4AB5;//按鍵8
  9. long left_car = 0x00FF10EF;//按鍵4
  10. long right_car = 0x00FF5AA5;//按鍵6
  11. long stop_car = 0x00FF38C7;//按鍵5
  12. long left_turn = 0x00ff30CF;//按鍵1
  13. long right_turn = 0x00FF7A85;//按鍵3
  14. //==============================
  15. int Left_motor_back=8;     //左電機(jī)后退(IN1)
  16. int Left_motor_go=9;     //左電機(jī)前進(jìn)(IN2)

  17. int Right_motor_go=10;    // 右電機(jī)前進(jìn)(IN3)
  18. int Right_motor_back=11;    // 右電機(jī)后退(IN4)
  19. int led1=13;
  20. int led2=12;
  21. void setup()
  22. {
  23.   //初始化電機(jī)驅(qū)動(dòng)IO為輸出方式
  24.   pinMode(led1,OUTPUT);
  25.   pinMode(led2,OUTPUT);
  26.   pinMode(Left_motor_go,OUTPUT); // PIN 8 (PWM)
  27.   pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
  28.   pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM)
  29.   pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)
  30.   pinMode(13, OUTPUT);////端口模式,輸出
  31.   Serial.begin(9600);        //波特率9600
  32.   irrecv.enableIRIn(); // Start the receiver
  33. }
  34. void run()     // 前進(jìn)
  35. {
  36.   digitalWrite(Right_motor_go,HIGH);  // 右電機(jī)前進(jìn)
  37.   digitalWrite(Right_motor_back,LOW);     
  38.   //analogWrite(Right_motor_go,200);//PWM比例0~255調(diào)速,左右輪差異略增減
  39.   //analogWrite(Right_motor_back,0);
  40.   digitalWrite(Left_motor_go,HIGH);  // 左電機(jī)前進(jìn)
  41.   digitalWrite(Left_motor_back,LOW);
  42.   //analogWrite(Left_motor_go,200);//PWM比例0~255調(diào)速,左右輪差異略增減
  43.   //analogWrite(Left_motor_back,0);
  44.   //delay(time * 100);   //執(zhí)行時(shí)間,可以調(diào)整  
  45. }

  46. void brake()         //剎車,停車
  47. {   digitalWrite(led1,HIGH);
  48.      
  49.      digitalWrite(led2,HIGH);
  50.      delay(1000);
  51.      digitalWrite(led1,LOW);
  52.      digitalWrite(led2,LOW);
  53.      
  54.   digitalWrite(Right_motor_go,LOW);
  55.   digitalWrite(Right_motor_back,LOW);
  56.   digitalWrite(Left_motor_go,LOW);
  57.   digitalWrite(Left_motor_back,LOW);
  58.   //delay(time * 100);//執(zhí)行時(shí)間,可以調(diào)整  
  59. }

  60. void left()         //左轉(zhuǎn)(左輪不動(dòng),右輪前進(jìn))
  61. {    digitalWrite(led2,HIGH);
  62.       delay(500);
  63.       digitalWrite(led2,LOW);
  64.       delay(500);
  65.   digitalWrite(Right_motor_go,HIGH);        // 右電機(jī)前進(jìn)
  66.   digitalWrite(Right_motor_back,LOW);
  67.   //analogWrite(Right_motor_go,200);
  68.   //analogWrite(Right_motor_back,0);//PWM比例0~255調(diào)速
  69.   digitalWrite(Left_motor_go,LOW);   //左輪不動(dòng)
  70.   digitalWrite(Left_motor_back,LOW);
  71.   //analogWrite(Left_motor_go,0);
  72.   //analogWrite(Left_motor_back,0);//PWM比例0~255調(diào)速
  73.   //delay(time * 100);        //執(zhí)行時(shí)間,可以調(diào)整  
  74. }

  75. void spin_left()         //左轉(zhuǎn)(左輪后退,右輪前進(jìn))
  76. {
  77.   digitalWrite(Right_motor_go,HIGH);        // 右電機(jī)前進(jìn)
  78.   digitalWrite(Right_motor_back,LOW);
  79.   //analogWrite(Right_motor_go,200);
  80.   //analogWrite(Right_motor_back,0);//PWM比例0~255調(diào)速
  81.   digitalWrite(Left_motor_go,LOW);   //左輪后退
  82.   digitalWrite(Left_motor_back,HIGH);
  83.   //analogWrite(Left_motor_go,0);
  84.   //analogWrite(Left_motor_back,200);//PWM比例0~255調(diào)速
  85.   //delay(time * 100);        //執(zhí)行時(shí)間,可以調(diào)整  
  86. }

  87. void right()        //右轉(zhuǎn)(右輪不動(dòng),左輪前進(jìn))
  88. {  digitalWrite(led1,HIGH);
  89. delay(500);
  90.   digitalWrite(led1,LOW);

  91.   digitalWrite(Right_motor_go,LOW);   //右電機(jī)不動(dòng)
  92.   digitalWrite(Right_motor_back,LOW);
  93.   //analogWrite(Right_motor_go,0);
  94.   //analogWrite(Right_motor_back,0);//PWM比例0~255調(diào)速
  95.   digitalWrite(Left_motor_go,HIGH);//左電機(jī)前進(jìn)
  96.   digitalWrite(Left_motor_back,LOW);
  97.   //analogWrite(Left_motor_go,200);
  98.   //analogWrite(Left_motor_back,0);//PWM比例0~255調(diào)速
  99.   //delay(time * 100);        //執(zhí)行時(shí)間,可以調(diào)整  
  100. }

  101. void spin_right()        //右轉(zhuǎn)(右輪后退,左輪前進(jìn))
  102. {
  103.   digitalWrite(Right_motor_go,LOW);   //右電機(jī)后退
  104.   digitalWrite(Right_motor_back,HIGH);
  105.   //analogWrite(Right_motor_go,0);
  106.   //analogWrite(Right_motor_back,200);//PWM比例0~255調(diào)速
  107.   digitalWrite(Left_motor_go,HIGH);//左電機(jī)前進(jìn)
  108.   digitalWrite(Left_motor_back,LOW);
  109.   //analogWrite(Left_motor_go,200);
  110.   //analogWrite(Left_motor_back,0);//PWM比例0~255調(diào)速
  111.   //delay(time * 100);        //執(zhí)行時(shí)間,可以調(diào)整  
  112. }

  113. void back()          //后退
  114. {  digitalWrite(led1,HIGH);
  115. digitalWrite(led2,HIGH);
  116.      delay(100);
  117.      digitalWrite(led1,LOW);
  118.      digitalWrite(led2,LOW);
  119.      delay(100);
  120.   digitalWrite(Right_motor_go,LOW);  //右輪后退
  121.   digitalWrite(Right_motor_back,HIGH);
  122.   //analogWrite(Right_motor_go,0);
  123.   //analogWrite(Right_motor_back,150);//PWM比例0~255調(diào)速
  124.   digitalWrite(Left_motor_go,LOW);  //左輪后退
  125.   digitalWrite(Left_motor_back,HIGH);
  126.   //analogWrite(Left_motor_go,0);
  127.   //analogWrite(Left_motor_back,150);//PWM比例0~255調(diào)速
  128.   //delay(time * 100);     //執(zhí)行時(shí)間,可以調(diào)整  
  129. }

  130. void dump(decode_results *results)
  131. {
  132.   int count = results->rawlen;
  133.   if (results->decode_type == UNKNOWN)
  134.   {
  135.     //Serial.println("Could not decode message");
  136.     brake();
  137.   }

  138. }

  139. void loop()
  140. {  
  141.   if (irrecv.decode(&results)) //調(diào)用庫(kù)函數(shù):解碼
  142.   {
  143.     // If it's been at least 1/4 second since the last
  144.     // IR received, toggle the relay
  145.     if (millis() - last > 250) //確定接收到信號(hào)
  146.     {
  147.       on = !on;//標(biāo)志位置反
  148.       digitalWrite(13, on ? HIGH : LOW);//板子上接收到信號(hào)閃爍一下led
  149.       dump(&results);//解碼紅外信號(hào)
  150.     }
  151.     if (results.value == run_car )//按鍵2
  152.       {digitalWrite(led1,HIGH);
  153.       digitalWrite(led2,HIGH);delay(500);run();}//前進(jìn)
  154.     if (results.value == back_car )//按鍵8
  155.       {back();digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);}//后退
  156.     if (results.value == left_car )//按鍵4
  157.       {left();digitalWrite(led1,HIGH);digitalWrite(led2,LOW);}//左轉(zhuǎn)
  158.     if (results.value == right_car )//按鍵6
  159.      {digitalWrite(led1,LOW);digitalWrite(led2,HIGH); right();}//右轉(zhuǎn)
  160.     if (results.value == stop_car )//按鍵5
  161.      { brake();digitalWrite(led1,LOW);digitalWrite(led2,LOW);}//停車
  162.     if (results.value == left_turn )//按鍵1
  163.     {spin_left();digitalWrite(led1,HIGH);digitalWrite(led2,LOW);}//左旋轉(zhuǎn)
  164.     if (results.value == right_turn )//按鍵3
  165.       {digitalWrite(led1,LOW);digitalWrite(led2,HIGH); spin_right();}//右旋轉(zhuǎn)
  166.     last = millis();      
  167.     irrecv.resume(); // Receive the next value
  168.   }
  169. }

復(fù)制代碼


智能小車(arduino).zip

2.88 KB, 下載次數(shù): 82, 下載積分: 黑幣 -5

評(píng)分

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

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:146110 發(fā)表于 2017-5-21 06:03 | 只看該作者
下載分不夠,樓主能發(fā)給我一份資料嗎?謝謝53896567@qq.com
回復(fù)

使用道具 舉報(bào)

板凳
ID:87193 發(fā)表于 2017-12-19 10:18 | 只看該作者
有沒有原理圖呢
回復(fù)

使用道具 舉報(bào)

地板
ID:236125 發(fā)表于 2018-1-20 12:17 | 只看該作者
#include <IRremote.h>
IRrecv irrecv(11);//定義的引腳
decode_results result;
#define dir1pinA 4
#define dir2pinA 5
#define speedpinA  3
#define led 8
#define dir1pinB 6
#define dir2pinB 7
#define speedpinB  9
long  forward_car=0x00FF18E7;//2
long  stop_car=0x00FF38C7;//5
long  houtui_car=0x00FF4A85;//8
long  left_car=0x00FF10EF;//4
long  right_car=0x00FF5AA5;//6
int speed;

void setup() {
   Serial.begin(9600);
   Serial.println("ABCD");
   irrecv.enableIRIn();
   delay(100);
   pinMode(dir1pinA,OUTPUT);
   pinMode(dir2pinA,OUTPUT);
   pinMode(speedpinA,OUTPUT);
   pinMode(dir1pinB,OUTPUT);
   pinMode(dir2pinB,OUTPUT);
   pinMode(speedpinB,OUTPUT);
   pinMode(led,OUTPUT);
   speed=0;
   delay(5);
}
void loop() {
  speed=150;
  if (irrecv.decode(&result))
  {
      Serial.println(result.value,HEX);
    if (result.value ==forward_car )
     {
           forward();
      }
    if (result.value ==stop_car)
    {
          allstop();   
    }
    if (result.value == houtui_car)
    {
         daotui();
    }

    if (result.value == left_car )
    {
      turnleft();
     }
    if (result.value==right_car )
    {
      turnright();
    }  
    delay(10);         
    irrecv.resume();
  }
}
void allstop()
{         digitalWrite(led,HIGH);
          delay(500);
          digitalWrite(led,LOW);
           digitalWrite(dir1pinA,HIGH);
           digitalWrite(dir2pinA,LOW);
           digitalWrite(dir1pinB,HIGH);
           digitalWrite(dir2pinB,LOW);
           analogWrite(speedpinA,0);
          analogWrite(speedpinB,0);
          delay(100);
}
//自定義函數(shù)
void forward()
{         
           digitalWrite(led,HIGH);
           delay(500);
           digitalWrite(led,LOW);
           digitalWrite(dir1pinA,HIGH);
           digitalWrite(dir2pinA,LOW);
           digitalWrite(dir1pinB,HIGH);
           digitalWrite(dir2pinB,LOW);
           
          analogWrite(speedpinA,speed);
          analogWrite(speedpinB,speed);
          delay(100);
}
void turnleft()
{
       digitalWrite(led,HIGH);
        delay(500);
        digitalWrite(led,LOW);
        digitalWrite(dir1pinA,HIGH);
        digitalWrite(dir2pinA,LOW);
        digitalWrite(dir1pinB,HIGH);
        digitalWrite(dir1pinB,LOW);
         
       analogWrite(speedpinA,0);
       analogWrite(speedpinB,speed);
       delay(100);
}
void turnright()
{      
         digitalWrite(led,HIGH);
        delay(500);
        digitalWrite(led,LOW);
        digitalWrite(dir1pinA,HIGH);
        digitalWrite(dir2pinA,LOW);
        digitalWrite(dir1pinB,HIGH);
        digitalWrite(dir1pinB,LOW);
         
        analogWrite(speedpinA,speed);
        analogWrite(speedpinB,0);
        delay(100);
      
}

void daotui()
{

        digitalWrite(led,HIGH);
        delay(500);
        digitalWrite(led,LOW);
        digitalWrite(dir1pinA,LOW);
        digitalWrite(dir2pinA,HIGH);
        digitalWrite(dir1pinB,LOW);
        digitalWrite(dir1pinB,HIGH);
         
        analogWrite(speedpinA,speed);
        analogWrite(speedpinB,speed);
        delay(100);
}
為什么我的小車只有一側(cè)動(dòng),另一側(cè)沒反應(yīng),
回復(fù)

使用道具 舉報(bào)

5#
ID:1114694 發(fā)表于 2024-3-29 16:35 | 只看該作者
哎,沒搞懂

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久中文字幕 | 玖操| 国内自拍视频在线观看 | 久久精品在线免费视频 | 久久久久久久久久久久91 | 日本亚洲精品成人欧美一区 | 狠狠操天天干 | 美女久久 | 成人三级av | 久久精品国产久精国产 | 一级大片 | 国产精品18久久久久久久 | 欧美一区二区三区在线免费观看 | 免费三级网| 成人精品一区二区三区 | www.操com | 国产 欧美 日韩 一区 | 久草在线在线精品观看 | 日韩欧美亚洲综合 | av黄色在线观看 | 国产农村妇女毛片精品久久麻豆 | 日韩欧美一区二区三区 | 国产三级一区二区三区 | 亚洲一区二区三区四区五区中文 | 午夜小视频免费观看 | 91久色| 影音先锋成人资源 | 亚洲高清一区二区三区 | 在线视频91 | 天天草天天 | 日韩精品色网 | 亚洲精品久久久久久首妖 | 91美女在线观看 | 日韩精品一区二区三区中文字幕 | 日本久久久久久久久 | 国产日韩精品视频 | 国产精品日日摸夜夜添夜夜av | 国产在线视频一区 | 日韩精品免费一区二区在线观看 | 91福利网| 欧美一区二区三区 |