본문 바로가기

Study10

Arduino bootloader (부트로더) 컴파일하기 아두이노는 usb를 통해서 프로그램을 업로드하여 사용합니다. 이 업로드를 가능하게 하는 것은 아두이노 보드에 부트로더가 탑재되어 있기때문입니다. 사용을 하다보면 부트로더가 망가져서 업로드가 되지 않는 경우가 있습니다. 이런 경우에는 부트로더를 다시 입력해서 사용을 하게 됩니다. 기본적으로 아두이노 프로그램 폴더 내부에 컴파일된 부트로더 hex 파일이 존재하므로, 별도로 컴파일 할 일은 사실상 없습니다. 간혹 필요한 경우가 발생하는 경우가 있긴하였습니다. 모터같은 경우에 출력핀의 상태에 따라 회전하게 되는데, 부트로더 상태에서는 그 핀 상태가 설정되지 않아서 프로그램을 업로드 하는 중에는 모터가 계속 회전해버리는 경우가 생겼습니다. 이를 수정하고자 부트로더 상태에서 핀의 상태를 초기화하는 코드를 입력하여 .. 2021. 7. 13.
아두이노 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.
nRF52DK 보드를 디버거로 사용하기 개발용 보드인 nRF52DK로 제작한 보드의 디버깅을 할수있습니다. 이보드뿐만 아니라 USB 동글형태의 nRF52840보드에도 적용이 가능하니, 디버거용도로 사용하려면 이쪽이 더 사용하기 좋습니다. 다음과 같이 보드에 케이블을 연결하면, 내부 보드가 아닌 외부의 보드를 인식하여 작동하므로, 별도의 디버거(J-link)가 없이도 디버깅이 가능합니다. 2020. 12. 21.
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.