아두이노6 아두이노 float 값을 byte 배열로 저장하기 센서를 사용하다보면, 값을 통신으로 값을 전달하는 경우가 있습니다. 데이터가 byte인 경우에는 큰 문제가 없지만 float 형식과 같은 경우에는 처리하기가 귀찮아집니다. 데이터를 쪼개서 나누어서 저장하고 보내고 해야하기 때문입니다. 이런 경우에는 union 형식으로 변수를 만들어서 관리하면 편하게 관리가 됩니다. 자유롭게 원하는 형식으로 가져다 사용할 수 있습니다. union { unsigned long l; byte c [4]; float f; } temperature; void setup() { Serial.begin(57600); temperature.f = 175.63; Serial.println("temperature is: "); Serial.println(temperature.f); Ser.. 2020. 12. 22. ITS-1500S를 사용하여 핀하나로 조이스틱 버튼 구성하기 ITS-1500 시리즈 버튼은 디지털 버튼으로 5개의 스위치가 연결되어있는 버튼입니다. 형태는 일반 스위치가 아니라 조이스틱 버튼 모양으로 생겼는데, 디지털 신호로 출력됩니다. 아날로그 값으로 출력이 되지 않으므로 조이스틱으로는 사용이 어렵지만, 메뉴 선택등의 용도로는 적당한 형태입니다. 그렇지만 일반적인 조이스틱모듈이 X, Y축 혹은 X, Y축 + 버튼으로 구성되어있는 것에 비해 X상, X하, Y상, Y하, 버튼으로 구성되어 있어서 더 많은 핀이 사용됩니다. 이것을 전압분배에 따라 스위치의 값이 다르게 나오도록 저항을 구성하면 하나의 핀으로 5개의 입력을 받을 수 있습니다. 대신 입력을 받을때는 아날로그 값으로 받아야 합니다. 다음과 같은 방식으로 회로를 구성하면 하나의 핀으로 입력을 받을 수 있습니다.. 2020. 12. 21. UART 간단하게 스위치하기 하나의 UART 포트에 추가적인 통신 모듈을 통해 서로 통신을 해야하는 경우가 있습니다. 다음의 경우에는 UART포트에 USB와 블루투스를 함께 통신해야하는 경우입니다. 그런데 문제는 다음의 연결을 모두 만족해야 합니다. UART USB UART 블루투스 USB 블루투스 스위치를 달거나 모듈을 달았다 뺏다 할 수 있으면 좋겠지만, 그럴 수 없는 경우입니다. 이런 경우에 UART를 74HC4066 IC를 사용하여 스위치를 쓰듯이 사용할 수 있습니다. 4066 부분의 회로만 가져온 모습입니다. (실제 적용한 모델은 74HC4066PW 입니다.) UART_CTR_A0 UART_CTR_A1 UART_CTR_B0 UART_CTR_B1 네개의 핀을 제어해서 MCU의 TX와 RX를 USB와 BT모듈에 선택적으로 연결.. 2020. 12. 18. 8MHz 이하의 아두이노 보드에서 WS2812(네오픽셀) 사용하기 아두이노에서 WS2812를 사용하는 경우 네오픽셀 라이브러리를 사용하는 경우가 많습니다. WS2812 -> Adafruit_NeoPixel 일반 적인 우노등의 범용보드에서는 문제가 없지만, 8MHz 이하일 경우에는 작동이 되지 않는 문제가 있습니다. (예를 들어 7.3728MHz의 경우) 그런경우에는 light_WS2812 라이브러리를 사용합시다. https://github.com/cpldcpu/light_ws2812 사용방법은 크게 어렵지 않습니다. #include WS2812 LED(1); // 1 LED cRGB value; void setup() { LED.setOutput(9); // Digital Pin 9 } void loop() { value.b = 255; value.g = 0; valu.. 2020. 12. 18. 여러 아날로그 센서값 출력 아날로그 센서 값 출력 아날로그 센서는 시리얼 통신을 사용하여 쉽게 값을 확인 가능하다. //아날로그 센서 한개 확인 출력 void setup() { Serial.begin(9600);} void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue);} 한개일 경우에는 위의 방법대로 하면 쉽게 확인 가능하다.여러개를 체크 하는 경우에 센서값이 실시간으로 연속적으로 들어오기 때문에 확인이 어렵다.이처럼 여러 데이터를 한번에 확인해야 하는 경우가 발생하는데, 이때는 다음과 같이 입력하면 쉽게 확인이 가능하다. 이런식으로 print와 println을 사용하면 한줄에 여러 데이터를 표시 할 수 있게된다. 이렇게 데이터를 한눈에 알아볼수 있.. 2016. 1. 19. ADC 최소값 최대값 출력 ADC 최소값 최대값 출력 센서를 사용하다보면 센서를 센서의 최소값과 최대값이 필요한 경우가 생긴다.즉, peak 값이 필요한 경우인데, 소리를 감지하는 경우에 사용하게 된다. (박수소리 감지 등등...) 아두이노 기본 함수에는 min() 과 max() 라는 함수가 있어서 이를 이용하면 쉽게 최대값과 최소값을 나타낼 수 있다.min()은 인자로 쓰인 두개의 숫자를 비교해서 더 작은 값을 반환해주고,max()의 경우에는 마찬가지지만 더 큰 숫자를 반환한다. 아래의 예제에는 아날로그 센서값을 for문을 사용해 일정 횟수 체크해서 그사이의 최대값과 최소값을 구한 뒤에 시리얼 통신으로 화면에 출력하는 예제이다. void setup() { Serial.begin(9600);} void loop() { int mi.. 2016. 1. 19. 이전 1 다음