2022. 1. 3. 19:21ㆍ보안 연구/Reversing
본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.
모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.
안녕하세요! ICMP입니다!
얼마 전에 집에 있는 MP3, 전자사전을 분해해서 분석해 볼까 하다가 전자공학적 이론지식이 부족해서 반쯤 포기하고 있었는데, IOT 관련 정보를 읽어보던 중 아두이노 공부를 진행할 겸 포스팅을 진행하게 되었습니다.
복습 차원에서 작성하는지라 내용 흐름이 어색하거나 부정확한 정보도 있을 수 있으니 참고 바랍니다!
1. Basic Interface & Coding
1. 기본적인 회로 다루기(스위치 & LED)
간단하게 슬라이드 스위치를 활용하여 LED를 껐다가 키는 스위치 기능을 구현해 보도록 하겠습니다.
회로 제작이 처음이어서 그런가 전선이 쓸데없이 복잡하지만, 여하튼 구현하였습니다.
스위치 회로의 동작 원리는 생각 외로 간단합니다.
슬라이드 스위치의 핀 모양을 확인해 보면 위와 같이 세 가지가 존재하며, 전압의 유무에 따라 가운데 핀으로 신호를 줄 수 있다는 점을 이용합니다.
// C++ code
// 기본적인 스위치 사용법을 익히자!!!
void setup()
{
pinMode(8, INPUT);
pinMode(9, OUTPUT);
}
void loop()
{
if(digitalRead(8)==HIGH)
digitalWrite(9,HIGH);
else
digitalWrite(9,LOW);
}
스위치의 전압 신호를 8번 포트에 전달하고, 전압 신호에 따른 조건을 설정하여 9번 포트에 신호를 넘겨주면 LED를 껐다 켰다 할 수 있습니다.
2. 약간의 응용(슬라이드 스위치 & LED_rgb)
여기서 약간 응용하여 LED rgb를 이용해 여러 색깔을 표현하는 회로를 작성해 보도록 하겠습니다.
void setup()
{
//7,6,5번 핀을 출력 모드로 설정
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
//12,11,10번 핀을 입력 모드로 설정
pinMode(12,INPUT); // 슬라이드 스위치를 사용하므로 풀업이 필요없다.
pinMode(11,INPUT); // 버튼형과는 다르게 Floating 상태가 존재하지 않는 구조
pinMode(10,INPUT); // 정확한 정보는 링크 참고 : https://wikidocs.net/30784
//7,6,5번 핀의 전압을 LOW로 설정함.
digitalWrite(7,LOW);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
}
void loop()
{
int r,g,b;
//12,11,10번 핀의 전압 상태(HIGH or LOW)을 읽어옴.
r = digitalRead(12);
g = digitalRead(11);
b = digitalRead(10);
//위 setup 함수 부분의 코드와 동알하게 전압 정보를 읽어와 수정
// 차이점이 있다면 슬라이드 스위치는 5V에 연결되어 있어 닫혀있으면 HIGH로 바뀜
digitalWrite(7,r);
digitalWrite(6,b);
digitalWrite(5,g);
delay(100);
}
주석을 보면 다 이해할 수 있겠지만 요약하자면 RGB 출력을 슬라이드 버튼으로 조정하여 불빛 색을 조절할 수 있습니다.
아래 화면은 구성한 회로와 시연 화면입니다.
(아직 Tinkercad 환경이 익숙하지 않아서 회로가 매우 더러우니 양해 부탁드립니다...)
시간이 되면 알아보기 쉽게 전선 색깔이랑 위치 수정 작업을 진행해야 할 것 같습니다.
위 회로에서는 슬라이드 스위치를 사용해서 input_pullup을 사용할 필요가 없었지만 여기서 버튼형 스위치로 대체할 경우 정상적인 출력이 불가능해해지는데, 이는 플로팅 현상이라는 것 때문입니다.
이는 버튼형 스위치 동작 방식과도 연관 있는데 정확한 정보는 아래 링크를 참고하길 바랍니다.
다음 시간에는 버튼스위치의 사용과 7세그먼트와 이를 응용한 타이머를 제작해 보도록 하겠습니다.
이상! ICMP였습니다!
'보안 연구 > Reversing' 카테고리의 다른 글
프로젝트 2일차 (0) | 2022.01.15 |
---|---|
프로젝트 1일차 (0) | 2022.01.15 |
Window Message Hook basic (0) | 2021.12.08 |
악성코드 분석 일지(한글문서) (0) | 2021.09.21 |
악성코드 분석 일지(랜섬웨어) (0) | 2021.09.19 |