无线电电子与电气工程百科全书 简单的机器人。 无线电电子电气工程百科全书 本文展示了一个简单的“机器人”的图。 他走向光源,如果没有光源,则激活“自由搜索”模式,即机器人将行驶,如果发生碰撞,则行驶并掉头。 机器人的核心是ATMEL微控制器:AT90S2313,但您可以使用该公司的任何其他微控制器,该微控制器具有2kb的程序存储器、15个输入/输出端口、可用电源- 4-6V。 发动机将由“发动机驱动器”——L293D微电路(国内的类似物是KR1128KT4A)控制。 作为传感器,决定采用光敏电阻SF3-1。 该机器人由两个电机组成。 以下是它们如何执行某些操作:
电路中使用的无线电元件: 微控制器 AT90S2313 微电路L293D(国产模拟-KR1128KT4A) 2个光敏电阻SF3-1 4MHz 石英 电容器 22-24pF 稳定器 7805(或 KREN5A) 100欧姆电阻(可选) 两台电机 电源 Vbat - 4 节 AA 电池或 1 节 (9V) 电源Vm-1冠(9V) 组装好电路后,需要将程序下载到单片机,机器人就准备好了: /************************************************* *** *** 芯片类型:AT90S2313 时钟频率:4,000000 MHz 内存型号 : Tiny 外部 SRAM 大小:0 数据堆栈大小:32 ****************************************************** ***** **/#include <90s2313.h> #包括 #包括 // 为方便使用外设而分配定义 #define 输出端口 #定义MOTOR_F 7 #定义电机_B 6 #定义TURN_R 5 #定义TURN_L 4 #在PIND中定义 #定义LIGHT_R 0 #定义LIGHT_L 1 #定义BUMPER_F 2 #定义 BUMPER_B 3 // 可能的驾驶模式 枚举{停止,F,FR,FL,B,BR,BL}; // ------------------------------------------------ ------------------------------ // 延迟 t x 10ms // ------------------------------------------------ ------------------------------ void Delay_10ms(无符号字符 t) {字符我; 对于(我=0;我 // 选择运动方向的概率表 // 基于当前的运动方向 无符号字符 p[7][7] = {14、43、57、71、86、93、100、 7,43,71,100,100,100,100, 7,50,93,100,100,100,100, 7,50,57,100,100,100,100, 29,29,29,29,57,79,100, 36,36,36,36,71,93,100, 36, 36, 36, 36, 71, 79, 100}; // 当前运动方向 无符号字符 this_move; // ------------------------------------------------ ------------------------------ // 打开电机组合以向给定方向移动 // ------------------------------------------------ ------------------------------ void go(无符号字符方向){ 开关(方向){ 案例停止: OUT.MOTOR_F=0; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=0; 打破; 案例 F: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=0; 打破; 案例FR: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=1; OUT.TURN_L=0; 打破; 案例 FL: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=1; 打破; 案例B: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=0; OUT.TURN_L=0; 打破; 案例 BR: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=1; OUT.TURN_L=0; 打破; 案例 BL: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=0; OUT.TURN_L=1; 打破; } } // ------------------------------------------------ ------------------------------ // 根据概率表选择下一步的运动方向 // ------------------------------------------------ ------------------------------ 无符号字符 next_move(void){ 无符号夏普,我; pp = 兰特()/327; // 获取随机数 0..99 for (i=0;i<7;i++){ // 在概率表中寻找匹配项 if (p[this_move][i] > pp) 中断; } 这个_移动=我; // 将新接收到的方向写入当前方向 返回(一); } // ------------------------------------------------ ------------------------------ // 处理前保险杠中断 (INT0 = PD2) // ------------------------------------------------ ------------------------------ 中断 [EXT_INT0] 无效 ext_int0_isr(void) { 如果(this_move==FR)去(BL); 如果(this_move==FL)去(BR); 否则去(B); 延迟_10ms(250); // 2.5 x 2 秒内出发 延迟_10ms(250); 这个移动=B; } // ------------------------------------------------ ------------------------------ // 处理后保险杠中断 (INT1 = PD3) // ------------------------------------------------ ------------------------------ 中断 [EXT_INT1] 无效 ext_int1_isr(void) { 如果(this_move==BR)去(FL); 如果(this_move==BL)去(FR); 否则走(F); 延迟_10ms(250); // 2.5 x 2 秒内出发 延迟_10ms(250); 这个移动=F; } // ------------------------------------------------ ------------------------------ // “随机游走” // ------------------------------------------------ ------------------------------ 无符号字符步行(无效){ // 这个循环组织“自由漫游”,而 // 没有来自任何光传感器的信号 而((IN.LIGHT_R)&&(IN.LIGHT_L)){ 去(下一个移动()); // 获取下一个运动方向 延迟_10ms(250); // 朝这个方向移动2.5秒 } // 这个循环组织对灯光的移动,同时 // 至少有一个光传感器有信号 而((IN.LIGHT_R==0)||(IN.LIGHT_L==0)){ if((IN.LIGHT_R==0) && (IN.LIGHT_L==0)) 去(F); 否则如果(IN.LIGHT_R==0)去(FR); 否则如果(IN.LIGHT_L==0)去(FL); } 返回(0); } // ------------------------------------------------ ------------------------------ // 主程序 // ------------------------------------------------ ------------------------------ 无效的主要(无效) { DDRB=0xff; // 将端口 B 的所有行分配给输出 端口B = 0x00; // 并将它们设置为低 DDRD=0x00; // 将端口 D 的所有行分配给输入 端口=0xff; // 连接内部负载电阻 // 外部中断初始化 // INT0:开 // INT0 模式:下降沿 // INT1:开 // INT1 模式:下降沿 GIMSK=0xC0; MCUCR=0x0A; GIFR=0xC0; // 启用中断 #asm("sei") // 开始主循环 而(1)步行(); } 出版:cxem.net 查看其他文章 部分 无线电控制设备. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 花园疏花机
02.05.2024 先进的红外显微镜
02.05.2024 昆虫空气捕捉器
01.05.2024
其他有趣的新闻: ▪ ViewSonic VSD241 All-in-One with NVIDIA Tegra 3 处理器
免费技术图书馆的有趣材料: ▪ 文章 高尚的言辞很多,但高尚的行为却不见踪影……通俗表达 ▪ 文章 为什么克拉布缺席了上一部《哈利·波特》电影? 详细解答 ▪ 文章晶体管 IRF9510 - IRF9640。 无线电电子电气工程百科全书 本页所有语言 www.diagram.com.ua |