Robofun 機器人論壇

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

請問程式該如何寫才對呢?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-12-15 19:11:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
板上各位好:  我剛接觸程式不算久,遇到一點問題,不知該如何寫才對?
                 麻煩懂程式的前輩們指點, 謝謝

我有一個500個點的序列(data_serial),只有高電位(500)和低電位(1),
time 1 是第一次低電位變高電位的時間點,
time 2 是第二次低電位變高電位的時間點(如下圖)

  time 1 =>   _____      time 2 =>  ______
                   |        |                      |         |
                   |        |                      |         |                  ..........
                   |        |                      |         |
__________ |        |____________|         |__________

     for(i=0;i<500;i++) {
       data_serial[i] = data_serial[i+1]-data_serial[i];
       if(data_serial[i]==499) {
           time 1= millis();            
       }
     }
  上面是我的程式,我要同時抓出來兩個時間點算長度
  我可以抓出time 1的時間點,
  但time 2的時間點不知該如何寫才對??   
  我知道問題很基本但是真的想了好久不知該寫?
加在同一個迴圈裡,time 1跟time 2的值會一樣                  

               希望各位專家達人同好們 可以指點我一下  謝謝
2#
發表於 2013-12-15 23:44:59 | 只看該作者
改這樣
    int  p=1;
     for(i=0;i<500;i++) {
       data_serial[i] = data_serial[i+1]-data_serial[i];
       if(data_serial[i]==499) {
         if (p==1)
             {  time 1= millis();   p=2;}
         else if (p==2)
           { time 2= millis(); break;}
       }
     }
3#
發表於 2013-12-16 08:12:44 | 只看該作者
板上各位好:  我剛接觸程式不算久,遇到一點問題,不知該如何寫才對?
                 麻煩懂程式的前輩們指 ...  time 1 =>   _____      time 2 =>  ______
                   |        |                      |         |
                   |        |                      |         |                  ..........
                   |        |                      |         |
__________ |        |____________|         |__________

     for(i=0;i<500;i++) {
       data_serial = data_serial[i+1]-data_serial;
       if(data_serial==499) {
           time 1= millis();            
       }
     }
vurilate 發表於 2013-12-15 19:11


i的範圍跑到後面似乎會超過喔,for下面第一段data_serial = data_serial[i+1]-data_serial; 的上面到for的}的上面需要加判斷式: if(i<499){...}
4#
 樓主| 發表於 2013-12-16 09:26:13 | 只看該作者
回復 2# mzw2008


    非常感謝~  程式寫法讓我獲益不少    謝謝
5#
 樓主| 發表於 2013-12-16 09:27:37 | 只看該作者
i的範圍跑到後面似乎會超過喔,for下面第一段data_serial = data_serial-data_serial; 的上面到for的}的 ...
omegaCD 發表於 2013-12-16 08:12



    謝謝  我會注意的  我在仔細檢查一下   謝謝提醒
6#
發表於 2013-12-16 12:57:10 | 只看該作者
最後一個怕會超過陣列邊界的問題
可以考慮改
for(i=0;i<500;i++)  >> for(i=0;i<499;i++)

這樣寫有個問題, 就是剛好第500個變HIGH
7#
發表於 2013-12-16 23:10:06 | 只看該作者
i=499的Special Case看是要寫再迴圈內還是外...如果有需要的話還是建議LOOP到結束...0 0
8#
發表於 2013-12-18 23:00:13 | 只看該作者
沒有標準時鐘機解這問題還真棘手
建議您用TMR中斷做一時鐘吧!
分別記錄兩個狀態變化的時間值
再將兩個時間值相減即可
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-30 15:34 , Processed in 0.166196 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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