|
PIC Project (IR 计数 + RS232)
[复制链接]
|
|
发表于 25-1-2007 09:53 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 25-1-2007 06:27 PM
|
显示全部楼层
--只是没有debouncing,跑的时候可能会“效笑”(福建), counter乱跳的。
##暂时不能加 debouncing (relay input filtering), 因为 code 太复杂了, 怕 楼主 一时看不明白。 (真正原因:没有时间写)
要 debouncing, 最简单的方法是 用 resistor + capacitor 做 hardware input noice filtering。 |
|
|
|
|
|
|
|
发表于 25-1-2007 06:47 PM
|
显示全部楼层
--GeMan大大和各位高手,一却可行的方法。。。我已考虑IR, Camera, PIR, UltraSonic, 等等, 但有一定的难度。。。有什么建议给小弟吗?
##小弟的浅见: IR sensor 上下 方向,一排过,越 5cm 一个 sensor。两个人同时经过,可以 detect。 |
|
|
|
|
|
|
|
楼主 |
发表于 25-1-2007 08:31 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 26-1-2007 09:29 AM
|
显示全部楼层
回复 #23 GeMan 的帖子
IR sensor 上下 , 是指头到脚吗?一边发射,一边接收?那地上的不容易按装, 用reflector也很奇怪。
IR 反射式(Proximity),是会较理想,但是它的范围很短,我最厉害也只是“勉强”1米 , 但我的要求是最少1.5米(轻松)。 |
|
|
|
|
|
|
|
发表于 26-1-2007 09:36 AM
|
显示全部楼层
回复 #24 meimeyz 的帖子
还有PIC大大,你所说的问题也是我在presentation时,我的moderator问我的问题。。很可惜我答不出来。你有什么好的答案让我明天应付她吗??? 就是那个如果有两个人同时经过那个sensor,那怎么办。。。。
告诉他用Camera, 但一分钱一分货, 或GeMan大大说的, 从头到脚,下整排IR。 |
|
|
|
|
|
|
|
发表于 27-1-2007 10:54 PM
|
显示全部楼层
原帖由 meimeyz 于 25-1-2007 08:31 PM 发表
...
谢谢你们。。。我的成功是你们的最大功劳!!!!!!!!!!
只许这次,下不违律。 (下次不要临时抱佛脚了) |
|
|
|
|
|
|
|
发表于 27-1-2007 11:06 PM
|
显示全部楼层
原帖由 pic 于 26-1-2007 09:29 AM 发表
IR sensor 上下 , 是指头到脚吗?一边发射,一边接收?那地上的不容易按装, 用reflector也很奇怪。
IR 反射式(Proximity),是会较理想,但是它的范围很短,我最厉害也只是“勉强”1米 , 但我的要求是 ...
IR 反射式,但地下放 IR reflector(不是镜子),红色的那种。
IR emittor 加强 power。 IR receiver 用有 daylight filter 的那种。 |
|
|
|
|
|
|
|
楼主 |
发表于 28-1-2007 08:42 PM
|
显示全部楼层
GeMan大大,你写给我的code有问题。。。我用了port B0和B1来当我的第一个input,port B2和B3是我的第二个input.奇怪的是当我用了你的code,只有第二个input能用,还有它出来的data是“00000”,当然第一个input是完全不能用。 为什么会这样的呢???
请问pic大大可以再帮我写过整个code吗???我还有第二个demo的机会。。。(对不起GeMan大大,别生气哦!!! ) |
|
|
|
|
|
|
|
发表于 29-1-2007 12:38 AM
|
显示全部楼层
放心,不会生气的。
因为我没用过 C 来 program,我也不敢说 100% 没问题, 但基本概念 (concept) 是 100% 没问题。
要注意的是:
1。port bit in/out setting
2。这几个 instruction 是否正确 (syntax):
RlyInput1=input(iRelay1);
if(PrevRlyInput1)
如果不能这样用就改成:
while(1)
{
// remember previous relay input status
PrevRlyInput1=RlyInput1;
PrevRlyInput2=RlyInput2;
///////////////////////////////////////
// If Input is Low, Relay Close/Short
if(!input(iRelay1))
{
if(PrevRlyInput1==1) // if previous input high (open) , this means relay clicked, need to add 1
{
counter1++; // increase counter by 1
// always send 2 counter values so that PC will not confuse
printf("%lu\n\r",counter1); // send counter value to PC
printf("%lu\n\r",counter2); // send counter value to PC
}
LED1On; // On LED
RlyInput1=0;
}
if(input(iRelay1)) // If Input is high, Relay open
{
LED1Off; // Off LED
RlyInput1=1;
}
///////////////////////////////////////
// If Input is Low, Relay Close/Short
if(!input(iRelay2))
{
if(PrevRlyInput2==1) // if previous input high (open) , this means relay clicked, need to add 1
{
counter2++; // increase counter by 1
// always send 2 counter values so that PC will not confuse
printf("%lu\n\r",counter1); // send counter value to PC
printf("%lu\n\r",counter2); // send counter value to PC
}
LED2On; // On LED
RlyInput2=0;
}
if(input(iRelay2)) // If Input is high, Relay open
{
LED2Off; // Off LED
RlyInput2=1;
}
///////////////////////////////////////
// Read RS232
ReadRS232();
}
[ 本帖最后由 GeMan 于 29-1-2007 01:08 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 29-1-2007 01:29 AM
|
显示全部楼层
最好是用 port B 的 pin 1,2,4,5 做为relay input 及 LED output。 |
|
|
|
|
|
|
|
发表于 29-1-2007 08:11 AM
|
显示全部楼层
原帖由 meimeyz 于 28-1-2007 08:42 PM 发表
GeMan大大,你写给我的code有问题。。。我用了port B0和B1来当我的第一个input,port B2和B3是我的第二个input.奇怪的是当我用了你的code,只有第二个input能用,还有它出来的data是“00000”,当然第一个input是 ...
对不起,看不出有什么理由要帮你写第三次, 得寸进尺。已经说过,有问题可以问。。。
相信GeMan也是最后一次帮她了。。。 |
|
|
|
|
|
|
|
发表于 29-1-2007 12:15 PM
|
显示全部楼层
Meimeyz,不知你是不是真的是女生。。。
但无论如何,你犯了很大的错误。。。
第一,都要截止日期了,你才要开始想要怎样写code。要问的话,不是拖到这种地步才问的。应该在project开始或一半时,就问了的。
第二,你一而再,再而三的叫人写code。可以,但你必须要要问是什么问题,而不是叫人写。这样做太得寸进尺了。
第三,请不要用你爱我,我爱你来解决project的问题。
你好好想想。。。
[ 本帖最后由 Right 于 29-1-2007 12:16 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 29-1-2007 08:55 PM
|
显示全部楼层
对不起。。。如果不是我的project临时被要求要改的话我也不会到处找人求救。。。还有请不要怀疑我的性别。。。我从来不会要他人可怜我而掩饰自己的性别。我也没有用所谓的“我爱你,你爱我”的方式来换取些什么,我只是不懂要怎样来报答帮过我的人所以才会这样说。。。
当然帮还是不帮是你们的权力。。。如果你们选择不帮的话我也没话好说,也不能做些什么。。。谢谢你们教了我这么多的东西。。。 |
|
|
|
|
|
|
|
发表于 30-1-2007 11:09 AM
|
显示全部楼层
“帮还是不帮是你们的权力。。。如果你们选择不帮的话我也没话好说”。 已经帮了啊,还帮了不少, 你说对吗?
很多时候, 同学在做project时, 会觉得没有头绪, 无从下手, 无助, 很需要有人能帮一把(Kick Start),但我认为只是帮一把, 不是送佛送到西,所以这里不是帮人做功课的地方,一开始已经说得很清楚了。。。
最基本的要求是自己试作做,遇到问题,可以讨论,但也需要向大家展示你做了什么,把有问题的源码放出来,让大家来抓虫,从中互相学习,这是正确的学习态度。
人生会有很多变数, 怎样面对也是历练的一种。以后如果工作了,突然老板或顾客临时改变主意,打乱了你的schedule,工作交不出来,怎么办?有限度的求助是一种方法,然后自助才是最终的方法,过关了,你发觉你也成长了,面对危机的能力也强了。
RIGHT网友只是把他的疑问提出,站在他的角度来看是没错啊。。。现在你已经澄清了,疑问也解除了。
如果你遇到和电子或MCU有关的问题,这里是很欢迎大家来发问的。。。 |
|
|
|
|
|
|
|
发表于 31-1-2007 06:52 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 31-1-2007 10:35 PM
|
显示全部楼层
GeMan大大,我这几个天没去上课。。。因为我病倒了。。。我下个星期三才去试试看能不能。。。因为我学校的工作室每天都有人上课,只有星期三下午能用而已。。。对不起哦。。。 |
|
|
|
|
|
|
|
发表于 12-2-2007 04:33 PM
|
显示全部楼层
若还有时间,不仿到此网站询问:
www.mikroe.com/forum
C 的找 MikroC forum
BASIC 的找 MikroBasic forum
此网站本是Mikroelectonical的官方网站 |
|
|
|
|
|
|
|
发表于 22-2-2007 01:38 PM
|
显示全部楼层
现在做学生的生意好像不错~~有钱学生特别多
哈哈~~~ |
|
|
|
|
|
|
| |
本周最热论坛帖子
|