본문 바로가기

분류 전체보기215

아두이노와 달력 - #4 알반적으로 컴퓨터의 경우는 CMOS가 가지는 시계 모듈도 있고, 네트웍 시계도 있고, 기타 등등 여러가지의 시계가 있다. 그래서 이래 와 같은 코딩이 가능 하다. 그러나 아두이노의 경우는 시계가 없다. 시계 모듈을 이용해서 시계를 추가 하지 않는 이상 시계는 없다. 그러나 타이머를 이용한 시간을 계산 할 수는 있다. 그래서 우리 흔하게 사용하는 타이머를 계산 할 수가 있는것이다. "뭐가 없다는것은.." 무엇일까 ? 그것과 관련한 함수가 없다는것이다. 쉽게 말해서 본인이 다 만들어야 하는것이다. unsigned long currentMillis = millis(); #include #include #include #include int get_time(); int main(int argc, char** a.. 2020. 3. 5.
아두이노와 달력 - #3 앞에것을 보았다면 기본적인 상식 차원의 내용은 이해 했을것이다. 그러면 컴퓨터는 어떻게 달력을 계산하는지 알아 보자. 사실 요것도 공부하다 보면 할것이 많다. C언어세서의 time_t와 time 함수를 이해 해야한다. 1900년 부터 몇 초나 지났는지에 대한 값이다. 간혹 1900년하고 1970년이라고 하는데 지금은 1900년 인것 같다 왜 1900년 하고 1970넌 일까 ? 생각하면 이전의 달력은 1년이 꼭 12달도 아니고, 들쑥 날쑥해서 어차피 계산해도 맞지 않다. #include #include int main () { time_t time; time (&time); printf("1900년 부터 몇 초나 지났나 : %d 초 \n", time); return 0; } http://colorscrip.. 2020. 3. 5.
아두이노와 달력 - #2 아래를 보면 아시겠지만, 그 계산법이 무색해 진다. 로마 왕들이 지들 마음데로 1년을 12달로 바꾼것도 있고, 30일을 31일로 바꾼것도 있다. 달력의 기원 지금으로부터 2000여 년 전의 로마 사람들도 처음에는 태음력을 쓰고 있었습니다. 로마의 달력은 1년이 355일로 되어 있었으므로 매년 10일이나 차이가 났고 어느 해에 가서는 가을에 있어야 할 추수 감사절이 여름에 있게 되기도 하여 여간 불편한 것이 아니었습니다. 로마의 왕 쥴리어스 시이저는 이제까지의 달력을 폐지하고 이집트와 같은 태양력을 쓰기로 결정하고는 1년을 365일로 하였으나, 사실 지구가 태양을 한바퀴 도는 시간은 정확히 365가 아니고 365일 5시간 48분 46초였으므로 역시 4년 정도가 지나면 하루 정도의 시간 차이가 생기고 이것이.. 2020. 3. 1.
아두이노와 달력 - #1 아두이노 이전에 프로그래밍을 다루다 보면 달력, 날짜를 종종 연산해야 하는 경우가 발생 한다. 사실 본인이 대학교 1학년때 최초로 만들어본 C 프로그램이 달력 프로그램이다. 나도 그때 까지는 몰랐다. 관심도 없었다. 1년이 366일이 있다는 사실을... 1년은 그냥 365일인줄. 그떄 도서관에서 찾은 자료에 의하면 4년에 한번씩 윤년이 와서 366일이 되고, 100년에 한번씩 빼고 400년에 한번씩 다시 윤년된다. 여기 까지는 극히 그냥 상식적인 내용이다. 그러면 처음의 시작은 0년 1월 1일 일까 ? 아니면 1년 1월 1일 일까 ? 그요일은 무슨 요일 일까 ? 월요일 일까 ? 일요일 일까 ? 이런 궁금증이 있었다. 그래서 프로그램으로 다시 계산해 봤다. 역으로 환산하면 충분히 계산 할 수가 있다. 그때.. 2020. 3. 1.
아두이노 Serial MP3 모듈 -#4 이전에 했던 두개를 합쳤다. 소스상의 정리도 조금 했지만 큰차이는 없으니 소스코드만 봐도 이해가 가능 할것 같다. 그리고 이전에 했던 시리얼 입력 함수는 주석 처리 했지만 쉽게 다시 원상 복귀 할 수가 있다. 항상 그렇지만 나무를 볼라고 하지 말고 숲이다. 메인 함수, loop만 열심히 보면 된다. 다음에 기회되면 코딩에 대한 철학도 이야기 하고 싶다. //code rearranged by Javier Muñoz 10/11/2016 ask me at javimusama@hotmail.com #include #define ARDUINO_RX 2//should connect to TX of the Serial MP3 Player module #define ARDUINO_TX 3//connect to RX o.. 2020. 2. 23.
아두이노 버턴과 키패드- #2 TTP229라는 아두이노 키패드 이다. 소스코드가 간단해서 쉽게 할 수 있을것 같다. 특징이라면 가격이 저렴하고 정전식, 손가락이 큰 사람이 누르기는 주위해야 할 정도. 소스 코드를 어떻게 수정하냐에 따라 동시 버턴도 가능하다. 본인은 동시 버턴은 불필요하고 16Key 까지 입력을 위해서 아래 3번 모듈을 쇼트 시켰다. 나름 쇼트하는 방식으로 여러가지 모드를 구현하게 만들수 있는것 같다. 아직까지는 그렇게 까지는 필요 없어서 단순하게 접근했다. 연결방식은 간단하지만 설명을 하자면 4핀 연결이고 전원, GND, SCL, SDO 연결이다. SCL이 있다고 I2C연결은 아니다. /* Define the digital pins used for the clock and data */ #define SCL_PIN .. 2020. 2. 23.
아두이노 버턴과 키패드- #1 버턴을 공부하다 보면 단순한 버턴이지만, 사실 공부 할게 많다. 버턴을 구현한다는게 완전한 하드웨어만으로도 완전한 소프트웨어만으로 구현하기는 어렵다, 조금 공부하다 보면 신경쓸것이 많다. 하드웨어적인 디바운스나 채트링이라는 현상 때문에 골치 꺼리가 발생한다. 사실 이것만 공부하다 보면 지루해 질수도 있다. 그래도 버턴과 키패드는 다른것과 결합해서 필수적으로 사용하는 경우가 많으니 많이 공부해야 한다. 사실 본인도 귀찮아서 소프트웨어적으로만 구성하거나 통신이라는 편법으로 제어 하기도 한다. 앞에서 자주 보았겠지만 귀찮음의 산물이다. 하드웨어적인것은 재미는 있는데 그 물리적인 연결이 귀찮은게 사실이다. 그래도 틈틈히 공부하기 바란다. 일단 키패드의 종류만 알아보자. 본인이 가지고 있는것이 모두는 아니니, 참.. 2020. 2. 23.
아두이노 Serial MP3 모듈 -#3 이전 소스코드에서 공부해야 할 것은 3가지다. 1. 메뉴 출력함수 2. 시리얼 명령창 입력 함수 3. 메인 루프 단순한 시리얼 출력 문장이다. 이것 모르는 사람은 없을것으로 본다. void display_menu() { Serial.print("==========MP3 PLAY 프로그램==========\n\n"); Serial.print(" SERIAL MP3 module \n"); Serial.print("********************\n"); Serial.print("* 1.play *\n"); Serial.print("* 2.NEXT_SONG *\n"); Serial.print("* 3.PREV_SONG *\n"); Serial.print("********************\n"); S.. 2020. 2. 6.
아두이노 Serial MP3 모듈 -#2 이전에 했던것이 그냥 001로 시작하는 mp3파일을 플레이 시키는것 이외에는 아무것도 없다. 여기서 부터 이제 공부를 해야 한다. 버턴을 달아서 mp3를 play하는 예제는 많으니 아두이노 시리얼 모니터 창을 이용해서 할 것이다. 일단 명령어는 처음곡 플레이, 이전곡, 다음곡 3개만 넣도록 하자. 나머지 볼률 업다운, 램덤 재생정도는 스스로 할 수 있을것 같다. //code rearranged by Javier Muñoz 10/11/2016 ask me at javimusama@hotmail.com #include #define ARDUINO_RX 2//should connect to TX of the Serial MP3 Player module #define ARDUINO_TX 3//connect to.. 2020. 2. 6.