악어클립은 두 개의 금속 클립이 연결된 형태로, 전선의 끝에 부착하여 전기를 쉽게 연결하거나 분리할 수 있는 도구입니다. 일반적으로 클립의 한쪽 끝은 전선을 고정하고, 다른 쪽 끝은 전원이나 다른 전자 부품에 연결됩니다. 원래는 전선과 전자 부품 간의 임시 연결을 위해 설계되었습니다.
이런 악어클립으로 연결된 형태는 기본적으로 장치를 디자인 하고자 하는 제품에 부착하기 전 동작(기능)테스트를 하기위한 용도로 많이 사용합니다.
[전도성실]
전도성 실은 일반적인 실과 다르게 전기를 전도할 수 있는 기능을 가진 실입니다. 이 실은 보통 금속 섬유가 혼합되어 있어 전기 신호를 전달할 수 있습니다. 주로 패션 기술, 웨어러블 기기, 그리고 전자 아트 프로젝트에서 많이 사용됩니다.
일반적인 실이 아닌 전기가 통하는 역할을 하는 전도성 실이기 때문에 다음과 같은 사항은 주의해야 합니다.
이렇게 다양한 MCU 보드가 있습니다. 이 MCU 보드는 사람으로 비교하자면 두뇌와 동일한 기능을 합니다. 우리가 작성한 프로그래밍을 통한 여러 장치를 조작(제어) 명령을 내리는 기능을 갖고 있습니다.
그 중에 저는 릴리패드 아두이노 USB 버전을 추천 드립니다.
그 이유는 별도의 장치 없이 곧바로 PC와 연결하고 드라이버를 설정한 후에 사용이 가능합니다. 단, 사용할 수 있는 핀이 상대적으로 제한된 버전이기에 많은 핀 사용이 필요할 경우
아래의 릴리패드 아두이노 328 메인보드 를 사용해야 합니다.
그리고 또 하나 릴리패드 아두이노 USB버전을 보시면 다음과 같은 토글 스위치가 있습니다.
한쪽은 "ON" 다른 한쪽은 "CHG" 인데요.
ON은 말 그대로 전원을 켠다 라고 보시면 됩니다. 즉, 릴리패드에 전원을 공급할때 사용하는 기능이고요.
다른 한쪽인 CHG는 외부 전원(배터리)를 연결 후 충전하기 위한 기능 입니다. 단, CHG를 설정하면 릴리패드 전원은 켜지지 않습니다.(통신이 안됨)
[릴리패드의 주변장치 - LED]
우리 주변에서 불빛을 내는 장치를 많이 볼 수 있는데요. 그 부품을 LED라고 부릅니다.
LED의 큰 특징 극성이 있다는 것입니다. 다리가 긴쪽을 +(Anode) / 다리가 짧은쪽을 -(Cathode) 라고 부릅니다.
릴리패드 전용 LED는 다음과 같이 제작됩니다.
릴리패드 MCU와 연결은 다음과 같이 할 수 있습니다.
[릴리패드의 주변장치 - 부저(Buzzer)]
다음으로 소개해드릴 장치는 부저 입니다.
부저는 소리를 내는 장치 입니다.(삐삐삑~) 또한 부저 역시 LED와 마찬가지로 극성(+,-)이 있습니다.
부저 역시 LED와 동일한 방법으로 연결할 수 있습니다.
[릴리패드의 주변장치 - 네오픽셀]
다음으로 소개해드릴 장치는 네오픽셀 입니다.
네오픽셀은 Adafruit에서 개발한 스마트 RGB LED로, 각 LED가 개별적으로 색상과 밝기를 조절할 수 있는 기능을 가지고 있습니다. 이 LED는 데이터 신호를 통해 제어되며, 여러 개를 직렬로 연결하여 사용할 수 있습니다. 릴리패드와 결합하면 패션 및 텍스타일 프로젝트에서 더욱 화려한 효과를 연출할 수 있습니다.
네오픽셀의 특징은 다음과 같습니다.
데이터 전송 : 네오픽셀은 단일 데이터 핀을 통해 제어됩니다. 이 핀을 통해 색상 정보가 전송되며, 각 LED는 수신한 데이터를 바탕으로 독립적으로 색상을 조절합니다.
RGB 색상 혼합 : 네오픽셀은 빨강(R), 초록(G), 파랑(B) LED가 결합되어 각 색상을 혼합하여 다양한 색상을 만들어냅니다. 사용자는 각 색상의 밝기를 조절하여 원하는 색상을 생성할 수 있습니다.
직렬 연결 : 여러 개의 네오픽셀을 직렬로 연결할 수 있어, 하나의 데이터 핀으로 여러 개의 LED를 제어할 수 있습니다. 이로 인해 복잡한 회로를 간단하게 구성할 수 있습니다.
네오픽셀 연결 방법은 다음과 같습니다.
여기서 네오픽셀은 다중의 갯수를 직렬로 연결 가능합니다.(확장성)
[릴리패드의 주변장치 - 조도센서]
다음으로 소개해드릴 장치는 조도센서 입니다.
조도센서는 빛의 세기를 감지하여 전기 신호로 변환하는 센서 입니다. 일반적으로 LDR(빛 의존 저항) 또는 포토트랜지스터와 같은 부품을 사용하여 빛의 양에 따라 저항이 변하는 원리를 이용합니다. 릴리패드와 결합하면, 환경의 조도를 감지하여 다양한 반응을 구현할 수 있습니다.
조도센서의 연결 방법은 다음과 같습니다.
[릴리패드의 주변장치 - 온도센서]
다음으로 소개해드릴 장치는 온도센서 입니다.
온도센서는 주위의 온도를 감지하여 전기 신호로 변환하는 장치입니다. 일반적으로 LM35와 같은 아날로그 온도센서가 많이 사용되며, 이 센서는 온도에 따라 출력 전압이 변하는 원리를 이용합니다. 릴리패드와 결합하면, 환경의 온도를 감지하여 다양한 반응을 구현할 수 있습니다. 참고로 릴리패드 온도센서는 MCP9700으로 생산되었습니다.
온도센서의 연결방법은 다음과 같습니다.
[릴리패드의 주변장치 - 코인형 건전지 모듈]
다음으로 소개해드릴 장치는 코인셀 배터리 연결용 건전지 모듈 입니다.
이세상 어떤 전기, 전자 장치도 전원없이 동작하는 장치는 없습니다. 만약 있다면 꼭 연락 주세요! 제가 투자하겠습니다.
코인형 건전지 모듈은 CR2032와 같은 코인형 배터리를 장착할 수 있는 모듈로, 소형 전자 회로에 전원을 공급하는 데 사용됩니다. 이 모듈은 작고 경량으로, 특히 패션 디자인이나 휴대용 전자 기기에서 많이 활용됩니다.
보통의 아두이노의 입력 카테고리(디지털, 아날로그)는 변수를 생성해 읽어드린 값을 저장해 줍니다.
또한, digitalRead() 함수는 지정한 디지털 입력핀의 값을 읽어옵니다. 읽어온 입력값은 HIGH(1) 또는 LOW(0) 두 가지 중 하나의 값입니다. 입력핀은 앞서 pinMode() 함수를 사용하여 입력모드로 설정되어 있어야합니다.
위에 제공한 예시 소스를 구성하고 업로드 후에 동작사항을 확인해 보세요.
내장 LED (LED_BUILTIN) 에 불이 들어오나요?
정상동작이 되지 않습니다. 이유는 바로 스위치의 특성 때문인데요.
채터링 [chattering]
스위치의 하드웨어 특성 중 하나인 채터링은 스위치를 눌렀을 때 스위치 연결 핀에 불안정한 신호가 발생하는 현상을 의미합니다. 이 채터링 현상은 스위치의 접촉이 닫히는 과정에서 발생할 수 있으며, 짧은 시간 동안 스위치 연결 핀이 빠르게 ON과 OFF를 반복하여 신호를 보낼 수 있습니다.
그럼 이러한 현상을 해결할 수 있는 방법은 무엇이 있을까요?
크게 2가지가 있습니다.
1. 디바운스[debounce] : 짧은 시간에 여러번 스위치의 상태를 확인하는 방법을 의미합니다. 2. 하드웨어 혹은 소프트웨어의 풀업[PULLUP] & 풀다운[PULLDOWN] 셋팅
우선 디바운스 설정 방법 입니다.
아두이노 스케치 프로그램에서 파일 -> 예제 -> 02.Digital -> Debounce 선택하시면 됩니다.
const int buttonPin = 2; // 버튼 핀 번호
const int ledPin = 13; // LED 핀 번호
boolean ledState = HIGH; // 현재 LED 상태를 초기 설정합니다. (켜진 상태)
boolean buttonState; // 현재 버튼 상태를 저장합니다. (기본적으로 LOW)
boolean lastButtonState = LOW;// 이전 버튼 상태를 저장합니다.
unsigned long lastDebounceTime = 0; // 버튼 디바운스를 위한 시간 변수
unsigned long debounceDelay = 50; // 디바운스 지연 시간 (50ms)
void setup() {
pinMode(buttonPin, INPUT); // 버튼 핀을 입력으로 설정합니다.
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정합니다.
digitalWrite(ledPin, ledState); // 초기 LED 상태를 설정합니다. (켜진 상태)
}
void loop() {
int reading = digitalRead(buttonPin); // 버튼 핀의 상태를 읽어옵니다.
if (reading != lastButtonState) { // 버튼 상태가 이전 상태와 다를 경우
lastDebounceTime = millis(); // 현재 시간을 기록합니다.
}
if ((millis() - lastDebounceTime) > debounceDelay) { // 디바운스 지연 시간이 경과한 경우
if (reading != buttonState) { // 버튼 상태가 이전 상태와 다를 경우
buttonState = reading; // 버튼 상태를 업데이트합니다.
if (buttonState == HIGH) { // 버튼이 눌린 상태일 경우
ledState = !ledState; // LED 상태를 반전시킵니다. (ON <-> OFF)
}
}
}
digitalWrite(ledPin, ledState); // LED 상태를 출력합니다.
lastButtonState = reading; // 이전 버튼 상태를 업데이트합니다.
}
다음으로 풀업 저항 설정 방법 입니다.
풀업 저항 설정 방법은 크게 2가지가 있습니다.
1. 하드웨어 셋팅
1. 스위치 입력단자(D7)번에 저항(10K ohm) 연결 후 2. 저항의 반대쪽은 5V 전압을 연결해주면 됩니다.
2. 소프트웨어 셋팅
const int switchPin = 7; // 스위치 연결핀
const int ledPin = 13; // LED 연결핀
void setup() {
pinMode(switchPin, INPUT_PULLUP); // 스위치핀을 입력으로
pinMode(ledPin, OUTPUT); // LED핀을 출력으로
Serial.begin(9600);
}
void loop() {
int switchState = digitalRead(switchPin); // 스위치핀 읽기
Serial.println(switchState);
if (switchState == HIGH) {
digitalWrite(ledPin, HIGH); // 스위치 ON시 LED 켜기
}
else {
digitalWrite(ledPin, LOW); // 스위치 OFF시 LED 끄기
}
}