0
本帖最后由 birdinskyd***sy 于 2016-6-11 19:31 编辑
好几天没发帖了,一是工作忙碌,再者因为我这通向论坛的网实在是卡,此种情形最易丢贴,“网卡”,唉,这名字翻译得实在不吉利,也许最初翻译的人都没上心, network card,您老不知道博大精深的汉语里,“卡”还有“卡壳”滴意思麽?看人家网通,服务质量暂不提,起的名字多吉利,一看就知道网络通畅。。。好在这两天工作人员好像给协调好了。
如今生活水平提高了,遛狗的也多了。想当初,我们的上一辈小时候,一家子十来口儿,养狗的话基本是为了防盗,门口栓条狗,来贼了就叫,当然,也有iq比较low的傻狗,见了贼也不叫,还摇尾乞怜,唉。。。其状让高大上的狗都无语了。。。
现在嘛,时代发展了,大城市里乃至村儿里都养起来宠物狗,以至于不得不出台相关法规,比如出门遛狗腰带罩子要上链子;狗的职能也发展了,除了警犬族仍保留协助保卫和平的职能,基本上民用狗族诞生了另一个职能----做伴儿,老人遛狗,可能因为还没有抱上孙子,不然会被孙子遛得住院还有时间遛狗?姑娘小伙儿分别遛狗,那是因为都是单身狗;姑娘小伙儿一起遛狗,好吧,我承认,你们花在狗身上的RMB够贫困山区盖所小学了,也许你们捐助了希望工程,谢谢。
就连我们的开发板上也有看门狗,就我们的够听话,不让他叫它一声不吭,让它叫,你不理它都不行。
狗是人类忠实的盆友,如果你不能善待他们,也不要虐待他们,谢谢。
既然如是,今天演出戏,两小车表演遛狗,主演:蓝宙C1初级套件,就是我们的小车嘛。二号:小车甲,一般电视上都这么说。
既然是遛狗,当然狗是主角儿,我们的剧情就是小车甲基本做匀速直线运动,小车甲用一根绳子牵着C1,或者说被C1牵着,C1跑得快,小车甲走得慢,由于速度差,绳子很快被绷直,扮演狗的C1会被扮演人的小车甲拉一下,于是,狗停下,回头看看,再转过头继续跑。。。。情节就这么简单,基本上大家上链子文明遛狗的都这么遛。
好了,我们分解下剧情。
小车甲饰演遛狗人,人物情节简单,让一辆51控制的小车匀速直线运动没啥难度,童鞋们分分钟搞定的事情,所以是配角儿。
C1饰演被遛的狗,狗物情节曲折,1.向前跑 2.被绳子拽到停下数秒 回头 3.扭回头继续跑
这里说明下,大按钮上套了个笔帽,利用杠杆原理,顺便改变下力的方向,使得绳子轻轻一拉就等价于按了下按钮,至于究竟是朝那个方向按的,我们并不关心。这就是大按钮的作用,给狗个信号,有人在拉它,嗯嗯,这是有史以来拉得最好的
还有特别说下这个群众演员,一根绳子,这是端午节女友给我买滴粽子上滴绳子
海报剧照
下边我们引导演员入戏。
小车甲,情节简单,我用的是STC89S52,控制小车做匀速直线运动,速度为散步的速度。Keil4 写C程序,stc_isp烧写,主要演技就是用中断产生pwm,控制电机转速。
C1是本场演出的角儿,我们得好好分析下。这个初级套件我们基本上玩耍过了,还玩儿了一些套件没有带的存货,至于红外避障,循迹之类,算法越好玩得越爽,寡人天生厌恶算法,不再演示,童鞋们有算法高手的可以尽情想了。C1携带的道具有,大按钮,舵机,超声模块,当然腿儿也就是轮子是必须的。
C1在前边跑,由于速度差,当绳子拉动了按钮,嘎嘎,按钮居然要被拉动,C1立刻停下,片刻后,回头看看主人,就是舵机后转180度,再转回头,舵机回转180度,用舵机就是好,我们的舵机是普通舵机,180度范围内精确操控,能转270度麽?不能!这基本上和狗狗的脖子差不多,不可以整圈转的,然后,继续向前跑,然后循环。。。直到按钮又被拉动。。。循环。。。
好了,下边开始拼C1的程序,基本组件我们都玩耍过了,梳理下,(小车甲向前走)C1向前走,这是电机控制部分,用相关函数控制下速度就行了,按钮接的是7口,绳子绷直拉动按钮,7号口一有电平变化即刻电机停转,2秒后,舵机转180度,2秒后,舵机原方向回转180度,2秒后,电机继续转动,C1继续向前走,(C1停下期间小车甲跟上,绳子放松)如果C1停下的时间不合适随时调整
好了,一通Aduino积木搭建。。。。
这里我们插播下啊堆诺的中断,因为我们要用,作为一款单片机,中断是不可或缺的功能,看看啊堆诺的中断,
同样,啊堆诺的中断也是调用个函数
attachInterrupt(interrupt, function, mode),参数的意义是:
interrupt:中断引脚数
function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。
mode:定义何时发生中断以下四个contstants预定有效值:
LOW 当引脚为低电平时,触发中断
CHANGE 当引脚电平发生改变时,触发中断
RISING 当引脚由低电平变为高电平时,触发中断
FALLING 当引脚由高电平变为低电平时,触发中断.
大多数的Arduino板有两个外部中断:0(数字引脚2)和1(数字引脚3),arduino Mega有四个外部中断:数字2(引脚21),3(20针),4(引脚19),5(引脚18)。我们的核心板子是Arduino Mega,但是只用0号中断就足够了,看看示例代码比较好理解,
//////////////////////////////////////////////////////////
///启用0号中断,数字引脚2就是D2,电平变化时触发,调用stateChange
int pbIn = 0;
volatile int state = LOW; // 定义默认输入状态
void stateChange()
{
state=!state;
//do something you want
}
void setup()
{
attachInterrupt(pbIn, stateChange, CHANGE);
}
void loop()
{
//doing something....
}
/////基本上就是这个用法,
///////////////////////////////////////////////////////
看下我们的代码,
////begin////#include
Servo servo_pin_10;
int pbIn = 0;
int flag = 0;
volatile int state = LOW; // 定义默认输入状态
void gogo()
{
analogWrite( 3 , 0 );
analogWrite(5,64);
analogWrite( 6 , 0 );
analogWrite(9,64);
delay( 2000 );
analogWrite( 3 , 0 );
analogWrite(5,149);
analogWrite( 6 , 0 );
analogWrite(9,149);
delay( 2000 );
analogWrite( 3 , 0 );
analogWrite(5,254);
analogWrite( 6 , 0 );
analogWrite(9,255);
delay( 2000 );
}
void stopstop()
{
analogWrite( 3 , 0 );
analogWrite( 5 , 0 );
analogWrite( 6 , 0 );
analogWrite( 9 , 0 );
}
void look_back()
{
servo_pin_10.write( 180 );
}
void look_ahead()
{
servo_pin_10.write( 90 );
}
void look_left()
{
servo_pin_10.write(65);
}
void look_right()
{
servo_pin_10.write(125);
}
void stateChange()
{
state=!state;
stopstop();
if(flag==0)
{
flag = 1;
}
else
{
flag=0;
}
delay(3000);
look_back();
delay(3000);
}
void setup()
{
servo_pin_10.attach(11);
attachInterrupt(pbIn, stateChange, CHANGE);
pinMode( 3 , OUTPUT );
pinMode( 5 , OUTPUT );
pinMode( 6 , OUTPUT );
pinMode( 9 , OUTPUT );
}
void loop()
{
if(flag!=1)
{
look_left();
delay(2000);
look_right();
delay(2000);
gogo();
}
}
////end////
下边主角试一下镜,成功,拉一下绳子,狗狗停下,然后回头看看,然后再走
真没有想到,试镜时,小车甲的配角居然给我耍大牌,不走直线,不但不走直线,还变速跑,还有角速度划着圈跑,眼里居然没有导演,好啊,老虎不发威当我是加菲猫啊!作为高素质的导演,我很同情演员的心理,两个电机不可能完全一样,接上电,总会有速度差,这也就是为啥需要有测速码盘这东,于是,果断咔嚓了这个演员。咱有的是资源,存货大大滴有,
搜~~噶~,欧系的斯奈,换履带轮小车乙上场,这回,小车乙,接12v电源,履带轮的减速电机要12V,我们接上两节锂电,大约9V左右,速度会更合适些,虽然电机自带调速码盘,但是不需要用,基本上6米左右的距离内,会缓慢地走出有些许弧度的近似直线,在忍受范围内。
下边测试下这个小车乙的演员的基本素质,出问题的地方要测三遍
果然,这个小车乙素质不错,可以培养,也不用费心要51控制,基础很好,有戏。
下边正式开拍,第一场 第一幕 action,哎呀妈,出状况了,大按钮上的笔帽直接被速度差拉下来了,
道具道具,赶紧处理,于是在绳子末端,小车乙这边,加了两根橡皮筋,根据动量定理,增加力的作用时间可以减小力对物体的作用效果,加上了皮筋,力去改变了皮筋的形状,分担了按钮上的笔帽受到的拉力,不至于把笔帽从按钮上拉下来。。。
第一场 第一幕 第二次 action!OK 这次成功了。
最后来个花絮,看看这条绳子群众演员,减速电机确实厉害,绳子太长被卷进去几回,很结实的绳子谈笑间绞成数段。。。
嗯,好了,杀青了。稍微等我下,王家卫给我打电话了。。。。。童鞋们赶紧,我们不但是程序员,还是文艺青年!
|
评分
-
查看全部评分
|