Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 5082|回復: 3
打印 上一主題 下一主題

[請益]超音波感測器所抓取到的值,如何以LED七段顯示器顯示

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-10-25 16:47:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 chenboshiun19 於 2010-10-25 17:26 編輯

想請教各位前輩三個問題

Q1.如果想用七段顯示器顯示出感測數值的話

    要如何應用呢!?

    希望可以向各位請教方向


Q2.以下是飆機器人所以提供的超音波測距程式、我們想藉此程式去抓取數值到七段顯示器上的話
     要使用get指令嗎

Q3.以RawToIn CON 889 ' 1 / 73.746 (with **)程式段為例,可以請教各位大大RawToIn CON 889  = "1 / 73.746秒數"
      如何計算出來
' -----[ I/O Definitions ]------------------------'定義I/O pin------------
Ping PIN 15                                       
' -----[ Constants ]----------------------------'宣告BAISC Stamp可選擇的晶片組類別-------
#SELECT $STAMP                                    
#CASE BS2, BS2E                                   
Trigger CON 5 ' trigger pulse = 10 uS            
Scale CON $200 ' raw x 2.00 = uS                  
#CASE BS2SX, BS2P, BS2PX                        
Trigger CON 13                                   
Scale CON $0CD ' raw x 0.80 = uS                  
#CASE BS2PE                                       
Trigger CON 5                                    
Scale CON $1E1 ' raw x 1.88 = uS                  
#ENDSELECT                                       
RawToIn CON 889 ' 1 / 73.746 (with **)            
RawToCm CON 2257 ' 1 / 29.034 (with **)         
IsHigh CON 1 ' for PULSOUT                        
IsLow CON 0                                       
' -----[ Variables ]------------------------------'宣告變數-------------------------
rawDist VAR Word ' raw measurement              
inches VAR Word                                   
cm VAR Word                                      
cm2 VAR Word                                      
' -----[ Initialization ]-------------------------'初始化程式段-------------------------
Reset:                                            'Clear screen
DEBUG CLS,
"Parallax PING))) Sonar", CR, ' setup report screen
"======================", CR,
CR,
"Time (uS)..... ", CR,
"Inches........ ", CR,
"Centimeters... "
' -----[ Program Code ]---------------------------'主程式碼-------------------------
Main:
DO                                               
GOSUB Get_Sonar ' get sensor value                 
inches = rawDist ** RawToIn ' convert to inches
cm = rawDist ** RawToCm ' convert to centimeters
DEBUG CRSRXY, 15, 3, ' update report screen      
DEC rawDist, CLREOL,                              '
CRSRXY, 15, 4,
DEC inches, CLREOL,
CRSRXY, 15, 5,
DEC cm, CLREOL
PAUSE 100
LOOP
END
' -----[ Subroutines ]-----------------------------------------------------
Get_Sonar:
Ping = IsLow ' make trigger 0-1-0
PULSOUT Ping, Trigger ' activate sensor
PULSIN Ping, IsHigh, rawDist ' measure echo pulse
rawDist = rawDist */ Scale ' convert to uS
rawDist = rawDist / 2 ' remove return trip
RETURN
playrobot 該用戶已被刪除
2#
發表於 2010-12-20 10:46:52 | 只看該作者
回復 1# chenboshiun19

七段顯示器顯示0~9範例



程式碼:
' {$STAMP BS2}
' {$PBASIC 2.5}
code    VAR   Byte
decode  VAR   Byte
zero    CON   %00000000
one     CON   %01111011
two     CON   %00101100
three   CON   %00101001
four    CON   %01001011
five    CON   %10001001
six     CON   %10001000
seven   CON   %00111011
eight   CON   %00001000
nine    CON   %00001001
OUTH = %00000000
DIRH = %11111111
DO
SERIN 16, 16468,[STR code\1]
decode = code
IF     code = 48 THEN
OUTH = zero
ELSEIF code = 49 THEN
OUTH = one
ELSEIF code = 50 THEN
OUTH = two
ELSEIF code = 51 THEN
OUTH = three
ELSEIF code = 52 THEN
OUTH = four
ELSEIF code = 53 THEN
OUTH = five
ELSEIF code = 54 THEN
OUTH = six
ELSEIF code = 55 THEN
OUTH = seven
ELSEIF code = 56 THEN
OUTH = eight
ELSEIF code = 57 THEN
OUTH = nine
ENDIF
LOOP



程式範例:
x     var    byte

main:
low 3
dira = 15
for x = 0 to 15
outa = x
pause 100
next
goto main

這個程式是有限接收電腦輸入0~9時,BS2的七段顯示器顯示0~9

超音波距離換算是:以英吋換算1130英呎=13560英吋,所以1/13560等於73.746uS
playrobot 該用戶已被刪除
3#
發表於 2010-12-20 10:55:33 | 只看該作者
回復 2# playrobot


    73.746uS = 1/13560 , 所以73.746 = 1uS*13560 => 0.01356
    Word = 65536 , 所以0.01356*65536 = 888.66816(889)
4#
發表於 2011-3-30 22:44:51 | 只看該作者
樓上的大大們
我其實最近也在摸有關超音波的模組
SRF05
http://www.youtube.com/watch?v=VDAoDyV5PmU這是我在網路上看到的
如果我想做成這樣程式需要怎麼寫?可以給個方向嗎?還有我是用C語言!想用AT89S51單晶片來驅動這模組
我有找到相關程式可是我看不大懂
我把它貼在網路上(引用至某大生專題)
圖一
?TTMFzjNBOtG0tOXd
圖二
?TTMFzjNBVg8elSZ9

希望有高手能幫我解惑!或是能指點迷津!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-5 18:33 , Processed in 0.160763 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表