본문 바로가기

KAIROS 2기

[카이로스2기] 비전공자가 처음 만나는 아두이노! 기초부터 OLED까지

카이로스 2기를 시작하며 제일 기대했던 부분은, 당연히 하드웨어를 처음 만지는 수업이었다!

비전공에 소프트웨어만 다뤄본 나로서는 회로에 대해서는 빵판이라는 단어로 처음 들었을 정도로 무지했으나, 다행히 수업을 따라가면서 금세 적응할 수 있었다. 특히 주언어가 파이썬이지만 C++을 배운 적도 있었고, 아두이노에서 사용하는 C++은 포인터를 사용하지 않는 간단한 내용이라, 강사님께서 다뤄주시는 내용만으로도 잘 따라갈 수 있었다.😊

 

감격의 첫 LED 점등 😺

LED의 경우는 필요한 전력이 많지 않아서 저항을 사용하지 않으면 터져버릴수 있다고 한다! 저항은 몇 옴인지에 따라 줄무늬가 다르게 되어있어 이를 읽는 법도 배웠다. 저항과 LED가 꽂혀있는 것은 흔히 빵판이라고 부르는 것인데, 특이점은 +와 -는 세로 한줄씩 통으로 연결되어 있고, 나머지는 가로로 5개씩 연결되어있다는 점이다. 

처음 배선을 하려고 햇을때는 같은 줄이라도 플러스에서 나와서 줄을 타고 사다리타기처럼(?) 가는게 아닐까 했는데, 연결된 줄은 통으로 같은 효과를 받는다는 것을 알 수 있었다.

배선이 완료되면, Arduino IDE 프로그램을 통해 실제 코딩을 진행한다. 아두이노 파일은 .ino 확장자의 파일이 되는데, setup()과 loop() 기본함수를 통해 제어할 수 있다.

사용할 핀을 INPUT OUTPUT 선언을 setup()에서 잘 진행해줘야하는데, 이걸 안해서 digitalWrite가 색이 너무 연하게 출력되는 이상한 현상도 겪어보았다..😇

 

다양한 입출력 센서들에 대해서도 배웠는데, 위 사진은 그 중 '가변저항'이다. 이름에서 알 수 있듯이 돌릴 수 있는 손잡이를 통해서 전선의 길이를 다르게 주어 저항을 바꿀 수 있는 친구이다. 위 배선에서는 가변저항에 따라 RGB LED핀의 밝기를 조절하고, 밝기가 커질수록 빨강 파랑 초록 LED가 순서대로 켜지는 식으로 구성해보았다.
그 외에도 초음파센서 (거리측정), 온습도센서 (DHT11.h 라이브러리 설치 필요), 서보모터 (Servo.h 라이브러리 기본 설치되어 있음), 자외선센서(흰/검 판별) 등 다양한 센서를 직접 배선해보며 어떤 역할을 하는지 배울 수 있었다!

진행하며 강사님께서 버튼 피아노, 가변저항 LED, 가변저항 서보모터 등 미션들을 내주셔서 더욱 의욕적으로 완성하기 위해 노력했다 ㅎㅎㅎ🙆

 

조건문 조작을 위해 필요한 버튼! INPUT_PULLUP으로 풀업저항을 사용하여 별도 저항 연결없이 사용할 수 있었다. 

버튼을 조작하며 신기했던 부분은 사람 기준으로는 '한 번' 눌렀어도, 아두이노의 loop는 굉장히 빠르게 돌아가고 있기 때문에 여러번의 input으로 인식한다는 점이다. 그래서 클릭 횟수에 따라 불이 점점 밝아지는 analogWrite 조작을 시도했을때, count 수가 엄청나게 올라가버리는 문제가 있었다. 이부분은 clicked여부만을 확인하는 별도 flag 값으로 실제 클릭 여부를 구분하게 함으로써 해결했다! 😮

아래 영상은 버튼 조작을 통해 버저로 옥타브의 다른 음계들을 출력하도록 한 프로그램이다. 가변저항에 따른 LED 점등 변화도 함께하고 있다 ㅎㅎ 미션을 하나씩 깰때마다 엄청난 성취감이 든다!👊

 

OLED를 통한 출력으로 Serial을 통한 출력 외에도 글자 등을 확인할 수 있게 되었다.

특히 우리가 사용한 OLED같은 경우는 기본적인 글자, 그림 출력, 글자 크기 조절 뿐만 아니라, 가로 스크롤을 한다거나, 빈 네모, 채운 네모 등을 쉽게 그릴 수 있는 함수를 제공하고 있어서 다양한 출력 시도가 가능했다.

아래 사진은 온습도센서를 통해 읽은 온도와 습도를 실시간으로 OLED에 표시하는 코드를 동작시킨 모습이다.

 

마지막으로, 버튼, 이미지출력, 스크롤 등 열심히 만든 나의 OLED 최종 결과물💕

반 친구에게 중간과정을 자랑했더니 추가 과제를 내주어서 더 맘에드는 완성본을 얻을 수 있었다 ㅎㅎㅎ

좋은 반 친구들, 팀원들과 같이 배운다는게 카이로스 2기의 가장 큰 장점인 것 같다. 특히 싸피는 온라인으로 했어야 했기 때문에 ㅠㅠ 그때에 대한 아쉬움이 급 많이 들었다 ㅠㅠ ㅎㅎ 그래도 지금이라도 소중히 여겨야지..

 

이번주의 느낀점 : 

- 하드웨어는 어렵다! 소프트웨어는 오류가 나면 어떤 곳이 이상한지 힌트라도 주는데, 배선이 잘못되면 이게 왜 안돌아가..? 혹은 이게 왜 돌아가..? 의 상태에서 스스로 이상한곳을 찾아야하기 때문에 눈물이 났다😥 정말 전선 하나가 어느새 뽑혀있었다거나.. 어딘가 단선이거나.. 하는 전체를 보기가 정말 어렵다. 프로젝트가 커질수록 더욱 더 어려워질것 같다 ㅠ.ㅠ 그리고 LED가 터진다거나 아두이노에 연기가 나는(실화입니다) 상황에서도 당연히.. 아무런 경고가 없이 실행되기 때문에.. 인간에게 이런 책임을 준다고..? 제가요..? 같은 마음으로.. 한땀한땀 책임감있는 배선이 필수였다..

- 그럼에도 역시나 매력적이다! 빵판에 능숙해지니 그래도 어느정도 원하는 결과물을 위한 배선을 해낼 수 있었고 이런저런 배운 것들을 섞어서 출력해보는 재미가 쏠쏠했다. 특히 강사님께서 어느정도 자율성을 주실 때 반 친구들이 모두 다른 것들을 시도해보고 있어서 구경하고 서로 도와주고 하는 시간들이 참 좋았다.

 

다음주에는 이전에 진행한 RC카(라인 트레이싱), 로봇암 등 소규모 프로젝트 도전기를 포스팅할 예정이니 앞으로도 카이로스 2기 수강생의 로봇 도전기 많은 기대 부탁드립니다😎