: .
的方案到现在更好的方案,两个系统是完全相同的吗?答案是否定的。首先,你需要决定厢的绝对位置,当它在第二层时,你仅是可以知
道它的相对位置。那么,你需要一个初始点,
者程序运行时,需要厢体在一个特定的位置,或者用第二个传感器来探测一个特定的楼层。
例如,在最底层放置一个传感器,因此程序一开始就降下电梯到最底层。那样就可以计算出
厢体的绝对位置了。
现在,电梯就能够准确的升降了。但你还有最后一个问题需要解决:如何告诉你的
电梯它应该去哪一层呢?在每一楼层放置一个传感器去提示电梯是不切合实际的。在 RCX
上只剩下一个输入端口了。你要用这一个触动传感器来做什么呢?你还可以采用以前的方法
吗?可以,你可以计算一个触动传感器被下的按 次数。 比如说,被下按 三次表示是三楼, 依
次类推。现在你就可以去搭建你的电梯了。
方法与技巧
计算下按 次数
下面这个例子是用伪代码来编写的,一个代码并不与实际编写语言相对应,而是界
于程序语言和机器语言之间。使用伪代码编程在专业程序员中是一种非常普遍的做
法。
计算触动传感器被下按 多少次需要一些小窃门。假如你写了一些简单的代码, 如下:
Counter =0
repeat
if Sensor1 is on then
Counter = Counter +1
end if
end repeat
当你保持触动传感器被下按 很短的间隔内,你的程序代码就会在你的 RCX上飞快的
执行。然而,在记录下一个新的下按 之前,需要松开触动传感器:
Counter = 0
repeat
if Sensor1 is on thenCounter =Counter+1
wait until Sensor1 is off
end if
end repeat
现在,你编写的代码正确地记录了从断开到闭合的变化。在你的代码中,有一个重
要的特点需要介绍一下:当它在一段时间内接收不到触动信息时,你希望你的计数
程序停止。为了实现这一点,你需要使用一个计时器用来测量上一次按下时间与最
后一次时间的间隔:
Counter=0
interval = <avalve> proper
reset Timer
repeat
if Sensor1 is on then
Counter = Counter + 1
wait until isSensor1 off
or until Timer if greater then Interval
reset Timer
end if
until Timer is greaterInterval then
假如你的时间间隔是两秒。当计数程序开始时,计时器和计数器首先复位为 0,然后
开始检测传感器的状态。如果两秒内没有按下触动传感器,它仍将保持复位状态,
如果有触动传感器被按下,此动作将被记下并等待使用者释放按钮,计时器复位为
零, 在程序停止运行之前,使用者可以在两秒内第二次按下触动传感器。
用”看”来形容光电传感器的功能有点夸大其辞。实上它际 只是用来检测光并测量其强度。
尽管受到限制,但其应用范围仍比较广。图
光电传感器和触动传感器的最大区别是,后者返回的是一些数值而不是单纯的开/关状态。
你所读到的数值由光电传感器在那个时候所检测到的光强所决定。这些数值以
第四章乐高传感器 来自淘豆网m.daumloan.com转载请标明出处.