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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

智能小車循跡加避障電路圖 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:153740 發(fā)表于 2016-12-10 17:56 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
這個(gè)簡單的避障小車使用超聲波進(jìn)行距離測量,根據(jù)測量距離決定小車行駛方向。對(duì)于避障做了簡化處理,只要有障礙物就右轉(zhuǎn)。為了節(jié)省成本,只用了一個(gè)超聲波模塊,因此只能對(duì)正前方物體進(jìn)行避障。小車采用三輪結(jié)構(gòu),速度差進(jìn)行方向控制。
超聲波模塊使用的成品模塊,單片機(jī)使用一個(gè)最小系統(tǒng)板,底板上有L293D電機(jī)驅(qū)動(dòng)模塊。總體組裝如下圖:


避障小車原理圖.rar (35.42 KB, 下載次數(shù): 95)
避障小車源代碼.rar (4.46 KB, 下載次數(shù): 44)


部分源碼預(yù)覽:
  1. /*
  2. * motor.c
  3. *
  4. *  Created on: 2011-3-3
  5. *      Author: Jason Jiang
  6. *         Home Page: www.ruixuedz.com.cn
  7. *                  Email: ruixuedz@gmail.com
  8. */
  9. #include "motor.h"
  10. #include "uart.h"

  11. MOTOR_STATE g_motor_state = MOTOR_STOP;
  12. uchar g_count = 0;
  13. uchar g_left_pwm = 0;
  14. uchar g_right_pwm = 0;

  15. void motor_init()
  16. {
  17.         cli();
  18.         INPUT_DDR |= _BV(LEFT_INPUT1) | _BV(LEFT_INPUT2) | _BV(RIGHT_INPUT1) | _BV(
  19.                         RIGHT_INPUT2);
  20.         ENABLE_DDR |= _BV(LEFT_ENABLE) | _BV(RIGHT_ENABLE);
  21.         INPUT_PORT &= ~(_BV(LEFT_INPUT1) | _BV(LEFT_INPUT2) | _BV(RIGHT_INPUT1)
  22.                         | _BV(RIGHT_INPUT2));
  23.         ENABLE_PORT &= ~(_BV(LEFT_ENABLE) | _BV(RIGHT_ENABLE));

  24.         setSpeed(200, 200);

  25.         TCCR0 = 0x00;             //停止定時(shí)器
  26.         TCNT0 = 0x38;             //設(shè)置初始值
  27.         TIMSK |= 0x01;
  28.         TCCR0 = 0x02;             //開動(dòng)定時(shí)器

  29.         sei();
  30. }

  31. void motor_rotate()
  32. {
  33.         if (MOTOR_ROTATE == g_motor_state)
  34.         {
  35.                 return;
  36.         }

  37.         steerMotor(ROTATE_RIGHT);

  38.         g_motor_state = MOTOR_ROTATE;
  39. }

  40. void motor_forward()
  41. {
  42.         if (MOTOR_FORWARD == g_motor_state)
  43.         {
  44.                 return;
  45.         }

  46.         steerMotor(MOVE_FORWARD);

  47.         g_motor_state = MOTOR_FORWARD;
  48. }

  49. void steerMotor(MOTOR_STEER_ENUM steer)
  50. {
  51.         switch (steer)
  52.         {
  53.         case MOVE_FORWARD:
  54.                 INPUT_PORT &= ~(1 << LEFT_INPUT1);
  55.                 INPUT_PORT |= (1 << LEFT_INPUT2); //Left Motor On Forward
  56.                 INPUT_PORT &= ~(1 << RIGHT_INPUT1);
  57.                 INPUT_PORT |= (1 << RIGHT_INPUT2); //Right Motor On Forward
  58.                 break;

  59.         case TURN_LEFT:
  60.                 INPUT_PORT &= ~(1 << LEFT_INPUT1);
  61.                 INPUT_PORT &= ~(1 << LEFT_INPUT2); //Left Motor off
  62.                 INPUT_PORT &= ~(1 << RIGHT_INPUT1);
  63.                 INPUT_PORT |= (1 << RIGHT_INPUT2); //Right Motor On Forward
  64.                 break;

  65.         case TURN_RIGHT:
  66.                 INPUT_PORT &= ~(1 << LEFT_INPUT1);
  67.                 INPUT_PORT |= (1 << LEFT_INPUT2); //Left Motor On Forward
  68.                 INPUT_PORT &= ~(1 << RIGHT_INPUT1);
  69.                 INPUT_PORT &= ~(1 << RIGHT_INPUT2); //Right Motor off
  70.                 break;

  71.         case ROTATE_LEFT:
  72.                 INPUT_PORT |= (1 << LEFT_INPUT1);
  73.                 INPUT_PORT &= ~(1 << LEFT_INPUT2); //Left Motor On Reverse
  74.                 INPUT_PORT &= ~(1 << RIGHT_INPUT1);
  75.                 INPUT_PORT |= (1 << RIGHT_INPUT2); //Right Motor On Forward
  76.                 break;

  77.         case ROTATE_RIGHT:
  78.                 INPUT_PORT &= ~(1 << LEFT_INPUT1);
  79.                 INPUT_PORT |= (1 << LEFT_INPUT2); //Left Motor On Forward
  80.                 INPUT_PORT |= (1 << RIGHT_INPUT1);
  81.                 INPUT_PORT &= ~(1 << RIGHT_INPUT2); //Right Motor On Reverse
  82.                 break;

  83.         case MOVE_BACKWARD:
  84.                 INPUT_PORT |= (1 << LEFT_INPUT1);
  85.                 INPUT_PORT &= ~(1 << LEFT_INPUT2); //Left Motor On Reverse
  86.                 INPUT_PORT |= (1 << RIGHT_INPUT1);
  87.                 INPUT_PORT &= ~(1 << RIGHT_INPUT2); //Right Motor On Reverse
  88.                 break;

  89.         case FULL_STOP:
  90.                 INPUT_PORT &= ~(1 << LEFT_INPUT1);
  91.                 INPUT_PORT &= ~(1 << LEFT_INPUT2); //Left Motor off
  92.                 INPUT_PORT &= ~(1 << RIGHT_INPUT1);
  93.                 INPUT_PORT &= ~(1 << RIGHT_INPUT2); //Right Motor off
  94.                 break;

  95.         default:
  96.                 break;
  97.         }
  98. }

  99. void setSpeed(uchar left_pwm, uchar right_pwm)
  100. {
  101.         g_left_pwm = left_pwm;
  102.         g_right_pwm = right_pwm;
  103. }

  104. ISR(TIMER0_OVF_vect) //定時(shí)器溢出中斷程序
  105. {
  106.         TCNT0 = 0x38; //從新調(diào)入初始值
  107.         g_count++; //每中斷一次加1
  108.         //printStr("int\n");
  109.         if (g_count < g_left_pwm) //判斷pwm1是不是改輸出高電平
  110.         {
  111.                 ENABLE_PORT |= (1 << LEFT_ENABLE);
  112.                 //printStr("l1\n");
  113.         }
  114.         else
  115.         { //不是則輸出0
  116.                 ENABLE_PORT &= ~(1 << LEFT_ENABLE);
  117.                 //printStr("l0\n");
  118.         }

  119.         if (g_count < g_right_pwm)
  120.         {
  121.                 ENABLE_PORT |= (1 << RIGHT_ENABLE);
  122.                 //printStr("r1\n");
  123.         }
  124.         else
  125.         {
  126.                 ENABLE_PORT &= ~(1 << RIGHT_ENABLE);
  127.                 //printStr("r0\n");
  128.         }
  129. }


復(fù)制代碼


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

使用道具 舉報(bào)

地板
ID:382244 發(fā)表于 2018-8-2 17:23 | 只看該作者
這用的是51單片機(jī)嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:375149 發(fā)表于 2018-7-24 14:08 | 只看該作者
群主你好!在51黑內(nèi)在示教控制器方面資料嗎?謝謝!若有那個(gè)髙手知道,加我QQ:550220127聊!謝謝!!
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:280166 發(fā)表于 2018-4-9 18:31 | 只看該作者
很好,對(duì)我很有幫助
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色在线免费网站 | 日韩视频中文字幕 | 亚洲视频精品 | 精品少妇一区二区三区日产乱码 | 色资源在线 | 国产精品视频在线播放 | 国产精品成人在线 | 日本一二区视频 | 9191在线观看 | 国产精品久久7777777 | www.操.com| 国产精品久久久久久久久久三级 | 成人在线精品视频 | 国产欧美一区二区三区在线看 | 91精品久久久久久久久久入口 | 欧美日韩专区 | 国产一区二区三区四区五区加勒比 | 在线视频国产一区 | 久久精品一区二区三区四区 | 欧美日韩美女 | 中文字幕在线播放不卡 | 国产精品一区二区福利视频 | 黄色片视频 | 日韩在线小视频 | 欧美一级二级三级视频 | 九九热精品视频 | 日韩中文一区 | 伊人免费在线观看 | 亚洲国产成人在线观看 | gav成人免费播放视频 | 日韩影院在线观看 | 亚洲精品一二区 | 精品一区二区电影 | 欧洲高清转码区一二区 | 成人免费大片黄在线播放 | 亚洲欧美日本在线 | 麻豆国产精品777777在线 | 久国产视频 | 国产一区二区 | 国产精品久久久久久福利一牛影视 | 在线免费观看视频黄 |