c语言巡线程序,小车巡线程序
ATmega16主芯片小车巡线程序,7个红外传感器
/*--------------------search line car v9 ---------------------
改用真正的PD算法
可调整参数:
PWM的值;
标准占空比,即直线速度std_left_duty,std_right_duty ;
比例系数Kp 的值;
差分系数Kd 的值;
count的最大值
---------------------------------------------------------------*/
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define moto_left_fwd PORTD=(PORTD|(1<
#define moto_left_bck PORTD=(PORTD|(1<
#define moto_right_fwd PORTD=(PORTD|(1<
#define moto_right_bck PORTD=(PORTD|(1<
#define moto_left_off PORTD=PORTD&(~(1<
#define moto_right_off PORTD=PORTD&(~(1<
#define countertop 10000 //这里定义了pwm波的最大计数值,从而得到50HZ的频率 TOP=fclk/(foc*2*N) N为分频因子N=8
#define Kp 1900 //定义比例系数
#define Kd 4750 //定义差分系数
uchar left_moto,right_moto;
uchar IR_state1=0,IR_state0=0; // 定义IR传感器的状态,IR_state0为当前采集的值,IR_state0为前一次采集的值
char err[3]={0}; //定义三次的误差值
char err_D=0,err_P=0; //定义偏差,利用比例,差分
int std_left=0,std_right=0;
/*
void closeWDT()
{
unsigned char temp=WDTCR | (1<
WDTCR = temp;
WDTCR = 0x00; //关闭看门狗
}*/
void init() //初始化
{
DDRD|=0b11110011;
DDRA=0; //PORTA0-7设置为输入,读取传感器的值
moto_left_off; //初始关闭电机
moto_right_off;
TCCR1A=0b10100000; //配置定时器1工作在相位与频率修正PWM,TOP值为ICR1
TCCR1B=0b00010010; //8分频,正常PWM输出
ICR1=countertop; //ICR1 为计数器的TOP值
OCR1A=0x00; //设置捕捉比较输出初值
OCR1B=0x00;
//closeWDT();
// TIMSK|=((1<
SREG=0x80; //使能全局中断
}
/*-------------------------------------------------------
*****************速度等级函数**************************
--------------------------------------------------------*/
void speed(uchar level)
{
switch(level)
{
case 1:std_left=(int)(countertop/100*19);std_right=(int)(countertop/100*23);break; //定义速度0,慢速
case 2:std_left=(int)(countertop/100*25);std_right=(int)(countertop/100*29);break; //定义速度1,低速
case 3:std_left=(int)(countertop/100*30);std_right=(int)(countertop/100*35);break; //定义速度2,中速
case 4:std_left=(int)(countertop/100*36);std_right=(int)(countertop/100*42);break; //定义速度2,中速
case 5:std_left=(int)(countert
c语言巡线程序,小车巡线程序相关推荐
- 线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言
线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言ethercat总 线扫描枪条码测试机程序 和MES系统通讯 和Wenglor 扫描枪 RS232通讯 FB块可以直 ...
- 基于 8051单片机的线跟随小车
线跟随小车是一种跟随线的机器,它可以是黑线或白线,线路跟随器感应到线路并越过它.在此项目中,如果感应到白线,会往白线的一侧转弯,直到没有感应到白线,再继续前进. 线跟随小车的原理 线跟随器的概念与光有 ...
- ssm基于微信小程序的食堂线上预约点餐系统--(ssm+uinapp+Mysql)
ssm基于微信小程序的食堂线上预约点餐系统–(ssm+uinapp+Mysql) 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括食堂线上预约点餐系统的网络应用,在外 ...
- 计算机毕业设计ssm力高灯饰线上交易平台4d59n系统+程序+源码+lw+远程部署
计算机毕业设计ssm力高灯饰线上交易平台4d59n系统+程序+源码+lw+远程部署 计算机毕业设计ssm力高灯饰线上交易平台4d59n系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S ...
- r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分
r语言怎么以第二列绘制线图 Part I of this blog series is here. 本博客系列的第一部分 在这里 . At the UKHO we are interested in ...
- python小车行驶路线图_基于opencv-Python小车循线学习笔记
基于opencv-Python小车循线学习笔记 加入摄像头模块,让小车实现自动循迹行驶 思路为:摄像头读取图像,进行二值化,将白色的赛道凸显出来 选择下方的一行像素,黑色为0,白色为255 找到白色值 ...
- 程序员2线城市月薪25k,父母让他去北京一家16K国企,网友:去啊
现在找个工作不难,但是想要找个稳定的,不需要加班,收入又高的就很难了.很多高收入的员工其实都是靠加班得来的,而类似国企之类的企业,虽然薪水一般,但是却很轻松. 最近在职场论坛上看到这样一个帖子:程序员 ...
- 快速搭建小程序,实现线上引流获客
小程序--已经成为线下商家从线上引流获客的首选渠道. 不说废话,欣赏一下这亮眼的数据: 根据喜茶披露的数据,截至2019年12月31日,喜茶已在43个城市开出390家门店,新增主力店157家.Go店6 ...
- 职工线上健步走活动小程序方案,通过微信小程序实现功能,getElementById(“demo“).innerHTML=x
<script> function myFunction() {y=5;z=2;x=y+z;document.getElementById("demo").innerH ...
最新文章
- 【面向对象编程】(2) 类属性的定义及使用;__repr__()方法
- keil把源代码生成lib的方法
- Linux下的第一个驱动程序
- WebDriver自动化测试框架详解
- Asp.Net Ajax的两种基本开发模式
- 前端er怎样操作剪切复制以及禁止复制+破解等
- python神经网络调节参数_神经网络进阶-用python实现一个完整的神经网络框架并在CIFAR10数据集上调参...
- Go语言vscode环境配置
- Python习题week2
- 算法入门经典-第七章 例题7-2 八皇后问题
- go 类型断言_深入理解Go的interface内部执行原理
- C++ static_cast和dynamic_cast
- 25 张图,一万字,拆解 Linux 网络包发送过程
- 计算机控制机器人运动的原理,工业机器人控制系统的基本原理
- 撬动世界的支点——《引爆点》读书笔记2900字优秀范文
- IT经理人:提高团队工作效率的11个方法
- MetaLife与ESTV建立战略合作伙伴关系并任命其首席执行官Eric Yoon为顾问
- 打印机登录无密码计算机,无密码,引发共享打印机拒绝访问故障
- Markdown符号:整除、不整除、恰整除、不恰整除
- C++与C#相比,哪个更适合开发大型游戏?
热门文章
- C++ API 设计 06 第一章 简介
- 易經大意(6) 三和 韓長庚 著
- Java 控制反转和依赖注入模式【翻译】【整理】
- 软件设计师(八)汇总-选择题
- 如何让c语言输出字符响一声,printf()用法
- python操作word、ppt、pdf
- 农业农村部回应长江刀鱼将正式禁捕:已严重过度捕捞
- Virtualbox源码分析17 APIC虚拟化2.APIC设备模拟
- 如何在计算机上增加一个磁盘分区,win10系统额外新增加一个硬盘分区的详细办法...
- comsol纳米光学案例分析