※ 引述《TZYuan (5ichiya)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Win10
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: Arduino IDE
: 個位大大好,新手首PO,想說arduino跟C滿像的就PO在這了,如違反板規再煩請告知。
: 現在在寫數字選單,假設選單從1到100,想要按一次右鍵,參數就+1,按著右鍵就連續加
: ,且按著越久,數字增加越快,加到100之後就跳到1繼續,左鍵類似,只是數字是減的。
: 有些電器調時間就有這個功能,google很久,一直找不到,不知道要打甚麼關鍵字。
: 請問要打甚麼關鍵字,或是要怎麼寫迴圈,有推薦現成的函式庫也可以。
: 現在已經用while迴圈寫好按一次可以+1,想問連續加要怎麼寫?
: 以下是目前的code
: stick = ps2x.Analog(PSS_LX), DEC;
: while( stick == 0 ){
: val--;
: if (val<1)
: val=5;
: Serial.print("Speed : ");
: Serial.print(val);
: Serial.println(" um/s");
: delay(500);
: break;
: }
: while( stick == 255 ){
: val++;
: if (val>5)
: val=1;
: Serial.print("Speed : ");
: Serial.print(val);
: Serial.println(" um/s");
: delay(500);
: break;
: }
: 感激不盡~
#define TRIGGER_TIME (1500)
#define REGULAR_TIME (500)
#define BOOST_TIME (250)
#define MAX_VALUE (5)
#define MIN_VALUE (1)
unsigned long st;
int tri_f = 1;
int stick = ps2x.Analog(PSS_LX);
while(1) {
if (tri_f) {
tri_f = 0;
st = millis();
}
if (stick == 0) val = ++val > MAX_VALUE? MIN_VALUE: val;
else if (stick == 255) val = --val < MIN_VALUE? MAX_VALUE: val;
else break;
if (millis() - st > TRIGGER_TIME) delay(BOOST_TIME);
else delay(REGULAR_TIME);
}
大概4這樣,沒有驗過自己檢查
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.68.97 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1582181295.A.182.html
※ 編輯: qscgy4 (220.132.68.97 臺灣), 02/20/2020 14:49:51