이 질문에 이미 답변이 있습니다 :
댓글
Answer
만약 직렬로 출력하는 경우 연결할 필요가 없습니다. 각 비트를 개별적으로 인쇄하기 만하면됩니다. 예를 들면 다음과 같습니다.
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Arduino와 같이 메모리가 적은 기기에서는 좋지 않으므로 String 사용을 피해야합니다. Inst 정말 숫자를 연결해야하는 경우에는 C 문자열을 사용하고 snprintf
를 사용하여 숫자 형식을 지정해야합니다.
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
답변
가능한 경우 비트를 개별적으로 인쇄하고 String
개체.
그러나 이러한 문자열 (String 개체가 아니라 일반 C 문자열)을 빌드해야하는 경우에는 sprintf()
는 상당히 큰 기능입니다. 문자열을 문자별로 작성할 수 있습니다. 예 :
char out[4]; // 3 + 1 char for the termination character out[0] = out1==HIGH ? "1" : "0"; out[1] = out2==HIGH ? "1" : "0"; out[2] = out3==HIGH ? "1" : "0"; out[3] = "\0"; // add NUL termination Serial.println(out);
삼항 연산자 (여기서는 out1
가 HIGH
인 경우 "1"
, 그렇지 않으면 "0"
”를 사용합니다.
이제 Arduino에서 HIGH
는 1을 의미하고 LOW
는 0을 의미합니다. 그리고 한 자리 숫자는“0”문자의 숫자 코드를 추가하기 만하면 문자로 변환 될 수 있습니다. 48이지만 "0"
. 따라서 다음과 같이 작성할 수 있습니다.
out[0] = out1 + "0"; // convert number to character
그리고 다음과 같이 모두 합칠 수 있습니다.
char out[4]; // 3 + 1 char for the termination character out[0] = digitalRead(r1) + "0"; out[1] = digitalRead(r2) + "0"; out[2] = digitalRead(r3) + "0"; out[3] = "\0"; // add NUL termination Serial.println(out);
답변
Serial.write (b)는 문자열이 아닌 1 바이트를 인쇄합니다. print ()를 사용하여 문자열과 숫자를 인쇄합니다.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));