이것은 우리가 Energia IDE를 사용하여 Texas Instruments에서 MSP430G2 LaunchPad 를 배우는 일련의 자습서의 두 번째 자습서입니다. 지난 Blinky LED 튜토리얼에서 우리는 LaunchPad 개발 보드와 Energia IDE에 자신을 소개했으며, 또한 정기적으로 온보드 LED를 깜박이는 첫 번째 프로그램을 업로드했습니다.
이 튜토리얼에서는 디지털 읽기 및 디지털 쓰기 옵션을 사용하여 스위치와 같은 입력 장치의 상태를 읽고 LED와 같은 여러 출력을 제어 하는 방법을 배웁니다. 이 튜토리얼이 끝나면 IR 센서, PIR 센서 등과 같은 많은 디지털 센서를 인터페이스하고 LED, 부저 등과 같은 출력을 켜거나 끄는 데 사용할 수있는 디지털 입력 및 출력으로 작업하는 방법을 배웠을 것입니다. 권리!!? 시작하자.
필요한 재료:
- MSP430G2 런치 패드
- 모든 색상의 LED – 8
- 스위치 – 2
- 1k 저항기 – 8
- 전선 연결
회로도:
이전 튜토리얼에서 런치 패드 자체에 2 개의 LED와 보드의 스위치가 함께 제공되는 것을 확인했습니다. 그러나이 튜토리얼 에서는 버튼을 눌렀을 때 순서대로 8 개의 LED 조명 을 발광 할 계획이므로 그 이상이 필요합니다. 다른 버튼을 눌렀을 때도 순서를 변경하여 흥미롭게 만들 것입니다. 따라서 8 개의 LED 조명과 2 개의 스위치로 회로를 구축해야합니다. 전체 회로 다이어그램은 아래에서 찾을 수 있습니다.
여기서 8 개의 LED는 출력이고 두 개의 스위치는 입력입니다. 보드의 모든 I / O 핀에 연결할 수 있지만 위와 같이 LRD를 P1.0 핀에서 P2.1로, 스위치 1과 2를 각각 P2.4 및 P2.3 핀에 연결했습니다.
LED의 모든 음극 핀은 접지에 연결되고 양극 핀은 저항을 통해 I / O 핀에 연결됩니다. 이 저항을 전류 제한 저항 이라고합니다.이 저항은 I / O 핀이 소싱 할 수있는 최대 전류가 6mA이고 핀의 전압이 3.6V이기 때문에 MSP430에는 필수가 아닙니다. 그러나이를 사용하는 것이 좋습니다. 이러한 디지털 핀 중 하나가 높아지면 해당 LED가 켜집니다. 마지막 튜토리얼 LED 프로그램을 기억할 수 있다면 digitalWrite (LED_pin_name, HIGH) 는 LED 를 켜고 digitalWrite (LED_pin_name, LOW) 는 LED를 켭니다.
스위치는 입력 장치이며 스위치의 한쪽 끝은 접지 단자에 연결되고 다른 쪽 끝은 디지털 핀 P2.3 및 P2.4에 연결됩니다. 즉, 스위치를 누를 때마다 I / O 핀 (2.3 또는 2.4)이 접지되고 버튼을 누르지 않으면 자유 로워집니다. 프로그래밍하는 동안이 배열을 어떻게 사용할 수 있는지 살펴 보겠습니다.
프로그래밍 설명:
프로그램은 스위치 1을 눌렀을 때 순서대로 8 LED를 제어하도록 작성되어야하고 스위치 2를 눌렀을 때 순서를 변경해야합니다. 완전한 프로그램 및 데모 비디오는 이 페이지 하단에서 확인할 수 있습니다. 더 아래에서 프로그램을 한 줄씩 설명하여 쉽게 이해할 수 있도록하겠습니다.
항상 그렇듯이 우리 가 사용 하는 핀 이 입력 또는 출력 핀 임을 선언 하는 void setup () 함수로 시작해야합니다. 프로그램에서 8 개의 LED 핀이 출력되고 2 개의 스위치가 입력입니다. 이 8 개의 LED는 P1.0에서 P2.1 ( 보드의 핀 번호 2-9)로 연결됩니다. 그런 다음 스위치는 각각 핀 번호 11 및 12 인 핀 P2.3 및 핀 2.4에 연결됩니다. 그래서 우리는 void setup () 에서 다음을 선언했습니다.
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } for (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
우리가 알고 있듯이 pinMode () 함수는 핀을 출력 또는 입력으로 선언하고 digitalWrite () 함수는 핀을 높음 (ON) 또는 낮음 (OFF)으로 만듭니다. 우리는 라인 수를 줄이기 위해이 선언을 만들기 위해 for 루프를 사용했습니다. 변수 "i" 는 for 루프 에서 2에서 9로 증가하고 각 증가에 대해 내부 함수가 실행됩니다. 혼동을 줄 수있는 또 다른 것은 " INPUT_PULLUP " 이라는 용어 입니다. pinMode (Pin_name, INPUT) 함수를 호출하여 핀을 입력으로 선언 할 수 있지만 여기서는 INPUT 대신 INPUT_PULLUP을 사용했으며 둘 다 눈에 띄게 변경되었습니다.
마이크로 컨트롤러 핀을 사용할 때 핀은 로우 또는 하이에 연결되어야합니다. 이 경우 핀 11과 12는 눌렀을 때 접지에 연결되는 스위치에 연결됩니다. 그러나 스위치를 누르지 않으면 핀이 어떤 것에 연결되지 않습니다.이 상태를 플로팅 핀이라고하며 마이크로 컨트롤러에 좋지 않습니다. 따라서이를 방지하기 위해 풀업 또는 풀다운 저항을 사용하여 핀이 부동 상태에있을 때 상태를 유지합니다. 에서 MSP430G2553 마이크로 컨트롤러의 I / O 핀은 내장에-풀업 저항을 가지고. 이를 사용하기 위해 우리가해야 할 일은 w가 위에서 한 것처럼 선언하는 동안 INPUT 대신 INPUT_PULLUP을 호출하는 것입니다.
이제 void loop () 함수로 들어갑니다. 이 함수에 쓰여진 것은 영원히 실행될 것입니다. 프로그램의 첫 번째 단계 는 스위치가 눌려 있는지 확인하고 눌렀을 경우 LED가 순차적으로 깜박 이기 시작해야합니다. 버튼이 눌 렸는지 확인하기 위해 다음 줄이 사용됩니다.
if (digitalRead (12) == LOW)
여기서 새로운 함수는 digitalRead () 함수입니다.이 함수는 디지털 핀의 상태를 읽고 핀에 전압이 가해지면 HIGH (1) 를 반환 하고 핀이 접지되면 낮은 LOW (0)를 반환 합니다. 하드웨어에서 핀은 버튼을 누를 때만 접지됩니다. 그렇지 않으면 풀업 저항을 사용했기 때문에 핀이 높아집니다. 따라서 if 문을 사용하여 버튼이 눌 렸는지 확인합니다.
버튼을 누르면 무한 while (1) 루프에 들어갑니다. 여기에서 LED를 순서대로 깜박이기 시작합니다. 루프가 아래에 표시되는 동안 무한 하고 어떤 휴식 할 때까지 영원히 실행되는 루프 내에서 작성된 것입니다; 문이 사용됩니다.
whiel (1) {}
무한 내부에서 핀 11에 연결된 두 번째 스위치의 상태를 확인합니다.
이 스위치를 누르면 특정 순서로 LED가 깜박이고 다른 순서로 깜박입니다.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); 지연 (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
하기 순서로 LED 깜박 우리가 다시를 사용 하기위한 루프를하지만 이번에는 우리가 사용하는 100 밀리 초 약간의 지연 사용 지연 (100) 그래서 기능은 우리가 LED 점점 높은를 알 수있다. 한 번에 하나의 LED 만 빛나게하려면 다른 for 루프를 사용 하여 모든 LED를 끕니다. 그래서 우리는 잠시 동안 LED를 켠 다음 모든 LED를 끈 다음 LED를 켜고 얼마 동안 대기하고 사이클이 계속됩니다. 그러나이 모든 것은 두 번째 스위치를 누르지 않는 한 발생합니다.
두 번째 스위치를 눌렀을 때 순서를 변경하면 프로그램은 LED가 켜진 순서와 거의 동일합니다. 아래에 표시된 줄을 살펴보고 변경된 사항을 확인하십시오.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); 지연 (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
예, for 루프가 변경되었습니다. 이전에는 LED를 2 번부터 9 번까지 빛나게 만들었습니다.하지만 이제는 9 번부터 시작하여 2까지 줄 이겠습니다. 이렇게하면 스위치를 눌렀는지 여부를 알 수 있습니다.
깜박이는 LED 시퀀스를위한 하드웨어 설정:
모든 이론과 소프트웨어 부분이 충분합니다. 몇 가지 구성 요소를 가져 와서이 프로그램이 어떻게 작동하는지 살펴 보겠습니다. 회로는 매우 간단하므로 브레드 보드에 쉽게 구축 할 수 있습니다. 그러나 나는 LED를 납땜하고 perf 보드를 켜서 깔끔하게 보이도록했습니다. 내가 납땜 한 성능 보드는 아래와 같습니다.
보시다시피 LED의 출력 핀과 커넥터 핀으로 꺼낸 스위치가 있습니다. 이제 암-암 커넥터 와이어를 사용하여 아래 그림과 같이 LED와 스위치를 MSP430 LaunchPad 보드에 연결합니다.
업로드 및 작업:
하드웨어 작업이 끝나면 MSP430 보드를 컴퓨터에 연결하고 Energia IDE를 열고이 페이지 끝에 제공된 프로그램을 사용하십시오. Energia IDE에서 올바른 보드와 COM 포트가 선택되었는지 확인하고 업로드 버튼을 클릭합니다. 프로그램이 성공적으로 컴파일되고 업로드되면 "업로드 완료" 가 표시됩니다 .
이제 보드의 버튼 1을 누르면 LED가 아래 그림과 같이 순서대로 켜집니다.
두 번째 버튼을 길게 눌러 시퀀스가 변경되는지 확인할 수도 있습니다. 프로젝트의 전체 작업은 아래 비디오에 나와 있습니다. 결과가 만족 스러우면 지연 시간 변경 등의 코드 변경을 시도 할 수 있습니다. 이렇게하면 더 잘 배우고 이해하는 데 도움이됩니다.
튜토리얼을 이해하고 유용한 것을 배웠기를 바랍니다. 문제가 발생한 경우 댓글 섹션에 질문을 게시하거나 포럼을 사용하십시오. MSP30 런치 패드를 사용하여 아날로그 전압을 읽는 방법을 배우는 다른 튜토리얼에서 만나 보겠습니다.