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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9565|回復: 3
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
這個簡單的避障小車使用超聲波進行距離測量,根據測量距離決定小車行駛方向。對于避障做了簡化處理,只要有障礙物就右轉。為了節省成本,只用了一個超聲波模塊,因此只能對正前方物體進行避障。小車采用三輪結構,速度差進行方向控制。
超聲波模塊使用的成品模塊,單片機使用一個最小系統板,底板上有L293D電機驅動模塊。總體組裝如下圖:


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


部分源碼預覽:
  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;             //停止定時器
  26.         TCNT0 = 0x38;             //設置初始值
  27.         TIMSK |= 0x01;
  28.         TCCR0 = 0x02;             //開動定時器

  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) //定時器溢出中斷程序
  105. {
  106.         TCNT0 = 0x38; //從新調入初始值
  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. }


復制代碼


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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码精品一区二区三区av | 欧美久久一区二区三区 | 人人做人人澡人人爽欧美 | 久久久成人精品 | 国产一区影院 | 日韩a在线观看 | 久久精品一区 | 午夜精品视频在线观看 | 国产激情小视频 | 久久久久国产精品 | 在线观看中文字幕一区二区 | 久久久久久国产精品 | 日日天天 | 久久久一二三 | 成年人在线观看视频 | 奇米四色在线观看 | 亚洲视频三区 | 自拍视频一区二区三区 | 黄视频免费在线 | 日韩国产中文字幕 | 亚洲h色 | 99成人| 欧美国产日韩在线观看 | 欧美成人一区二区三区 | 欧美精品一区二区在线观看 | 欧美一级免费观看 | 天天天操 | 成年人网站在线观看视频 | 91成人精品视频 | 欧美成年网站 | 欧美人人 | 国产成人精品网站 | 狠狠入ady亚洲精品经典电影 | 久久青视频 | 影音先锋成人资源 | 91精品久久 | 91免费看片 | 高清人人天天夜夜曰狠狠狠狠 | 能看的av | 高清一区二区三区 | 99亚洲视频 |