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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15457|回復: 4
收起左側

Arduino智能小車控制 步進電機 花式運動 紅外遙控程序

[復制鏈接]
ID:121509 發表于 2016-6-4 10:22 | 顯示全部樓層 |閱讀模式
里面包含以下3個程序
步進電機
花式運動
紅外遙控

0.png
步進電機的驅動需要LN298步進電機驅動器
智能小車的花式運動
紅外遙控智能小車做相對應的運動

下面是紅外遙控的代碼:

  1. #include <IRremote.h>//包含紅外庫
  2. int RECV_PIN = A4;//端口聲明
  3. IRrecv irrecv(RECV_PIN);
  4. decode_results results;//結構聲明
  5. int on = 0;//標志位
  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;     //左電機后退(IN1)
  16. int Left_motor_go=9;     //左電機前進(IN2)

  17. int Right_motor_go=10;    // 右電機前進(IN3)
  18. int Right_motor_back=11;    // 右電機后退(IN4)
  19. int led1=13;
  20. int led2=12;
  21. void setup()
  22. {
  23.   //初始化電機驅動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()     // 前進
  35. {
  36.   digitalWrite(Right_motor_go,HIGH);  // 右電機前進
  37.   digitalWrite(Right_motor_back,LOW);     
  38.   //analogWrite(Right_motor_go,200);//PWM比例0~255調速,左右輪差異略增減
  39.   //analogWrite(Right_motor_back,0);
  40.   digitalWrite(Left_motor_go,HIGH);  // 左電機前進
  41.   digitalWrite(Left_motor_back,LOW);
  42.   //analogWrite(Left_motor_go,200);//PWM比例0~255調速,左右輪差異略增減
  43.   //analogWrite(Left_motor_back,0);
  44.   //delay(time * 100);   //執行時間,可以調整  
  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);//執行時間,可以調整  
  59. }

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

  75. void spin_left()         //左轉(左輪后退,右輪前進)
  76. {
  77.   digitalWrite(Right_motor_go,HIGH);        // 右電機前進
  78.   digitalWrite(Right_motor_back,LOW);
  79.   //analogWrite(Right_motor_go,200);
  80.   //analogWrite(Right_motor_back,0);//PWM比例0~255調速
  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調速
  85.   //delay(time * 100);        //執行時間,可以調整  
  86. }

  87. void right()        //右轉(右輪不動,左輪前進)
  88. {  digitalWrite(led1,HIGH);
  89. delay(500);
  90.   digitalWrite(led1,LOW);

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

  101. void spin_right()        //右轉(右輪后退,左輪前進)
  102. {
  103.   digitalWrite(Right_motor_go,LOW);   //右電機后退
  104.   digitalWrite(Right_motor_back,HIGH);
  105.   //analogWrite(Right_motor_go,0);
  106.   //analogWrite(Right_motor_back,200);//PWM比例0~255調速
  107.   digitalWrite(Left_motor_go,HIGH);//左電機前進
  108.   digitalWrite(Left_motor_back,LOW);
  109.   //analogWrite(Left_motor_go,200);
  110.   //analogWrite(Left_motor_back,0);//PWM比例0~255調速
  111.   //delay(time * 100);        //執行時間,可以調整  
  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調速
  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調速
  128.   //delay(time * 100);     //執行時間,可以調整  
  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)) //調用庫函數:解碼
  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) //確定接收到信號
  146.     {
  147.       on = !on;//標志位置反
  148.       digitalWrite(13, on ? HIGH : LOW);//板子上接收到信號閃爍一下led
  149.       dump(&results);//解碼紅外信號
  150.     }
  151.     if (results.value == run_car )//按鍵2
  152.       {digitalWrite(led1,HIGH);
  153.       digitalWrite(led2,HIGH);delay(500);run();}//前進
  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);}//左轉
  158.     if (results.value == right_car )//按鍵6
  159.      {digitalWrite(led1,LOW);digitalWrite(led2,HIGH); right();}//右轉
  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);}//左旋轉
  164.     if (results.value == right_turn )//按鍵3
  165.       {digitalWrite(led1,LOW);digitalWrite(led2,HIGH); spin_right();}//右旋轉
  166.     last = millis();      
  167.     irrecv.resume(); // Receive the next value
  168.   }
  169. }

復制代碼


智能小車(arduino).zip

2.88 KB, 下載次數: 82, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:146110 發表于 2017-5-21 06:03 | 顯示全部樓層
下載分不夠,樓主能發給我一份資料嗎?謝謝53896567@qq.com
回復

使用道具 舉報

ID:87193 發表于 2017-12-19 10:18 | 顯示全部樓層
有沒有原理圖呢
回復

使用道具 舉報

ID:236125 發表于 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);
}
//自定義函數
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);
}
為什么我的小車只有一側動,另一側沒反應,
回復

使用道具 舉報

ID:1114694 發表于 2024-3-29 16:35 | 顯示全部樓層
哎,沒搞懂

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 性色的免费视频 | 日本一卡精品视频免费 | 日本三级全黄三级三级三级口周 | av黄色片 | 欧美白人做受xxxx视频 | 天天干天天爱天天 | 欧美一区二区久久 | 午夜精品一区二区三区在线视频 | 91九色麻豆 | 国产精品美女www爽爽爽 | 久久国内 | 最新日韩欧美 | 一区二区国产精品 | 午夜电影在线播放 | 国产在线精品一区二区三区 | 欧美精品一区二区免费视频 | 91一区二区三区 | 亚洲综合视频 | 久久久久一区 | 精品一区二区三区在线观看国产 | 麻豆久久久9性大片 | 91精品国产91久久久久久不卞 | 天天干天天草 | 国产激情一区二区三区 | 影音先锋成人资源 | 久久久人 | 综合久久综合久久 | 日日操视频 | 久久99国产精品久久99果冻传媒 | 夜夜骑av | 成人黄色电影在线播放 | a级在线免费 | 免费亚洲一区二区 | 操亚洲 | 国产美女视频一区 | 午夜视频免费 | 亚洲九色| 精品国产精品三级精品av网址 | 一区二区三区视频在线 | 国产精品视频在线播放 | 日韩www|