痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 6175|回復: 5

[實做與討論] 康大要的arduino 程式~

[複製鏈接]
發表於 2020-10-24 07:35:38 | 顯示全部樓層 |閱讀模式
康大在搞的玩具需要arduino 幫忙~

所以就從底下連結,取出之前的程式:
https://bbs.pigoo.com/thread-67627-1-1.html

功能新增加為:
*程式需要加入第2隻I/O腳控制。
*程式控制為5秒-10秒。
*第1腳啟動後在結束前2秒時啟動第2隻腳。
*第2腳啟動4秒後關閉


  1. #include<arduino.h>
  2. #include "PT6961.h"
  3. #include "Pushbutton.h"

  4. #define OUTPUT_CONTROL 13
  5. #define OUTPUT_CONTROL_2 12 // 第2組控制腳
  6. #define BUTTON 7
  7. #define KEY_UP 6
  8. #define KEY_DOWN 5

  9. #define PT6961_CS 10
  10. #define PT6961_CLK 9
  11. #define PT6961_DIN 8

  12. #define START_TIME 5000 // 最短為5秒開始調整

  13. Pushbutton button_enter(BUTTON);
  14. Pushbutton button_up(KEY_UP);
  15. Pushbutton button_down(KEY_DOWN);
  16. //PT6961 LED(PT6961_CS, PT6961_CLK, PT6961_DIN);
  17. PT6961 LED(PT6961_DIN, PT6961_CLK, PT6961_CS);
  18. uint16_t hold_time = START_TIME; // start from 500ms

  19. void setup()
  20. {
  21.   pinMode(OUTPUT_CONTROL,OUTPUT);
  22.   pinMode(OUTPUT_CONTROL_2,OUTPUT); // 第2組 I/O 腳設成輸出
  23.   LED.initDisplay();
  24. }

  25. void loop()
  26. {
  27.   while(1)
  28.   {

  29.     LED.sendNum(hold_time,0);
  30.     while(!button_enter.isPressed()) // check key up/down if no enter key pressed.
  31.     {
  32.       // process key up pressed
  33.       while(button_up.isPressed() && hold_time < 10000) // 上鍵更新時間,如果時間沒超過10秒
  34.       {
  35.         hold_time+=10;
  36.         LED.sendNum(hold_time,0);
  37.         delay(150); // simple debonce
  38.         if(!button_up.isPressed()) break;      
  39.       }
  40.       // process key down pressed
  41.       while(button_down.isPressed() && hold_time > START_TIME) // 下鍵更新時間,如果時間沒有小於5秒
  42.       {
  43.          hold_time-=10;
  44.          LED.sendNum(hold_time,0);
  45.          delay(150);
  46.          if(!button_down.isPressed()) break;
  47.       }
  48.     }

  49.     // trun on
  50.     digitalWrite(OUTPUT_CONTROL,HIGH);
  51.     delay(hold_time - 2000); // 第1組啟動結束2秒前需啟動第2組I/O腳,所以delay先扣2秒
  52.     digitalWrite(OUTPUT_CONTROL_2,HIGH); // 啟動第2組 I/O 腳並 delay 4 秒
  53.     delay(2000);
  54.     digitalWrite(OUTPUT_CONTROL,LOW);
  55.     delay(2000);
  56.     digitalWrite(OUTPUT_CONTROL_2,LOW);
  57.     button_enter.waitForRelease();
  58.   }
  59. }
複製代碼


uno_2_pins_demo.zip (5.64 KB, 下載次數: 5)

評分

9

查看全部評分

發表於 2020-10-24 19:06:42 | 顯示全部樓層
哇!救星到了,老師效率好快哦! 早該向您求救了,搞了十幾天,差點要爆炸了,謝謝您!感恩~~~
發表於 2020-10-24 19:21:02 | 顯示全部樓層
本帖最後由 康品穎 於 2020-10-24 07:22 PM 編輯

請問老師;如果每次開機,全會默認為7秒,是否改這行就可以
#define START_TIME 5000 // 最短為5秒開始調整
改為;#define START_TIME 7000 //
 樓主| 發表於 2020-10-24 20:57:26 | 顯示全部樓層
康品穎 發表於 2020-10-24 07:21 PM
請問老師;如果每次開機,全會默認為7秒,是否改這行就可以
#define START_TIME 5000 // 最短為5秒開始調整 ...

是的~~~~

評分

1

查看全部評分

發表於 2020-10-25 00:27:37 | 顯示全部樓層
康品穎 發表於 2020-10-24 07:21 PM
請問老師;如果每次開機,全會默認為7秒,是否改這行就可以
#define START_TIME 5000 // 最短為5秒開始調整 ...

如果無關安全考慮,這類情況
若你本身有些想法就直接先試,試完累積整理再提出討論成敗有無更好方案
比較更能體會各種細節

有些想法卻先問答案才動手 腦子會變差  要累積嚐試突破的勇氣

評分

1

查看全部評分

發表於 2020-10-26 11:27:38 | 顯示全部樓層
SIMON1016 發表於 2020-10-25 12:27 AM
如果無關安全考慮,這類情況
若你本身有些想法就直接先試,試完累積整理再提出討論成敗有無更好方案
比較 ...

SIMON大說得是.

不過這篇樓主的提問其實還好

完全沒看CODE直接發問的問法
個人覺得應該是...

請問老師;如果每次開機,要改為默認7秒要改哪邊?  
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-18 02:45 AM , Processed in 0.251741 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.