历史上的今天

今天是:2024年09月21日(星期六)

2020年09月21日 | 两轮巡线小车源程序 2个红外传感器

发布者:EtherealEssence 来源: 51hei关键字:两轮巡线小车  红外传感器  电机驱动 手机看文章 扫描二维码
随时随地手机看文章

传感器:2个红外传感器


程序如下:

#include //52头文件

unsigned char pwm_left_val; //左电机占空比值 取值范围0-170,0最快

unsigned char pwm_right_val; //右电机占空比值取值范围0-170 ,0最快

unsigned char pwm_t;//周期

////////////////////////////////////

/*电机驱动IO定义*/

sbit IN1 = P1^0; //为1 左电机反转

sbit IN2 = P1^1; //为1 左电机正转

sbit IN3 = P1^2; //为1 右电机正转

sbit IN4 = P1^3; //为1 右电机反转

sbit EN1 = P1^6; //为1 左电机使能

sbit EN2 = P1^7; //为1 右电机使能

sbit left_led = P2^0;//左寻迹信号,为0没有识别到黑线,为1识别到黑线

sbit right_led = P2^3;//右寻迹信号,为0没有识别到黑线,为1识别到黑线


#define left_motor_en  EN1 = 1 //左电机使能

#define right_motor_en  EN2 = 1 //右电机使能


#define left_motor_stops IN1 = 0, IN2 = 0//左电机停止

#define right_motor_stops IN3 = 0, IN4 = 0//右电机停止

#define left_motor_go  IN1 = 0, IN2 = 1//左电机正传

#define left_motor_back  IN1 = 1, IN2 = 0//左电机反转

#define right_motor_go  IN3 = 1, IN4 = 0//右电机正传

#define right_motor_back IN3 = 0, IN4 = 1//右电机反转

///////////////////////////////////////////////////////////////////

/*延时*/

void delay(unsigned int z)//毫秒级延时

{

        unsigned int x,y;

        for(x = z; x > 0; x--)

                for(y = 110; y > 0 ; y--);

}        

/*小车前进*/

void forward()

{

        pwm_left_val= pwm_right_val=100;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}

/*小车左转*/

void xiaoleft_run()

{

        pwm_left_val=170;

        pwm_right_val=100;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}

/*小车右转*/

void xiaoright_run()

{

        pwm_left_val=100;

        pwm_right_val=170;

        left_motor_go; //左电机前进

        right_motor_go; //右电机前进

}


void timer0_init()

{

TMOD |= 0x02;//8位自动重装模块

TH0 = 220;

TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ

TR0 = 1;//启动定时器0

ET0 = 1;//允许定时器0中断

EA  = 1;//总中断允许


}

int main()

{

timer0_init();

delay(100);//延时1秒

while(1)

{

  //为0 没有识别到黑线 为1识别到黑线

  if(left_led==0&&right_led==0)

  {

   forward();//前进

   delay(100);

  }

  else if( left_led == 1 && right_led== 0 )//左边触线,小左转修正

  {

   xiaoleft_run();

   delay(200);

  }

  else if(left_led == 0 && right_led== 1  )//右边触线,小右转修正

  {

   xiaoright_run();

   delay(200);

  }        

}               

}

//定时器0中断

void timer0() interrupt 1

{

        pwm_t++;//周期计时加

        if(pwm_t == 155)

                pwm_t = EN1 = EN2 = 0;

        if(pwm_left_val == pwm_t)//左电机占空比        

                EN1 = 1;               

        if(pwm_right_val == pwm_t)//右电机占空比

                EN2 = 1;                        

}


关键字:两轮巡线小车  红外传感器  电机驱动 引用地址:两轮巡线小车源程序 2个红外传感器

上一篇:rs485 16路继电器控制板 仿modbus通信协议控制有上下位机程序
下一篇:51单片机MLX90614红外温度计

推荐阅读

  在昨天进行的2018云栖大会的机器革命·人工智能峰会上,阿里巴巴人工智能实验室发布了太空蛋和太空梭两款产品,主要面向酒店和医院等场景。   阿里巴巴人工智能实验室成立于2016年,负责消费级产品的研发,主要研究方向为语音,视觉,行动力等。该实验室最为人熟知的产品就是天猫精灵,一款智能家庭语音助手/智能语音终端设备产品,内置阿里自主...
Windows发布了“用于Windows Defender Antivirus反恶意软件平台的更新”,而在用户安装使用之后,有用户反应会导致快速扫描和全盘扫描功能无法正常使用。如果用户尝试快速扫描和全盘扫描,只会扫描少量文件之后在不到1分钟的时间内结束。微软总是这样,带来新补丁解决之前遗留问题的同时,新的补丁也产生出了新的Bug。之前微软放出了Windows 10 KB4515...
据外媒 WndowsUnited 今日报道,小米仍在尝试继续研发柔性设备 / 可折叠手机。 IT之家了解到,该专利于 2019 年 9 月 30 日向美国专利局提交,2020 年 9 月 15 日予以公布,专利号为 16587604。  该专利描述为:  介绍了一种电子设备,包括本体和柔性显示屏。所述主体包括第一表面、第二表面和侧表面。第一面和第二...
英飞凌科技股份公司日前宣布,其位于奥地利菲拉赫的300毫米薄晶圆功率半导体芯片工厂正式启动运营。这座以“面向未来”为座右铭的芯片工厂,总投资额为16亿欧元,是欧洲微电子领域同类中最大规模的项目之一,也是现代化程度最高的半导体器件工厂之一。欧盟委员Thierry Breton、奥地利总理Sebastian Kurz、英飞凌科技股份公司首席执行官Reinhard Ploss博...

史海拾趣

问答坊 | AI 解惑

请问怎么来判断串口在发送数据

请问怎么来判断串口在发送数据? 有没有用其他工具测量的方法. 我写的程序没有错误.但是不知道怎么没有效果.…

查看全部问答∨

绝对精品的硬件设计方面资料!!!

感觉好的给我顶一下...HE HE...…

查看全部问答∨

卢二都

图中的闸门脉冲发生器我想用下面的压缩包中的电路图,但对它有点不明白,麻烦知道的给我分析一下 …

查看全部问答∨

五一期间有个嵌入式Linux开发体验班(免费一天)

《嵌入式Linux免费体验班》(1天) 今年5.1放假干嘛去?参加嵌入式Linux免费体验活动! ————————名额有限,限定12人,先报先得! 课程目标: 本课程针对嵌入式Linux开发的初学人员,能快速了解嵌入式Linux系统,了解嵌入式Linux ...…

查看全部问答∨

关于KernelIoControl

请问各位高手 KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_I2CIrq, sizeof(UINT32), &g_I2CSysIntr, sizeof(UINT32), NULL)) 的作用是什么呢?? …

查看全部问答∨

请问在WINCE中如何实现打印呢?

我现在用的是WINCE5.0,一般的FRAMEWORK中有PRINTDIALOG之类的打印类提供,但是在WINCE5.0的FRAMEWORK中没有,现在不知道该如何实现打印,或者是否也可以通过调用API来实现呢. 其中打印机驱动已经提供. 望高人给予指点.谢谢先.…

查看全部问答∨

STM32低功耗问题

我写了一段STM32低功耗的程序,采用RTC唤醒,但是发现总是不会醒来。而我一旦只要打开了DEBUG,在KEIL 调试时,如果我设置一下或是停止一下断点,就能够醒过来,奇怪: 我的代码如下: /**   * @brief  Main program. ...…

查看全部问答∨

在C430里如何访问SR

在C430里如何访问SR 我直接访问: SR|=BIT5; 编译的结果是SR没有定义 请教 如何访问SR…

查看全部问答∨

【晒经典】通用型手机充电器电路简单实用

本帖最后由 dontium 于 2015-1-23 13:26 编辑   我要说的芯片是APB708N,这款好啊!   好在哪里,简约不简单。   大多数的市场上的带USB线的充电器里边都是它。   费话少说上图哈:     PCB图 &nb ...…

查看全部问答∨

多功能调试测试助手-完整PCB工程包

多功能调试测试助手-完整PCB工程包   格式说明:protel99se 需要的朋友可以直接拿去制版,不过要注意器件的封装哦! 一、交流信号发生器(DDS直接频率合成):频率,相位,幅度可控 二、16*64点阵屏人机面板 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved