본문 바로가기
728x90
반응형

Arduino&RasberryPi20

20. Arduino - 4 자리 / 1자리 세그먼트 동시에 작동시키기 필자는 지금까지 포스팅했던 4자리 세그먼트와 1자리 세그먼트, 이 두 세그먼트 LED를 하나의 Arduino 보드에서 동시에 작동을 시켜보고 싶었다. 그러나, 각각의 LED가 Arduino와 연결될 수 있는 단자의 수가 12개, 10개였기 때문에, Arduino 보드 하나에 모든 핀을 연결하는 것은 불가능했다. 따라서, 필자는 4자리 세그먼트와 1자리 세그먼트의 각 세그먼트를 하나의 공통 회로로 이어질 수 있도록 회로를 만들었다. 즉, 4자리 세그먼트에서 a 세그먼트 점등에 관여하는 단자는 1자리 세그먼트의 a 세그먼트 점등에 관여하는 단자와 브레드보드의 같은 회로에 연결하고, 이 회로의 끝과 Arduino Pin 하나를 이어줌으로써, 2 LED를 동시에 작동시킬 수 있도록 만드는 것이다. 아래의 사진처.. 2019. 12. 10.
19. Arduino - 4자리 7 세그먼트 LED(2): 최적화 코드 분석 7자리 세그먼트에 적용할 코드를 이것저것 실험해 본 결과, Arduino의 저장 공간을 최소한으로 사용할 수 있는 가장 획기적인 방법은 이진 자료형인 byte를 변수에 사용하는 것이었다. 이 방법으로 작성된 코드를 밀어넣으니, Arduino의 총 저장 공간 중 단 3%만 차지할 정도로 크기가 획기적으로 줄어든다. 필자가 이전 포스팅에서 자체적으로 작성한 코드가 이의 두 배인 6% 공간을 차지했었으니... Arduino가 개선된 코드를 작동시키며 느끼는 부담감이 많이 사라졌을 것이다. byte 자료형으로 4자리 7세그먼트를 동작시키는 코드는 인터넷에 찾아보면 무수하게 널려있다. 그러나 문제는, "그냥 이거 붙여쓰면 동작 잘해요~!"라고만 작성된 글들이 대부분이라, 실제 이 코드가 Arduino 내에서 어떻.. 2019. 11. 24.
18. Arduino - 4자리 7 세그먼트 LED(1) *** 4자리 7 세그먼트 LED의 동작과정에 대해 이해하기 위해서는 1자리 7 세그먼트 LED의 동작 과정에 익숙해져야한다. 따라서, 1자리 세그먼트에 대해 잘 모르시는 분들이라면, 여기를 눌러 세그먼트 LED 작동 방식에 대해 감을 잡은 뒤, 본 포스팅을 읽어주시기 바란다. 지난 포스팅에서는 1자리 7세그먼트 LED를 작동시키는 법에 대해 알아보았다. 이번에는 4자리를 표시할 수 있는 7 세그먼트 LED를 다루는 법에 대해 상세히 작성하고자...했으나, 너무 알아야 할 내용이 방대한 탓에, 포스팅을 나누어 진행하게 되었다... 4자리 7 세그먼트도 작동 방식은 1자리 부품과 별반 차이가 있지는 않다. 하지만, 제한된 핀으로 4자리를 각기 다르게 표시해야하는 특성 때문에, 코드가 조금 더 복잡하다. 필.. 2019. 11. 21.
17. Arduino - 1digit 7세그먼트 LED 사용법 일상 생활 중에 흔히 마주치는 엘레베이터나 전자 시계에서, 위의 사진처럼 각진 숫자를 볼 수 있다. 이런 형태의 숫자를 표시하는 전자 부품이 존재하는데, 7 세그먼트 LED라고 불린다. 7 세그먼트 LED는 "7 부분으로 나뉘어진 LED"라고 생각하면 되는데, 아래의 사진처럼, 부품 내에 한 자리 숫자를 표현하는 LED가 7개가 존재하고 있기 때문이다. 이번 포스팅에서는, 한 자릿수를 표시하는 7 세그먼트 LED의 사용법에 대해 작성하려고 한다. 사실, 일반 LED를 사용하는 방법을 알고 있다면, 7세그먼트의 사용법도 크게 어렵지는 않을 것이다. 7개의 LED를 동시에 작동시켜야하기 때문에, 회로와 동작 코드가 일반 LED에 비해 조금 더 복잡할 뿐이다. 다만, 7 세그먼트 LED의 종류에 따라, 회로 .. 2019. 11. 16.
16. Arduino - 광센서 원리 및 사용 지난 온도 센서 시험 실패 이후로, 약간은 의기소침해져 있던 상태에서, 다른 센서를 회로에 넣어 돌려보기로 했다. 이번에 실험할 부품은 광센서로, 이름 그대로 빛의 세기에 반응하는 센서라고 보면 된다. 이 센서는 광전효과라고 불리는 물리 현상을 이용한다. 광전 효과에 대해 이해하려면, 물리학에서 빛이라는 녀석이 어떻게 정의되어왔는지, 그 역사를 잠깐 살펴보는 것이 좋다. 1. 빛이란 무엇인가... 언제까지였는지 정확히 기억이 나지 않지만, 빛이라는 녀석은 단순히 파동으로만 정의가 되던 때가 있었다. 토마스 영이라는 사람이, 매우 어두운 상자 내에, 2개의 전구를 켠 채로 넣어두고, 그 상자에 아주 작은 구멍 2개를 뚫어 빛이 어떻게 발산되는지 실험한 적이 있다(이중 슬릿 실험). 실험의 결과로, 두 구멍.. 2019. 11. 13.
15. Arduino - LM 35 온도 센서 사용법 이번 포스팅은 LM35라는 모델명을 가지는 온도 센서 사용법에 대한 내용이다. 이전 포스팅과 다른 점은, 실습 및 결과 내용은 추가하지 않는다는 것이다. 아무래도, 스타터 키트의 온도 센서 자체가 저렴한 가격의 모델이다보니, 결과라고 출력하는 내용들이 상당히 신뢰성이 떨어진다(실내에서 온도를 측정하는데 값의 변동이 매우 심하다...). 따라서, 추후 조금 더 좋은 센서를 구매하게 되면, 해당 센서 모델로, 실습과 결과 내용을 포스팅 할 예정이다. 1. 온도 센서의 구조 및 원리 Arduino를 사용하여, Arduino 주변의 온도를 측정할 수 있는 온도 센서를 작동 시킬 수 있다. 온도 센서는 가변저항과 유사한 특성을 가지고 있기에, 온도 센서 역시 회로와 연결되는 단자를 3개나 가지고 있다. 하나는 전.. 2019. 11. 13.
14. Arduino - 압전 부저 회로 구성 및 코드 1. 압전 부저 회로의 구성 압전 부저의 회로 구성은, 압전 부저의 작동 원리에 비하면 매우 간단하다. 압전 소자는 LED처럼 방향성을 지니지 않기 때문에, 양 끝 단자들 중 어떤 것이라도 GND나 전원 공급 핀에 연결할 수 있기 때문이다. 필자는 1년 전에 구입한 고장난 알람 시계를 분해한 뒤, 해당 제품 안에 내장되어 있던 압전 부저를 이용해 회로를 구성했다. 압전 부저와 연결된 선의 피복을 벗기고, 구리선을 깔끔하게 말아 Arduino 핀에 연결함으로써, 회로를 완성시켰다. 부저와 연결한 핀의 번호는 각각 11번과 GND이다. 회로는 매우 단순한데, 그에 반해 코드 작성은 약간 복잡하다. 아무래도 압전 부저의 동작과 큰 관련이 있다보니, 내용이 복잡할 수밖에 없다. 천천히 살펴보자. *** C 언어.. 2019. 11. 9.
13. Arduino - 압전 부저(Buzzer)의 원리, 소리와 주파수 Arduino 스타터 키트에, 압전 부저라고 불리는 소자가 하나 있다. 막상 그 모양새를 보면, "이 조그만한 게 소리를 낼 수 있다고?"라는 의문이 들 정도로 부저라는 이름과 어울리지 않는다는 느낌이 든다. 그러나, 회로에 연결해보면, 의외로 소리가 크다. 위의 사진과 같이, 모양은 매우 다양하며 크기는 이전 포스팅에서 언급했던 택트 스위치보다 약간 작은 크기다. 이 작은 녀석은 큰 소리를 발생시킬 수 있는 능력 하나 덕분에, 대부분의 전자 알람 시계에 내장되어 있다. 압전 부저 역시, Arduino 회로에 연결해 사용할 수 있다. 하지만, 이전의 부품과는 다르게, 부저는 작동 과정을 이해하지 못한다면 소리를 발생시킬 수 있는 코드를 작성하는 것이 상당히 난해하다. 따라서, 이번 포스팅은 압전 부저의 .. 2019. 11. 7.
12. Arduino - 택트 스위치와 풀업 저항 Arduino Uno 스타터킷에는 택트 스위치라고 불리는 부품이 들어있다. 이 택트 스위치는 쉽게 설명하자면, 초등학교 과학 시간에 진행했던 전기 실험의 스위치와 유사한 물건이라고 생각하면 된다. 모양은 일반적으로 볼 수 있는 버튼처럼 생겼으며, 누를 때 마다 똑딱거리는 소리가 난다. (세부 모양은 조금씩 다르며, 일부 제품은 간단한 조립을 진행해야하는 경우도 있다) 1. 택트 스위치의 내부 구성 브래드보드나 회로 위에서 택트 스위치를 사용하기 위해서는, 택트 스위치의 내부 구조에 대해 알고 있어야 한다. 다행히도, 택트 스위치는 내부 구조가 복잡한 부품은 아니다. 이 스위치는 회로와 연결되는 단자가 4개 존재한다. 정사각형 4개의 변 중, 2개의 변에 각각 2개의 단자가 부착되어 있는데, 서로 다른 변.. 2019. 11. 5.
11. Arduino - 가변저항을 이용한 회로 구성과 map() 함수 사용법 지금까지 획득한 지식을 바탕으로, 가변 저항이 들어간 회로를 하나 구성해보려고 한다. 회로는, 가변 저항의 크기 변화에 따라, 회로 위의 발광 다이오드(LED) 밝기도 변하도록 만들어보려고 한다. 그리고, 코드를 작성하는 과정에서, 번거로운 연산을 간편하게 진행할 수 있는 코드인 map() 함수의 사용법에 대해 알아보려고 한다. 1. 회로의 구성 및 동작 과정 확인 LED 밝기 변화는 크게 2가지 방법으로 진행할 수 있다. 첫 번째 방법은, LED와 가변 저항을 동일 회로에 위치하도록 만들고, 일정한 전원(3.3V나 5V Power 핀을 통해)을 회로에 공급한 뒤, 가변 저항의 크기를 조절하여 LED 밝기를 변화시키는 것이다. 나머지 하나는, 공급 전원의 크기가 가변 저항의 변화에 따라 비례하여 공급되도.. 2019. 11. 2.
10. Arduino - Arduino Pin과 통신 종류 사실, 이 포스팅 내용은 Arduino 시리즈 포스팅에서 가장 먼저 작성되어야 했던 글이다. 하지만, 일전에 밝혔듯이, 필자도 어떤 메뉴얼 없이 달랑 부품들만 조달받은 상태에서 Arduino를 시작했다. 이 때문에 맨 땅에 헤딩하고 뚝빼기 깨져가면서(?) 지식을 얻어 왔던터라, 체계적으로 글을 작성하기에 시간적인 여유가 없었다. Arduino를 사용하면서 가장 중요하게 바라봐야하는 부분이 무엇일까? 회로? 아니면 부품의 사용법? 아니었다. Arduino 자체다. Arduino가 어떤 방식으로 부품들에게 신호를 조달하며, 신호 조달 방식에 따라 사용할 수 있는 핀이 어떤 것들이 있는지를 먼저 파악하는 것이 우선이었다. 필자는 운이 좋게도, 이를 잘 알지도 못한 상태에서 어떠한 부품의 손상없이 지금까지 실험.. 2019. 10. 30.
9. Arduino - 가변저항을 이용한 analogRead() 값 변화 확인 지금까지 입출력 관련 함수로, digitalWrite(), digitalRead() 그리고 analogWrite() 함수에 대해 알아보았다. 지난 포스팅에서 analogWrite() 함수와 짝을 이루는 analogRead() 에 대해서는 포스팅하지 못했는데, Serial Monitor로 출력되는 analogRead() 값이 무엇을 의미하는지 도통 알 수 없었기 때문이다. 다행히 가변저항('전위차계'라고도 하며, 영어로는 potentiameter라고 한다)을 다루면서, 이 analogRead() 함수의 사용법에 대해 명확하게 알게 되어, 포스팅을 작성하게 되었다. 물론, analogRead()를 설명하기 위해서, 가변저항이라고 불리는 녀석과, 전압을 읽는 핀에 대한 이해도 필요하다. (이 다음에 진행할 포.. 2019. 10. 28.
728x90
반응형