사용자 도구

사이트 도구


commands:reference:iscale

차이

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

차이 보기로 링크

commands:reference:iscale [2026/09/01 20:04] – 만듦 - 바깥 편집 127.0.0.1commands:reference:iscale [2026/09/08 00:53] (현재) – 바깥 편집 127.0.0.1
줄 11: 줄 11:
 ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^ ^ 명령어 ^ 인수 ^ 반환값 ^ 동작 ^
 | ''Iscale(x, in_min, in_max, out_min, out_max)'' | ''int32_t x'' — 변환할 입력값\\ ''int32_t in_min''\\ ''int32_t in_max''\\ ''int32_t out_min''\\ ''int32_t out_max'' | ''int32_t'' | 정수 입력값을 지정한 정수 범위로 변환합니다. | | ''Iscale(x, in_min, in_max, out_min, out_max)'' | ''int32_t x'' — 변환할 입력값\\ ''int32_t in_min''\\ ''int32_t in_max''\\ ''int32_t out_min''\\ ''int32_t out_max'' | ''int32_t'' | 정수 입력값을 지정한 정수 범위로 변환합니다. |
 +
  
 ===== 예제 ===== ===== 예제 =====
  
 <code cpp> <code cpp>
 +void setup() {
 +  Serial.begin(115200);
 +}
 +
 void loop() { void loop() {
-  int32_t raw = (int32_t)analogRead(A0); +  uint16_t raw2 analogRead2(0);  // 지정한 채널의 4~20mA 보정 입력값을 읽습니다. 
-  int32_t percent Iscale(raw, 0, 1023, 0, 100); +  int32_t filtered2 analogRead2Avg(0, 5);  // 4~20mA 입력값의 정수 평균을 반환합니다. 
-  float voltage Iscalef((float)raw, 0.0F1023.0F, 0.0F, 5.0F);+  float filtered2f = analogRead2Avgf(0, 5);  // 4~20mA 입력값의 실수 평균을 반환합니다. 
 +  float currentmA IanalogRead2f(0, 4.0F, 20.0F);  // 4~20mA 입력값을 지정한 실수 범위로 변환합니다.
  
 +  if (raw2 == ANALOG_READ2_ERROR || filtered2 == ANALOG_READ2_AVG_ERROR ||
 +      filtered2f == (float)ANALOG_READ2_AVG_ERROR ||
 +      currentmA == (float)ANALOG_READ2_ERROR) {
 +    Serial.println("4-20mA input error");
 +    delay(500);
 +    return;
 +  }
 +
 +  int32_t percent = Iscale((int32_t)raw2, 0, 32767, 0, 100);  // 정수 입력값을 지정한 정수 범위로 변환합니다.
 +
 +  IanalogWrite2(0, 0, 100, 50);       // 50% → 약 12mA
 +  IanalogWrite2f(1, 0.0F, 10.0F, 2.5F); // 25% → 약 8mA
 +
 +  Serial.print("4-20mA raw: ");
 +  Serial.println(raw2);
 +  Serial.print("4-20mA filtered: ");
 +  Serial.println(filtered2);
 +  Serial.print("4-20mA filtered float: ");
 +  Serial.println(filtered2f, 2);
 +  Serial.print("percent: ");
   Serial.println(percent);   Serial.println(percent);
-  Serial.println(voltage, 2);+  Serial.print("current: "); 
 +  Serial.println(currentmA, 2); 
 + 
 +  delay(500);
 } }
 </code> </code>
줄 30: 줄 59:
   * 범위를 벗어난 입력은 가까운 출력 끝값으로 제한된다.   * 범위를 벗어난 입력은 가까운 출력 끝값으로 제한된다.
   * 두 명령어는 선형 범위 변환만 수행하며 센서 보정이나 전기적 보호를 대신하지 않는다.   * 두 명령어는 선형 범위 변환만 수행하며 센서 보정이나 전기적 보호를 대신하지 않는다.
 +
 +===== 같은 카테고리의 내장 명령어 =====
 +
 +  * [[commands:reference:iscalef|Iscalef() 상세 설명 보기]]
  
 [[commands:builtin|← 내장 명령어 리스트]] [[commands:builtin|← 내장 명령어 리스트]]
  
commands/reference/iscale.1788260660.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki