{"id":1213,"date":"2025-12-04T11:11:56","date_gmt":"2025-12-04T03:11:56","guid":{"rendered":"https:\/\/www.640629.xyz\/?p=1213"},"modified":"2025-12-10T11:58:59","modified_gmt":"2025-12-10T03:58:59","slug":"4%e4%bd%8d%e5%85%83%e4%b8%83%e6%ae%b5%e9%a1%af%e7%a4%ba%e5%99%a8%e6%87%89%e7%94%a8-%e7%94%b1%e7%9b%a3%e7%9c%8b%e8%a6%96%e7%aa%97%e8%87%aa%e8%a1%8c%e8%bc%b8%e5%85%a5%e6%95%b8%e5%80%bc%e4%b9%8b","status":"publish","type":"post","link":"https:\/\/www.640629.xyz\/?p=1213","title":{"rendered":"4\u4f4d\u5143\u4e03\u6bb5\u986f\u793a\u5668\u61c9\u7528\u2014\u7531\u76e3\u770b\u8996\u7a97\u81ea\u884c\u8f38\u5165\u6642\u9593\u6578\u503c\u4e4b\u5012\u6578\u8a08\u6642\u5668"},"content":{"rendered":"\n<p>\u53c3\u8003\u7a0b\u5f0f\u78bc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp line-numbers\">\/\/---------------------------------------------------------------------------\nconst int pb = 34;                   \/\/ \u6309\u9215\u958b\u95dc\u63a5\u8173\nbool lastButtonState = HIGH;         \/\/ \u6309\u9215\u958b\u95dc\u524d\u4e00\u6b21\u7684\u72c0\u614b\nunsigned long lastDebounceTime = 0;  \/\/ \u6309\u9215\u958b\u95dc\u524d\u4e00\u6b21\u72c0\u614b\u6539\u8b8a\u6642\u7684millis()\u6642\u9593\nint debounceDelay = 150;             \/\/ \u9632\u5f48\u8df3\u9810\u8a2d\u7684\u5ef6\u9072\u6642\u9593\nunsigned long buttonDownTime = 0;    \/\/ \u6309\u9215\u958b\u95dc\u88ab\u6309\u4e0b\u7684\u6642\u9593(\u9577\u6309\u6642\u4f7f\u7528)\nunsigned long longPressTime = 1500;  \/\/ \u9577\u6309\u6642\u9593(\u9577\u6309\u6642\u4f7f\u7528)\n\/\/---------------------------------------------------------------------------\nbool startCount = 0;     \/\/ (0:\u505c\u6b62\uff0c1:\u958b\u59cb)\nint count = 9999;        \/\/ \u8a08\u6578\u5668\uff0c\u521d\u503c\u70ba9999\n\/\/---------------------------------------------------------------------------\nunsigned long previousMillis = 0;    \/\/ \u524d\u4e00\u6b21\u7684millis()\u6642\u9593\nconst long interval = 100;           \/\/ \u9810\u8a2d\u8a08\u6642\u7684\u6642\u9593\n\/\/---------------------------------------------------------------------------\nint seg[8] = {15, 16, 17, 18, 19, 21, 22, 23};\n\/\/ \u5c0d\u61c9\u7684\u63a5\u8173 { a,  b,  c,  d,  e,  f,  g, dp}\nint data[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x67,0x00};\n\/\/ \u986f\u793a\u7684\u6578\u5b57 { 0  ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 ,\u5168\u6ec5}\nint com[4] = {25, 26, 27, 14};\n\/\/ \u5c0d\u61c9\u7684\u63a5\u8173 {com1,com2,com3,com4}\nint digit[4] = {   8  ,   4  ,   2  ,   1  };\n\/\/ \u4f4d\u5143\u6383\u7784     {\"1000\",\"0100\",\"0010\",\"0001\"};\nint num[4] = {0, 0, 0, 0};\n\/\/ \u5404\u4f4d\u5143\u6578\u503c {\u5343,\u767e,\u5341,\u500b}\n\/\/---------------------------------------------------------------------------\nint input;        \/\/ \u4e32\u5217\u57e0\u8f38\u5165\u7684\u6578\u503c\n\/\/---------------------------------------------------------------------------\n\nvoid setup() {\n  \/\/--------------------------------------------------\n  Serial.begin(9600);     \/\/ \u555f\u7528\u4e32\u5217\u57e0\u76e3\u770b\u8996\u7a97\n  Serial.println(\"Enter a number(0~9999):\");  \/\/\u8f38\u5165\u63d0\u793a\n  \/\/--------------------------------------------------\n  pinMode(pb, INPUT);     \/\/ \u521d\u59cb\u5316\u6309\u9215\u958b\u95dc\n  \/\/--------------------------------------------------\n  \/\/ \u521d\u59cb\u5316\u4e03\u6bb5\u986f\u793a\u5668a~g\u3001dp\u63a5\u8173\n  for(int i=0; i&lt;=7; i++)\n  {\n    pinMode(seg[i], OUTPUT);\n    digitalWrite(seg[i],0);   \/\/ \u5168\u6ec5\n  }\n  \/\/--------------------------------------------------\n  \/\/ \u521d\u59cb\u5316\u4e03\u6bb5\u986f\u793a\u5668com1~com4\u63a5\u8173\n  for(int i=0; i&lt;=3; i++)\n  {\n    pinMode(com[i], OUTPUT);\n    digitalWrite(com[i],0);   \/\/ \u5168\u6ec5    \n  }\n  \/\/--------------------------------------------------\n}\n\nvoid loop() {\n  \/\/ ---------------------------------------------------------------------------------------------------------------\n  if (Serial.available()) \/\/\u82e5\u4e32\u5217\u57e0\u6709\u8f38\u5165\u8cc7\u6599\uff0c\u5247\u57f7\u884c\u4e0b\u5217\u7a0b\u5f0f\u5340\u584a\n  {\n    input = readNumber();\n    if(input &gt;=0 &amp;&amp; input &lt;=9999)\n    {\n      count = input;\n    }\n    else\n    {\n      Serial.println(\"Error, wrong number.\");\n      Serial.println(\"Enter a number(0~9999):\");  \/\/\u8f38\u5165\u63d0\u793a\n    }\n  }\n\n  \n  \/\/ ---------------------------------------------------------------------------------------------------------------\n  unsigned long currentTime = millis();  \/\/ \u7576\u524d\u7684millis()\u6642\u9593\n  bool buttonState = digitalRead(pb);    \/\/ \u7576\u524d\u7684\u6309\u9215\u958b\u95dc\u72c0\u614b\uff1a\u672a\u6309\u4e0b(HIGH)\uff0c\u6309\u4e0b(LOW)\n\n  \/\/ \u82e5\u6309\u9215\u958b\u95dc\u72c0\u614b\u767c\u751f\u8b8a\u5316\uff0c\u4e14\u8d85\u904e\u9632\u5f48\u8df3\u9810\u8a2d\u7684\u5ef6\u9072\u6642\u9593\n  if ((buttonState != lastButtonState) &amp;&amp; (currentTime - lastDebounceTime) &gt; debounceDelay)\n  {\n    \/\/ --------------------------------------------------------------------------------------\n    if (lastButtonState == HIGH &amp;&amp; buttonState == LOW)        \/\/ \u82e5\u6309\u9215\u5f9e\u672a\u6309\u4e0b(HIGH)\u5230\u6309\u4e0b(LOW)\n    {\n      \/\/ --------------------------------------------------\n      \/\/ \u6309\u9215\u6309\u4e0b\u6642\uff0c\u60f3\u505a\u7684\u4e8b\n      \/\/ --------------------------------------------------\n      buttonDownTime = currentTime; \/\/\u8a18\u9304\u6309\u9215\u6309\u4e0b\u7684\u6642\u9593\n      \/\/ --------------------------------------------------\n\n    }\n    else if (lastButtonState == LOW &amp;&amp; buttonState == HIGH)   \/\/ \u82e5\u6309\u9215\u5f9e\u6309\u4e0b(LOW)\u5230\u672a\u6309\u4e0b(HIGH)\n    {      \n      \/\/ --------------------------------------------------\n      \/\/ \u6309\u9215\u653e\u958b\u6642\uff0c\u60f3\u505a\u7684\u4e8b\n      \/\/ --------------------------------------------------\n      startCount = !startCount;           \/\/ \u53d6\u53cd\u76f8\n      if(startCount==0)\n      {\n        Serial.println(\"Stop.\");          \/\/ \u5370\u51fa\u505c\u6b62\u72c0\u614b  \n      }\n      else\n      {\n        Serial.println(\"Start count...\"); \/\/ \u5370\u51fa\u958b\u59cb\u8a08\u6578\u72c0\u614b  \n      }\n      \/\/ --------------------------------------------------\n      if((currentTime - buttonDownTime) &gt;= longPressTime)\n      {\n        Serial.println(\"Long press detected, count reset.\");\n        count=9999;             \/\/ \u91cd\u7f6e\u8a08\u6578\u5668\n        startCount=0;           \/\/ \u505c\u6b62\u8a08\u6578\n        Serial.print(\"Button pressed count: \");   \/\/ \u5370\u51fa\u8a08\u6578\u5668\u5167\u5bb9\n        Serial.println(count);                    \/\/ \u5370\u51fa\u8a08\u6578\u5668\u5167\u5bb9\n      }        \n      \/\/ --------------------------------------------------            \n    }\n    \/\/ --------------------------------------------------------------------------------------\n    lastButtonState = buttonState;    \/\/ \u66f4\u65b0\u6309\u9215\u72c0\u614b\n    lastDebounceTime = currentTime;   \/\/ \u66f4\u65b0\u524d\u4e00\u6b21\u72c0\u614b\u6539\u8b8a\u6642\u7684millis()\u6642\u9593\n  }\n  \/\/ ---------------------------------------------------------------------------------------------------------------\n\n\n  \/\/ ----------------------------------------------------------------------\n  \/\/ \u6bcf\u7d93\u904e\u4e00\u500binterval\u7684\u6642\u9593\uff0c\u8981\u505a\u7684\u4e8b\n  \/\/ ----------------------------------------------------------------------\n  unsigned long currentMillis = millis();          \/\/ \u7576\u524d\u7684millis()\u6642\u9593\n\n  if (currentMillis - previousMillis &gt;= interval)  \/\/ \u82e5\u9054\u5230\u9810\u8a2d\u8a08\u6642\u7684\u6642\u9593\n  {\n    \/\/---------------------------------------------------------------------\n    \/\/ \u82e5\u8a2d\u5b9a\u70ba\u958b\u59cb\u8a08\u6578\uff0c\u5247\u57f7\u884c\u4e0b\u5217\u7a0b\u5f0f\n    \/\/---------------------------------------------------------------------\n    if(startCount == 1)\n    {\n      count = count - 1;      \/\/ \u8a08\u6578\u5668\u6e1b1\n      Serial.println(count);      \n    }\n    \/\/---------------------------------------------------------------------\n\n    previousMillis = currentMillis;  \/\/ \u66f4\u65b0\u524d\u4e00\u6b21\u7684millis()\u6642\u9593\n  }\n  \/\/ ----------------------------------------------------------------------\n\n\n  \/\/-------------------------------------\n  \/\/ \u986f\u793a\u6578\u5b57\n  \/\/-------------------------------------\n  num[0] = count \/ 1000 % 10;   \/\/ \u5343\u4f4d\n  num[1] = count \/ 100 % 10;    \/\/ \u767e\u4f4d\n  num[2] = count \/ 10 % 10;     \/\/ \u5341\u4f4d\n  num[3] = count % 10;          \/\/ \u500b\u4f4d\n  showNum();\n  \/\/-------------------------------------\n\n}\n\nvoid showdata(int x)\n{\n  for(int i=0; i&lt;7; i++)\n  digitalWrite(seg[i],bitRead(data[x],i));\n}\n\nvoid scan(int x){\n  for(int i=0; i&lt;4; i++)    \n  digitalWrite(com[i],bitRead(digit[x],3-i));\n}\n\nvoid showNum()\n{\n  for(int i=0; i&lt;4; i++)\n  {\n    showdata(num[i]); \n    scan(i);\n    delay(1);  \n  }\n}\n\n\/\/ \u8b80\u53d6\u4e00\u500b\u6574\u6578\nint readNumber()\n{\n  while (!Serial.available());  \/\/ \u7b49\u5f85\u4e32\u5217\u57e0\u8f38\u5165\n  String input = Serial.readStringUntil('\\n');  \/\/\u8b80\u53d6\u4e00\u884c\u7684\u8f38\u5165\u8cc7\u6599\uff0c\u76f4\u5230\u63db\u884c\u7b26\u865f\u70ba\u6b62(\u6309\u4e0benter\u9375)\n  input.trim();                 \/\/\u53bb\u9664\u8f38\u5165\u5b57\u4e32\u524d\u5f8c\u7684\u7a7a\u767d\u5b57\u5143\n  Serial.println(input);        \/\/\u5370\u51fa\u8f38\u5165\u5b57\u4e32\n  return input.toInt();         \/\/\u8f49\u63db\u70ba\u6574\u6578\n}<\/code><\/pre>\n\n\n\n<p>\u4f5c\u696d\u7df4\u7fd2\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u958b\u6a5f\u5f8c\uff0c4\u4f4d\u5143\u4e03\u6bb5\u986f\u793a\u5668\u986f\u793a\u6b32\u5012\u6578\u8a08\u6642\u7684\u521d\u59cb\u6642\u9593(\u4f8b\uff1a1200\u4ee3\u886812:00\uff0c\u6642\u959312:00\u219211:59\u219211:58\u2192&#8230;&#8230;\u219211:01\u219211:00\u219210:59\u2192&#8230;&#8230;\u219200:00)\u3002<\/li>\n\n\n\n<li>\u6bcf\u6309\u4e00\u4e0b\u6309\u9215\u958b\u95dc\uff0c\u53ef\u958b\u59cb\u6216\u505c\u6b62\u5012\u6578\u8a08\u6578(\u6bcf\u79d2\u6e1b1\uff0c\u76f4\u52300000\u505c\u6b62)\u3002<\/li>\n\n\n\n<li>\u9577\u6309\u6309\u9215\u958b\u95dc\uff0c\u8a08\u6578\u5668\u91cd\u7f6e\u70ba\u521d\u59cb\u6642\u9593\u3002<\/li>\n\n\n\n<li>\u4efb\u4f55\u904e\u7a0b\u4e2d\uff0c\u53ef\u4ee5\u900f\u904e\u76e3\u770b\u8996\u7a97\u6539\u8b8a\u5012\u6578\u8a08\u6642\u7684\u6578\u503c\u3002(\u8f38\u5165\u7bc4\u570d0000~5959)<\/li>\n\n\n\n<li>\u4e03\u6bb5\u986f\u793a\u5668\u7684\u72c0\u614b\u5fc5\u9808\u540c\u6b65\u986f\u793a\u5728\u76e3\u770b\u8996\u7a97\u4e0a\u3002<\/li>\n\n\n\n<li>\u8acb\u5b8c\u6210\u5be6\u9ad4\u63a5\u7dda\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u91cd\u9ede\u63d0\u793a\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e0d\u53ef\u76f4\u63a5\u5c0d 4 \u4f4d\u6578\u5b57\u505a count&#8211;\uff0c\u5426\u5247\u6703\u8b8a\u6210 12:00 \u2192 11:99 \u2192 11:98\u2026 \u9020\u6210\u986f\u793a\u932f\u8aa4\u3002<\/li>\n\n\n\n<li>\u6b63\u78ba\u89c0\u5ff5\uff1a<strong>\u8f38\u5165\u683c\u5f0f (MMSS)<\/strong> \u2192 <strong>\u5167\u90e8\u683c\u5f0f(\u79d2)<\/strong> \u2192 <strong>\u8f38\u51fa\u683c\u5f0f (MMSS)<\/strong>\u3002<\/li>\n\n\n\n<li>\u8f38\u5165\u6578\u503c\u7bc4\u570d\u5728 0~5959 \u4e4b\u9593\uff0c\u5169\u4f4d\u70ba\u5206\u3001\u5169\u4f4d\u70ba\u79d2\uff0c\u5206\u6578\u3001\u79d2\u6578\u5fc5\u9808\u5c0f\u65bc 60\u3002<\/li>\n\n\n\n<li>\u5c07\u8f38\u5165\u503c\u8f49\u63db\u70ba\u300c\u7e3d\u79d2\u6578\u300d\u9032\u884c\u5012\u6578\u8a08\u6642\u8655\u7406\u3002<\/li>\n\n\n\n<li>\u986f\u793a\u6642\uff0c\u518d\u5c07\u300c\u7e3d\u79d2\u6578\u300d\u8f49\u63db\u70ba\u300c MM:SS \u300d\u8f38\u51fa\u5230\u4e03\u6bb5\u986f\u793a\u5668\u3002<\/li>\n<\/ol>\n\n\n\n<pre title=\"\u601d\u8003\u6d41\u7a0b\" class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">[\u8f38\u5165\u6578\u503c 1200] (\u4ee3\u8868 12\u520600\u79d2)\n      \u2193\n(\u62c6\u89e3\u8207\u9a57\u8b49) MM=12, SS=00\n      \u2193\n(\u8f49\u70ba\u7e3d\u79d2\u6578) 12*60 + 0 = [720 \u79d2]  &lt;--- \u8a08\u6642\u5668\u7684\u6838\u5fc3\n      \u2193\n(\u6bcf\u4e00\u79d2\u9418)   720 - 1 = 719, 718...\n      \u2193\n(\u986f\u793a\u904b\u7b97)   719 \u79d2 \u662f\u5e7e\u5206\u5e7e\u79d2\uff1f\n             719 \/ 60 = 11 (\u5206)\n             719 % 60 = 59 (\u79d2)\n      \u2193\n[\u7d44\u5408\u6210\u986f\u793a] 11*100 + 59 = [1159]\n      \u2193\n[\u4e03\u6bb5\u986f\u793a\u5668] 11:59<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u53c3\u8003\u7a0b\u5f0f\u78bc \u4f5c\u696d\u7df4\u7fd2\uff1a \u91cd\u9ede\u63d0\u793a\uff1a<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1213","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1213"}],"version-history":[{"count":15,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1213\/revisions"}],"predecessor-version":[{"id":2316,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=\/wp\/v2\/posts\/1213\/revisions\/2316"}],"wp:attachment":[{"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.640629.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}