사용자 도구

사이트 도구


commands:reference:ictu

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
commands:reference:ictu [2026/09/01 20:04] – 만듦 - 바깥 편집 127.0.0.1commands:reference:ictu [2026/09/08 00:53] (현재) – 바깥 편집 127.0.0.1
줄 10: 줄 10:
  
 ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^ ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^
-| ''Ictu(counter_id, CU, RESET, PV)'' | ''uint8_t counter_id'' — 카운터 번호. ''uint8_t'' 범위이므로 ''0'' ~ ''255'' 사용 가능\\ ''bool CU''\\ ''bool RESET''\\ ''int32_t PV'' — 설정값 | ''bool'' | 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다. |+| ''Ictu(counter_id, CU, RESET, PV)'' | ''uint8_t counter_id'' — 카운터를 구분하는 번호. 같은 작업에는 같은 번호 사용\\ ''bool CU'' — 개수를 셀 입력 신호. LOW에서 HIGH로 바뀔 때 1 증가\\ ''bool RESET'' — true이면 현재 카운트값을 0으로 초기화\\ ''int32_t PV'' — 목표 개수. 현재이 이 값 이상이면 true 반환 | ''bool'' | 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다. | 
 + 
 +**처음 사용하는 분을 위한 설명** 
 + 
 +''Ictu()''는 센서가 켜져 있는 시간을 재는 명령어가 아니라, 센서가 ''LOW''에서 ''HIGH''로 바뀐 횟수를 세는 명령어입니다. 예를 들어 물건이 센서 앞을 한 번 지나가면 입력이 ''LOW → HIGH → LOW''로 변하고 카운터는 1 증가합니다. 센서가 계속 ''HIGH''인 동안에는 여러 번 세지 않습니다. 
 + 
 +호출 형식 ''Ictu(counter_id, CU, RESET, PV)''는 다음과 같이 읽으면 됩니다. 
 + 
 +  * ''counter_id'': 여러 카운터를 구분하는 번호입니다. 같은 작업에는 항상 같은 번호를 사용합니다. 
 +  * ''CU'': 개수를 셀 입력입니다. ''LOW → HIGH''로 바뀌는 순간에 현재값이 1 증가합니다. 
 +  * ''RESET'': ''true''이면 현재값을 0으로 지웁니다. RESET 중에는 CU가 켜져도 세지 않습니다. 
 +  * ''PV'': 목표 개수입니다. 현재값이 이 값 이상이면 반환값이 ''true''가 됩니다. 
 + 
 +''loop()''에서 계속 호출해야 입력 변화를 확인할 수 있습니다. 아래 예제에서는 입력 0번 센서로 물건 5개를 세고, 목표에 도달하면 보드의 상태 LED를 켭니다. 입력 1번 리셋 버튼을 누르면 다시 0개부터 셉니다. 
  
 ===== 예제 ===== ===== 예제 =====
  
 <code cpp> <code cpp>
 +const uint8_t COUNTER_ID = 0;
 +const uint8_t ITEM_SENSOR_PIN = 0;
 +const uint8_t RESET_BUTTON_PIN = 1;
 +const uint8_t FULL_LAMP_PIN = LED_BUILTIN;
 +const int32_t BOX_CAPACITY = 5;
 +
 +void setup() {
 +  Serial.begin(115200);
 +}
 +
 void loop() { void loop() {
-  bool pulse = digitalRead(0);+  const bool itemSensor = digitalRead(ITEM_SENSOR_PIN) == HIGH; 
 +  const bool resetButton = digitalRead(RESET_BUTTON_PIN) == HIGH; 
 +  const bool boxFull = Ictu(COUNTER_ID, itemSensor, resetButton, BOX_CAPACITY);  // 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다. 
 +  digitalWrite(FULL_LAMP_PIN, boxFull ? HIGH : LOW);
  
-  if (Ictu(40, pulse, false, 10)) { +  static bool previousBoxFull = false; 
-    digitalWrite(13, HIGH);+  if (boxFull && !previousBoxFull) { 
 +    Serial.println(F("5 items counted: box is full"));
   }   }
 +  previousBoxFull = boxFull;
 } }
 </code> </code>
줄 26: 줄 55:
 ===== 주의사항 ===== ===== 주의사항 =====
  
-''IN''''OUT'', ''CU''''CD''는 상승 순간에 동작합니다. 각 카운터·버퍼에 고유한 ''id''를 사용하고 ''size''는 필요한 범위로 작게 설정하십시오.+  * ''CU''는 ''LOW → HIGH'' 변화만 셉니다. 신호가 계속 ''HIGH''이면 한 번만 증가합니다. 
 +  * ''RESET''이 ''true''인 호출에서는 현재값을 0으로 지우며같은 호출의 ''CU''는 세지 않습니다. 
 +  * ''PV''는 1 이의 목표 개수로 설정하는 것이 좋습니다. ''PV''가 0 이하이면 초기값 0도 목표에 도달한 것으로 판단합니다. 
 +  * 센서 펄스가 ''loop()'' 실행보다 빠르면 변화를 놓칠 수 있습니다. 빠른 펄스는 제품의 고속 카운터 기능을 사용하십시오. 
 +  * 서로 다른 작업는 서로 다른 ''counter_id''를 사용하고, 같은 번호를 CTU·CTD·CTUD에 섞어 쓰지 마십시오. 
 +  * 현재 카운트값이 필요할 때만 같은 ''counter_id''로 ''IgetCount()''를 사용하십시오. 
 + 
 +===== 같은 카테고리의 내장 명령어 ===== 
 + 
 +  * [[commands:reference:ictd|Ictd() 상세 설명 보기]] 
 +  * [[commands:reference:ictud|Ictud() 상세 설명 보기]] 
 +  * [[commands:reference:igetcount|IgetCount() 상세 설명 보기]] 
 +  * [[commands:reference:isetcount|IsetCount() 상세 설명 보기]] 
 +  * [[commands:reference:ictuddownstate|IctudDownState() 상세 설명 보기]]
  
 [[commands:builtin|← 내장 명령어 리스트]] [[commands:builtin|← 내장 명령어 리스트]]
  
commands/reference/ictu.1788260660.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki