전에 아두이노 우노에서
oled와 블루투스 모듈을 한번에 사용하려고 했다가
메모리 문제로 인해 동시 사용을 못하게 된 후
(바로 그 문제를 직면했던 날 게시글)
https://waytocse.tistory.com/76
바~~~로 아두이노 메가를 샀다. (비싸...)
그런데 아두이노 우노에서 돌아가던 코드를 그대로
아두이노 메가에서 사용하려고 하자 작동이 안되는 것을 확인할 수 있었다.
막 처음에는 이런 오류도 뜨고, 블루투스도 앱과 연동했는데
앱으로는 값을 잘 전송하는데 아두이노 시리얼 모니터에서는 출력을 안해서
(그러니까 블루투스 모듈로 쓰기는 되는데 읽기가 안되는 상황..)
무슨 문제인지 알아보다가 세 가지 문제를 발견했다.
1. Arduino > 툴 > 보드가 Uno로 되어있음
2. OLED가 안먹힘
3. BLE(Bluetooth4, HM-10)이 안먹힘
그래서 빨리 하던 프로젝트를 마무리하기 위해
이 세가지 문제를 해결해주었다.
1번 문제 해결 (보드 설정)
1번 문제는 아래처럼 메가로 바꾸어주고 해결했다.
2번 문제 해결 (OLED)
2번 문제는 이전에 UNO에서는 OLED의 SDA, SCL핀을 4,5번에 꽂았다면
Mega에서는 OLED의 SDA, SCL을 20, 21번에 꽂아야 했다.
메가를 보면
안그래도 이렇게 20, 21번에 SDA, SCL이라고 적혀있다... ㅎㅎ
이렇게만 연결하면 아두이노 우노에서처럼 OLED가 잘 작동한다.
우노에서 OLED 제어한 방법이 궁금하다면 아래를 참고하자
https://waytocse.tistory.com/71?category=1020896
3번 문제 해결 (Bluetooth4, HM-10)
3번 문제도 2번문제와 같은 맥락으로 해결할 수 있었다.
이전에 아두이노 우노에서는 블루투스 모듈에 RX, TX연결 핀을 설정해줬어야 했다면
아두이노 메가에서는 블루투스 모듈의 TX핀을 보드의 19번 RX에 꽂고
블루투스 모듈의 RX핀을 보드의 18번 TX에 꽂아준 후
코드를 이렇게
#include <SoftwareSerial.h>
String byteTmp = "";
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
while(Serial1.available()){//블스루투->아두이노
byte data = Serial1.read();
Serial.write(data);
}
}
따로 핀 설정을 하지 않고 Serial1 로 해주면 끝이었다.
매우 간단..
아주 작동을 잘한다. 굳...
'컴퓨터 > 아두이노 라즈베리파이' 카테고리의 다른 글
리눅스)crontab으로 python파일 주기적으로 실행시키고 log남기기 (0) | 2022.12.11 |
---|---|
라즈베리파이4 SSH접속 설정 (0) | 2022.12.11 |
[아두이노] Uno에서 Adafruit_SSD1306와 SoftwareSerial 동시 사용 불가(OLED와 Bluetooth) (0) | 2021.12.03 |
[아두이노] 안드로이드와 BLE(Bluetooth4) 통신3 - 앱으로 데이터 전송 (0) | 2021.12.02 |
[아두이노] 안드로이드와 BLE(Bluetooth4) 통신2 - 회로도/코드 (2) | 2021.11.30 |
댓글