인텔® Galileo 보드용 사용자 지정 기능 작성에 관한 자습서 2
이 시점까지 설정 및 루프 기능 내부에 코드를 작성해 왔습니다. 이것은 완벽하게 괜찮습니다. 하지만 프로그램에 복잡한 논리가 많이 있다면 어떻게 해야 할까요? 코드를 어떻게 구성하시겠습니까?
프로그래밍에 대한 예술이 있으며 코드를 어디에 두어야 할지 아는 것으로 시작됩니다.
코딩은 때때로 지저분해질 수 있습니다. 오픈 소스 코드를 읽은 적이 있는 경우 다음 코드를 실행할 수 있습니다.
- 의견 부족: 댓글을 포함하면 귀하와 읽는 사람이 무슨 일이 일어나고 있는지 이해하는 데 도움이 됩니다.
- 로직이 구성되지 않음: 코드를 논리적 청크로 구성하면 디버깅 및 코드 유지 관리가 지원됩니다.
- 이름은 오해의 소지가 있습니다: 변수 및 기능 이름은 의도한 작업을 올바르게 설명해야 합니다.
- 선명도에 대한 영리함: 코드를 쉽게 읽을 수 있어야 합니다. 달성하려는 내용에 비밀스럽지 않도록 노력하십시오.
어떤 언어로든 프로그램을 작성 및 구성할 수 있습니다. 그러나 프로그래머가 적합하다고 판단합니다. 코드를 읽는 유일한 사람이면 괜찮습니다. 그러나 팀에서 작업하는 경우 모든 사람이 따르는 몇 가지 지침을 제공하는 것이 중요합니다. 어느 날, 작성한 코드는 다른 사람이 업데이트하고 읽어야 합니다. 조직화된 코드를 작성하고 일반적인 코딩 관행을 실천하면 귀하와 동료 엔지니어가 아름다운 코드를 작성하는 데 도움이 됩니다.
코딩 스타일 개선에 대한 팁은 Google의 C++ 코딩 스타일 가이드를 확인하십시오.
두 가지 종류의 기능이 있습니다.
- 지침을 실행하고 값을 반환하지 않습니다(무효 입력)
- 지침을 실행하고 값을 반환합니다(유형에는 int, float, double 포함)
Arduino 참조 페이지의 데이터 유형 섹션에서 자세한 내용을 참조하십시오.
기능 유형
Type void:
void sayHello(){
Serial.println("Hello!");
}
Type integer:
int theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything(){
return 42;
}
We can assign the value of functions that return something to variables:
int myAnswer = theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything();
기능을 좀 더 유용하게 만들고 싶다고 가정해 봅시다. 함수 매개변수를 사용하여 기능 결과에 영향을 줄 고유 데이터를 전달할 수 있습니다. 예를 들어:
int add(int x, int y){
return x + y;
}
다음과 같은 사용자 지정 매개변수를 전달하여 이 기능을 호출합니다.
int numbersAdded = add(2, 2); // The variable numbersAdded is equal to 4
함수를 작성할 수 있는 방법은 여러 가지가 있습니다. 이 모든 것은 원하는 것에 따라 달라집니다. 사용자 지정 함수 작성을 시작하는 좋은 장소는 함수 서명을 정의하는 것입니다.
기능 서명
함수 코드를 작성하기 전에 달성하려는 작업을 결정하는 것이 가장 좋습니다.
- 값을 반환합니까?
- 얼마나 많은 매개 변수가 전달됩니까(있는 경우)?
- 이 기능의 목적은 무엇입니까?
직렬 모니터에 사용자 지정 메시지를 출력하는 프로그램을 작성하는 척해 봅시다. 이 메시지는 날씨에 대해 설명합니다(예: 온도 센서를 기반으로 할 수 있습니다).
함수 내부의 코드가 정확히 어떻게 생겼는지는 아직 알 수 없지만, 다음을 수행하려면 어떻게 해야 할지 알 수 있습니다.
- 두 개의 사용자 지정 매개변수를 사용하여 함께 연결(또는 조인)하십시오.
- 메시지에 추가되는 여러 유형의 Double을 사용하십시오.
- 값을 반환하지 않습니다.
- 직렬 모니터 출력은 "30도 외부"로 출력됩니다.
서명은 다음과 같이 보일 수 있습니다.
void myMessage(String msg1, String msg2, double deg){}
함수를 호출하는 것은 다음과 같습니다.
여기서의 도는 온도 센서 판독값을 기준으로 미리 정의된 변수입니다.
myMessage("It is", 도, "외부");
도전
이 기능의 작업을 완료하기 위해 코드를 어떻게 작성하시겠습니까?
- 소개
- 고급 입력
- 펄스 폭 변조(PWM)
- 사용자 지정 기능 작성
- 사용자 지정 기능 사용
- 랩업