본문 바로가기

분류 전체보기215

아두이노 Serial MP3 모듈 -#1 아두이노 하다가 이론 공부만 한것 같아서, 간단하게 집에 있는 모듈을 찾다 보니, MP3 모듈이 두개 있다. 한개는 시리얼 방식이고 한개는 I2C 방식 같다. 물론 나도 아직 연결을 해보지는 않았다. 조금씩 공부하기로 하자. 아무래도 시리얼 방식이 연결할것이 많이 없어서 만만해 보인다. 딱히 어려운것은 없으니 따라서 해보자. 그리고 어떻게 아두이노 모듈을 공부하는지 방법도 중간 중간 기술 할까 한다. 1. 일단은 구글에서 Serial MP3 Player로 검색하자. 아래 주소로 쓸만한 내용과 소스코드가 있다. https://www.hackster.io/javier-munoz-saez/arduino-mp3-player-catalex-2effef 나도 처음이나 그냥 읽어 보자. 그리고 소스코드를 카피해서 아.. 2020. 2. 6.
아두이노에서 문장 만들기 #2 자 그러면 약간의 응용으로 가죠. 검색하면 구글맵을 이용해서 네비게이션 처럼 구글맵을 출력하는 HTML 코드가 있습니다. 그것을 문장으로 만들어 보죠. void Web_Page1(ESP8266& wifi) { // start sending the HTML String webpage; String result; char buf1[256]; webpage = "\r\n"; webpage += "\r\n"; webpage += "\r\n"; webpage += " \r\n"; webpage += " \r\n"; webpage += "\r\n"; webpage += "\r\n"; BT.print(result = getStatus(wifi.send(connectionId, webpage ))); delay(500.. 2020. 2. 4.
아두이노에서 문장 만들기 #1 코드를 작성 할때 다른 사람들이 보기 편하게 작성하면 보는 사람도 편합니다. 그런데 보기 짜증나게 작성하면 정말 보기 싫어 합니다. 그 중에 대표적인게 문장을 만드는경우 입니다. 아두이노에서 문장을 만드는 일이 많습니다. 문장을 출력 하는일은 잘 없지만, 1. HTML언어로 문장을 만들어야 웹브라우저에서 볼수 있습니다. 2. HTML문장으로 데이터를 전송하여 MYSQL DB에 데이터를 삽입 할때도 문장이 필요합니다. 2.2 여기서 HTTP 전송양식이 XX같아서 정확히 작성하지 않으면 정말 지랄 맞는것 처럼 되지 않습니다. 2.3 심지어는 POST 방식은 줄바꿈 개수까지도 정확해야 합니다. 결국 작성한 내용을 출력해서 확인하는 방법이 제일 좋습니다. 아래와 같이 했을경우 문제점이 무엇일까요 ? 내용을 확인.. 2020. 2. 4.
아두이노 reset -#4 이 방법은 약간 하드웨어적인 방법인것 같다. 아두이노의 리셋핀에 디지털 출력핀을 연결해서 리셋했다. 이전에도 이야기 했지만, 로우을 걸어 주면 리셋된다. 하이를 걸어주면 리셋되게 할 것 같은데, 어째던 만든사람 마음이니 그냥 넘어 가자. 그래서 그런지 시작하자 말자 high를 걸어 주어야 한다. 안 그러면 리셋이 무한 반복 될것이다. #define BAUD 115200 void setup() { digitalWrite(2, HIGH); delay(200); Serial.begin(BAUD); Serial.print("ARDUINO RESET TEST!!! \n"); pinMode(2, OUTPUT); delay(200); } void loop() { software_reset(); } void softw.. 2020. 1. 27.
아두이노 reset -#3 이 방법도 소프트웨어적인 방법이다. 그래도 시발점, 트리거를 위해서 2번핀에 풀다운 버턴을 하나 달았다. 소스코드에서 함수를 호출 한다. 딜레이를 준이유는 직접하면 알겠지만, 한번 누르면 여러번 리셋된다. 그것을 방지하기 위한것이고, 리셋하는 함수는 실제로 한줄이다. 큰 어려움은 없을것 같다. #define BAUD 115200 void (*reset_fun) (void) = 0; void setup() { Serial.begin(BAUD); pinMode(2, INPUT); Serial.print("ARDUINO RESET TEST!!! \n"); } void loop() { int v1= digitalRead(2); if(v1== HIGH) software_reset(); } void software.. 2020. 1. 27.
아두이노 reset -#2 이 방법은 소프트웨어적인 방법이다. 그래도 예제로 보이기 위해서는, 시발점, 트리거를 위해서 2번핀에 풀다운 버턴을 하나 달았다. 비전공자라서 그런지 항상 풀다운, 풀업이 헷갈린다. 그래도 몰라도 된다. 할때 마다 책보면 되니까... 일단 선을 연결하고 하드웨어를 만들자. 별것 없으니 사진만 봐도 충분 할 것 같다. 그리고 소스코드에서 함수를 호출 한다. 딜레이를 준이유는 직접하면 알겠지만, 한번 누르면 여러번 리셋된다. 그것을 방지하기 위한것이고, 리셋하는 함수는 실제로 한줄이다. #include #define BAUD 115200 void setup() { Serial.begin(BAUD); wdt_disable(); pinMode(2, INPUT); Serial.print("ARDUINO RESET.. 2020. 1. 27.
아두이노 reset -#1 아두이노에서 리셋을 하는 3가지 방법에 대해서 테스트 할 것이다. 두가지는 소프트웨어 리셋이고 한가지는 물리적인 핀을 사용하는것이다. 1. Wachdog Timer 를 사용하는 방법이라고 하는데 일단 WDT를 잘 모른다. 2. Zero Address 로 분기 하도록 하는 방법인데, 제일 문난한듯. 3. Reset 신호에 I/O 핀을 직접연결하여 필요시에 로우값을 주는 방법이다. 3.1 여기서 주의 해야 할 것도 있다. 3.2 기본적으로 모든핀은 로우로 시작하기 때문에 시작 하자 말자 setup에 high를 주어야 한다 3.3 안그러면 리셋이 무한 반복 된다. 그리고 테스트를 위해서 버턴을 하나 연결해서 진행 했다. 이제 천천히 해보자 2020. 1. 27.
아두이노 on/off 제어 - #3 여기서 핵심은 아래 소스코드의 함수 이다. 소스코드는 그렇게 길지는 않다. 그러나 어려운 논리로직이 들어 있다. 온오프에 대한 로직이다. 알아야 할 것은 1. static 변수의 의미 2. 물은표 연산자 3. 논리 합과 논리 곱 논리연산에 익숙하지 않는 프로그래머라면 종이에 적어 가면서 한번 적어 보는것도 좋을것 이다. 논리연산은 정말로 왕도가 없다. 많이 보고 눈으로 익히는게 최고 이다. bool control(double _1st, double _2st, double value) { bool case1; bool case2; static bool case3 = false; static bool case4 = false; case1 = value 2020. 1. 12.
아두이노 on/off 제어 - #2 여기서 데드밴드를 설정해 보자. 데드밴드에 생소한 사람도 있을것 같은데, 죽은 구간이다. 즉 한개 값으로 제어하는 경우 단순명확하지만, 특정상황에서는 작동이 반복될수가 있다. 켜지고 꺼지고 왔다 갔다. 물론 이렇게 되면 기기나 장치에 무리가 가서 고장이 발생하기 좋다. 그래서 죽은 구간을 설정한다, 즉 온도가 올라 갈때는 에어컨이 켜지고 온도가 내려 갈때는 꺼지고, 예를 들어 25도씨에 커진다고 하면 특정 상황에서는 에어컨이 켜지고 꺼지고를 반복하게 된다. 27도씨 정도에 커지고, 24도씨에 꺼지 만들수가 있다. 이런 경우 28도씨에서 26도씨에 들어 간다고 해서 꺼지는것은 아니다. 24도씨가 되어야 꺼진다. 반데로 23도씨에서 25씨가 된다고 해도 커지는것은 아니다. 즉 24도씨에서 27도씨에 죽은구간.. 2020. 1. 12.