반응형

【 아두이노 기초 】 #15 문자 LCD 제어 실습 II




 LCD 액정 디스플레이를 이용하여 문자를 출력 해보는 실습을 해보자.

앞 강좌에서는 16by2 LCD와 16by4 LCD를 사용하는 법에 대해 설명하였는데, 이번강좌에서는 사용자 정의 문자라고 할 수 있는 특수한 캐릭터(문자)를 직접 만들어 출력해보도록 하자 (앞 강좌 참조: http://rasino.tistory.com/128 )



▶ 실물 회로도면 :


※ 위 LCD는 I2C 통신 칩이나 기타 부가 장치가 없는 순수한 문자 LCD이다. 때문에 브레드 보드 접속을 위한 핀도 연결 되어 있지 않은 경우 아래와 같은 핀해더를 구해서 16핀만 남겨놓고 자른 다음 LCD 아래쪽에서 부터 연결하여 납땜을 하면 된다.

▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : 16by2 또는 16by4 LCD , 핀헤더, 반고정 저항 (10KΩ) 


▶ 회로 도면   : 아래를 참조하여 정확하게 연결하도록 한다.



 LCD 핀부위를 확대한 이미지는 아래와 같다  (7,8,9,10 핀은 사용하지 않는다)


LCD와 아두이노 핀 연결 부위 상세 이미지



< LCD 핀 배열 >

16by4와 기본 핀 배열은 같다.




▶ 실습 절차  : 
 (하드웨어)

 (프로그램설치)

 폰트를 이용하지 않고 직접 문자를 만들어 출력하기 위해서는 배열값을 일일이 만들어 주어야 하기 때문에 아래와 같은 프로그램을 이용하면 쉽게 만들어 사용하기 편리하며 코드 값 복사하기에도 간편하다.


 - 5 x 8 캐릭터 디자이너 프로그램 다운로드 (☜ 클릭):



 다운로드 받은 프로그램을 실행시키면 아래와 같은 화면이 뜰 것이다.



그러면 아래 설명을 참고하여 다양한 형태의 캐릭터를 만들어 볼 수 있다.





▶ 프로그램 (코드& 설명) : 

5x8 LCD Display Character Designer툴을 이용한 캐릭터출력

#include <LiquidCrystal.h>  

LiquidCrystal lcd(2,3,4,5,6,7);

byte SpecialChar0[8]={        //Custom Character #0

 B00100,

 B00100,

 B01110,

 B10101,

 B00100,

 B00100,

 B01010,

 B10001   };

// … 배열 1[8] ~  6[8] 까지 생략

byte SpecialChar7[8]= {        //Custom Character #7

 B00100,

 B10101,

 B01110,

 B00100,

 B00100,

 B00100,

 B11011,

 B00000   };  

 lcd.begin(CC,RR);

// CC 는 행(columns), RR는열 (rows) }


void setup(){

lcd.createChar(0, SpecialChar0);

lcd.createChar(1, SpecialChar1);

lcd.createChar(2, SpecialChar2);

lcd.createChar(3, SpecialChar3);

lcd.createChar(4, SpecialChar4);

lcd.createChar(5, SpecialChar5);

lcd.createChar(6, SpecialChar6);

lcd.createChar(7, SpecialChar7);

}

void loop() {

  lcd.setCursor(0,2);

  lcd.print  ("I'm Sung-sik KIM”);

  lcd.setCursor(0, 0);                     

 for(int i=0; i<16; i++)   {

   lcd.setCursor(1, 1);                   // 해당 행과 열로 커서 이동  

   lcd.write(i);                             // 상태 바 업데이트

   // 또는 이렇게 사용 lcd.write(byte(0));   … (byte(1));

  delay(300);                             // 0.3초간 지연 

  }   

}


※ 위 코드에서 만약 16by4 LCD(4줄 LCD)를 사용 한다면 lcd.begin(16,4)로 LCD 셋업 코드를 바꾸면 된다.  LCD 셀의 배열 위치값은 아래 이미지를 참조하라.




▶ 실행 영상 : 




위 캐릭터를 아래 영상처럼 애니메이션 효과로 처리한 영상이다.






▶ 아두이노 코드 다운로드 : 


LCD16by2_sign2.ino

LCD16by2_sign3.ino








반응형
반응형

【 아두이노 기초 】 #15 문자 LCD 제어 실습 II



 LCD 액정 디스플레이를 이용하여 문자를 출력 해보는 실습을 해보자.

앞 강좌에서는 16by2 LCD를 사용하였고 이번에는 16by4 LCD를 사용해본다. 문자를 표시할 수 있는 줄(행)이 4줄이므로 더 많은 문자를 표시 할 수 있다. 

(앞 강좌 참조: http://rasino.tistory.com/128 )



▶ 실물 회로도면 :


※ 위 LCD는 I2C 통신 칩이나 기타 부가 장치가 없는 순수한 문자 LCD이다. 때문에 브레드 보드 접속을 위한 핀도 연결 되어 있지 않은 경우 아래와 같은 핀해더를 구해서 16핀만 남겨놓고 자른 다음 LCD 아래쪽에서 부터 연결하여 납땜을 하면 된다.

▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : 16by4 LCD , 핀헤더, 반고정 저항 (10KΩ) 


▶ 회로 도면   : 아래를 참조하여 정확하게 연결하도록 한다.



 LCD 핀부위를 확대한 이미지는 아래와 같다  (7,8,9,10 핀은 사용하지 않는다)


LCD와 아두이노 핀 연결 부위 상세 이미지



< LCD 핀 배열 >

16by4와 기본 핀 배열은 같다.




▶ 실습 절차  : 



▶ 프로그램 (코드& 설명) : 



※ 위 코드에서 만약 16by4 LCD(4줄 LCD)를 사용 한다면 lcd.begin(16,4)로 LCD 셋업 코드를 바꾸면 된다.  LCD 셀의 배열 위치값은 아래 이미지를 참조하라.




▶ 실행 영상 : 

  





▶ 아두이노 코드 다운로드 : 

LCD16by4_text_count.ino








반응형
반응형

【 아두이노 기초 】 #14 문자 LCD 제어 실습 I



 LCD 액정 디스플레이를 이용하여 문자를 출력 해보는 실습을 해보자. 연결핀수는 16핀이며 컬러가 아닌 단색에 그래픽이 아닌 문자 전용 LCD이다. 흔히 프린터 등의 디스플레이 장치로 많이 사용되는 LCD라고 생각하면 이해하기 쉬울 것이다.  



▶ 실물 회로도면 :


위 LCD는 I2C 통신 칩이나 기타 부가 장치가 없는 순수한 문자 LCD이다. 때문에 브레드 보드 접속을 위한 핀도 연결 되어 있지 않은 경우 아래와 같은 핀해더를 구해서 16핀만 남겨놓고 자른 다음 LCD 아래쪽에서 부터 연결하여 납땜을 하면 된다.

▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : 16by2 LCD , 핀헤더, 반고정 저항 (10KΩ) 


▶ 회로 도면   : 아래를 참조하여 정확하게 연결하도록 한다.



 LCD 핀부위를 확대한 이미지는 아래와 같다  (7,8,9,10 핀은 사용하지 않는다)


LCD와 아두이노 핀 연결 부위 상세 이미지



< LCD 핀 배열 >




▶ 실습 절차  : 



▶ 프로그램 (코드& 설명) : 




※ 위 코드에서 만약 16by4 LCD(4줄 LCD)를 사용 한다면 lcd.begin(16,4)로 LCD 셋업 코드를 바꾸면 된다.  LCD 셀의 배열 위치값은 아래 이미지를 참조하라.




▶ 실행 영상 : 

  




▶ 아두이노 코드 다운로드 : 


LCD16by2_text_count.ino






반응형
반응형

【 아두이노 에러 잡기   #2 exit status 1 컴파일 에러


▶ 에러 증상  

 

.

.

.

exit status 1 

보드 Arduino/Genuino Uno 컴파일 에러 






▶ 에러 원인   

 주로 스케치에서 #include 로 헤더파일 등의 함수를 쓰겠다고 선언 하였으나, 함수(라이브러리)가 스케치상에서 추가가 되지 않은 경우 발생한다.  




▶ 에러 증상 예시 :


포함시켜 놓은 라이브러리가 스케치에 추가가 되지 않아 에러 발생!



▶ 에러 해결 방법   


해결하기 쉬운 순서대로 :


 ① 라이브러리 직접 검색으로 추가하기 :

스케치 프로그램 메뉴에서  스케치메뉴  라이브러리 포함하기메뉴  라이브러리 관리...을 클릭!


 아래 처럼 메니저 창이 나타나면 검색창에 pitches 정도만 입력 하면 설치파일이 등록되어 있는 경우 아래처럼 설치버전이 나타남.   설치 버튼을 클릭 하여 설치한 후 다시 컴파일 하면 에러 해결 됨. (그래도 에러가 날 경우 스케치 파일을 종료하고 다시 열어서 실행해 볼 것) 

 



 ② pitches.zip 라이브러리를 인터넷에서 검색 후 다운 받아 추가하기 :

 스케치 프로그램 메뉴에서  스케치메뉴  라이브러리 포함하기메뉴  .ZIP 라이브러리 추가...를 클릭!  


 ③ '파일 추가'로 라이브러리 추가 하기 :


 pitches.h 헤더 파일만 가지고 있는 경우 아래 경로로 pitches 라는 새폴더를 만들고 그 속에 pitches.h 파일을 복사해 넣는다.


그런다음, 

  스케치 프로그램 메뉴에서  스케치메뉴  파일 추가...메뉴를 클릭!

하여 라이브러리를 추가한다.




반응형
반응형

【 아두이노 기초 】 #13 멜로디 출력 실습 II



 지난시간 스피커를 통해 멜로디를(Melody)를(도.레.미...)를 출력 출력해보았다. 이번 시간에는 국민 멜로디인 '학교종이 땡땡땡~'을 연주해보도록 하겠다.

동작이 잘 된다면 다른 멜로디도 작성해보면 재미 있을 것이다.



▶ 실물 회로도면 :



▶ 실제 회로 구성 모습 



▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : 스피커, 저항 (100Ω) 


▶ 회로 도면   : 


※ 스피커는 일단 타입의 소형 스피커 혹은 피에조 스피커 등 사용해보고 소리가 비교적 잘 들리는 것을 선택한다. 


▶ 실습 절차  : 



▶ 프로그램 (코드& 설명) : 


 


▶ 실행 영상 : 

  


제대로 동작 하려면, Pitches.h 라이브러리가 설치 되어 있어야 한다. 

라이브러리가 등록이 되어 있지 않으면 아래와 같은 에러가 나타난다. 


"exit status 1 보드 Arduino/Genuino Uno 컴파일 에러" 와 같은 에러가 나는 경우 아래 첨부파일에 있는 헤더파일(.h)을 아두이노 스케치의 라이브러리에 추가 해주어야 한다. 


만약 이와 같은 에러가 발생할 경우,  

아래 에러 해결 글을 참조 할 것




▶ 아두이노 코드 다운로드 : 


pitches.h

sketch_Melody2schoolbell.ino





반응형
반응형

【 아두이노 기초 】 #12 멜로디 출력 실습 I




 스피커를 통해 멜로디를(Melody) 출력해본다. 

단순한 멜로디출력이지만 음이 만들어지는 원리와 음의 주파수에 대해 이해할 수 있게 된다. 



▶ 실물 회로도면 :



▶ 실제 회로 구성 모습 



▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : 스피커, 저항 (100Ω) 


▶ 회로 도면   : 


※ 스피커는 일단 타입의 소형 스피커 혹은 피에조 스피커 등 사용해보고 소리가 비교적 잘 들리는 것을 선택한다. 


▶ 실습 절차  : 



▶ 프로그램 (코드& 설명) : 


  


▶ 실행 영상 : 

  




※ 다음 글에서는 간단한 음악을 플레이 해보도록 하겠다


제대로 동작 하려면, Pitches.h 라이브러리가 설치 되어 있어야 한다. 

라이브러리가 등록이 되어 있지 않으면 아래와 같은 에러가 나타난다. 


"exit status 1 보드 Arduino/Genuino Uno 컴파일 에러" 와 같은 에러가 나는 경우 아래 첨부파일에 있는 헤더파일(.h)을 아두이노 스케치의 라이브러리에 추가 해주어야 한다. 

만약 이와 같은 에러가 발생할 경우,  

아래 에러 해결 글을 참조 할 것

클릭! 컴파일 에러 잡기 



▶ 아두이노 코드 다운로드 : 


sketch_Melody.ino

pitches.h



 

[ 회로 설명 ]


위  LM386은 IC 는  OPAMP  IC 의 한 종류이고, 

저전압 오디오 신호를 증폭해 주는 IC 입니다.


3번 핀에 가변저항을 이용하여 입력 Audio(음성) 신호가 입력이 되고 5번 핀 출력에 증폭이 되어 나오는 회로가 됩니다. 

 ( 참고 : 1번 8번 핀에 콘덴서나 저항 등의 특별한 연결이 없을 경우 위 이미지에 표시 된 것 처럼 게인이 20 인 회로가 됩니다. 

증폭도 구하는 식 : 20log(x) = 26 db (데시벨) ,    x = 19.9...   즉, 약20배 정도의 전압 증폭을 보여줍니다. 그리고 1, 번 8번 핀에 콘덴서를 달거나 콘덴서와 저항의 조합을 달게 되면 더 올라가게 됩니다.    (26db는 IC를 제조한 회사에서 회로 데이터 시트를 다운받아 참고,  Vs에 6v, 1kHz 전압의 경우)  )


출력에 연결된 0.05uF과 10옴의 저항 회로는 출력 스피커에 의한 발진(진동)을 제거해 주는 역할 을 하게 됩니다(bypass) , 

 그리고 오디오신호(음성등의 신호)와 함께 5V 직류전압이 같이 바이어스 되어 입출력이 되는데요, 신호를 증폭하고 난 후의 5V 전압은 출력에서 제거를 하고 오디오 신호만 출력해야 합니다. 그렇지 않을 경우 스피커가 과열되거나 해서 탈 수 있습니다. 그래서 콘덴서(여기서는 250uF)를 달아서 직류 전압성분을 제거 하는 역할 을 하게 됩니다.  250uF의 콘덴서는 f=1/2πRC, 8옴의 스피커일 경우 80Hz 까지의 저음을 들을 수가 있고 더 낮은 저역통과를 원하면 콘덴서 용량을 키워 주면 됩니다.




아래는 디바이스 마트 등에서 판매하는 모노 디지털 증폭모듈(lm386) 입니다.



반응형
반응형

【 아두이노 기초 】 #11 FND 구동 실습 II



 앞서 FND에 '0'이라는 숫자를 표시해 보았다.  이제 FND에 숫자 0부터 9까지 카운트를 해보도록 하자.


참조 링크 : FND 구동실습 I 



▶ 실물 회로도면 :




▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : FND (507, Common Anode 타입, 공통단자 +전압 연결),  220Ω 


▶ 회로 도면   : 


※ FND 는 크게 Anode(# 507) 타입과 cathode (#500) 타입 두 가지로 나뉜다. cathode(음극) 타입은 공통단자가 GND(그라운드, : 흔히 말하는 -마이너스 단자 )로 연결시켜 사용하는 타입이다. 위 도면에서 FND 내부의 LED 방향을 유심히 살펴보자. 


▶ FND 세그먼트와 핀 배치  : 

▽ #507


▽ #500





▶ 프로그램 (코드& 설명) : 


// 공통단자가 +VCC 연결인 507 Anode 타입을

// 사용할 경우 위 코드처럼 LOW를 출력해야 

// 해당 세그먼트가 켜진다  



▶ 실행 영상 : 

  



 


※ 추가로 알파벳 대문자 혹은 소문자 출력도 코딩을 해보면 좋다.


▶ 아두이노 코드 다운로드 : 

sketch_FND0to9.ino




반응형
반응형

【 아두이노 기초 】 #10 FND 구동 실습 I


 아두이노 I/O 포트 제어를 통해 FND(7 segment display)를 제어 해보자.


▶ 실물 회로도면 :




▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : FND (507, Common Anode 타입, 공통단자 +전압 연결),  220Ω 


▶ 회로 도면   : 


※ FND 는 크게 Anode(# 507) 타입과 cathode (#500) 타입 두 가지로 나뉜다. cathode(음극) 타입은 공통단자가 GND(그라운드, : 흔히 말하는 -마이너스 단자 )로 연결시켜 사용하는 타입이다. 위 도면에서 FND 내부의 LED 방향을 유심히 살펴보자. 


▶ FND 세그먼트와 핀 배치  : 

▽ #507


▽ #500





▶ 프로그램 (코드& 설명) : 


// 공통단자가 +VCC 연결인 507 Anode 타입을

// 사용할 경우 위 코드처럼 LOW를 출력해야 

// 해당 세그먼트가 켜진다  



▶ 실행 영상 : 


  FND에 숫자 '0'을 표시해보도록 하자.  기타 원하는 숫자 혹은 위치에 LED segment를 켜보도록 연습해본다.


 



※ 다음 글에서 이번 과제에 이은 FND 구동을 위한 응용 예제를 다루어 보도록 하겠다. 


▶ 아두이노 코드 다운로드 : 

sketch_FND.ino




반응형
반응형

【 아두이노 기초 】 #09 시리얼 통신을 통한 I/O 구동 실습

 시리얼(Serial) 통신을 이용하여 아두이노의 포트 제어를 실습해 볼 수 있다.  



▶ 실물 회로도면 :




▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : LED X 5 (보유수량 만큼),  220Ω(LED 수량 만큼) 


▶ 회로 도면   : 


※ LED 극성에 주의 한다. 


▶ 실제 연결 모습  : 


아두이노의 0, 1 번 포트는 하드웨어 시리얼 통신을 위한 TX, RX 포트 임으로 아두이노의 2번 포트 부터 사용하도록 한다.




▶ 프로그램 (코드& 설명) : 



2~5번 LED 코드 내용도 위와 같은 형태로 해서 작성한다. 



▶ 실행 영상 : 


 (전체화면으로 보세요)



※ 다음 시간에는 이런 입출력 기능을 이용하여 FND (7segment Display) 를 제어 해도도록 하겠다. 


▶ 아두이노 코드 다운로드 : 

sketch_SerialLEDon_off.ino


반응형
반응형

【 아두이노 기초 】 #08  포토레지스터( CDS ) 제어

 

 빛에 따라 저항 값이 변하는 포토레지스터, 일명 CDS를 이용하여 LED를 켜고 끄는 실습을 해보자.  빛을 차단하면 LED가 켜지고 빛에 노출되면 LED가 꺼지도록 해보자. 또는 그 반대도 가능하다.

 

 

 

 

▶ 실물 회로도면 :

 

 

 

 

▶ 부대품 목록 : 아두이노 보드, 브레드 보드

 

▶ 부품 목록    : LED, 220Ω , 10㏀, CDS

 

▶ 회로 도면   : 

 

▶ 실제 연결 모습  : 

 

 

 

▶ 프로그램 (코드& 설명) : 

 

int LED=6;         //우노에서는 디지털 포트는 숫자만 입력int LIGHT=A0;  //아날로그 포트는 A0 형태로 입력int val=0;int fix=0;
void setup() { pinMode(LED,OUTPUT); Serial.begin(9600);}
void loop() { val=analogRead(LIGHT); fix = constrain (val,0,255); analogWrite(LED, fix); Serial.println( fix ); delay(100);

 

}

 

 

▶ 프로그램 (코드 다운로드) : 

LED_CDS-6.zip
다운로드

 

 

▶ 실행 영상 : 

 

 (전체화면으로 보세요)

반응형