도트매트릭스(dot matrix) 제어 2
이전글 도트매트릭스(dot matrix) 제어 1: http://eskelt.tistory.com/30
도트매트릭스의 제어를 통해
센서의 입력을 받아 도트매트릭스에 표현해보자
도트매트릭스에 얼굴을 표현하고 마치 말하는 것같은 모습을...
즉 sound센서의 입력을 받아
센서값에 따른 얼굴모양이 바뀌도록하여
입을 움직이는 것 처럼 표현해보자.
기본적인 작동은 이전글을 참고하자.
일단 여러가지 얼굴모양을 만들어 배열하고
간단한 수식으로 센서값에 따라 얼굴모양을 선택할 수 있도록 한다.
스케치 소스
-----------------------------------------------------------------------------
/* 말하는 매트릭스*/
int clock = 2; //74HC595의 클럭핀과 연결
int latch = 3; //74HC595의 래치핀과 연결
int data = 4; //74HC595의 데이터핀과 연결
int a;
int dataval[6][8]={
{0x66,0x99,0x00,0x00,0x00,0x00,0x00,0x00},
{0x66,0x99,0x00,0x00,0x18,0x00,0x00,0x00},
{0x66,0x99,0x00,0x00,0x3c,0x24,0x18,0x00},
{0x66,0x99,0x00,0x00,0x7e,0x42,0x3c,0x00},
{0x66,0x99,0x00,0x00,0x3c,0x24,0x24,0x18},
{0x66,0x99,0x00,0x00,0x7e,0x42,0x42,0x3c}}; //6개의 입모양이 다른 얼굴
int scanval[8] ={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
void setup(){
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(data, OUTPUT);
Serial.begin(9600);
}
void loop(){
a = analogRead(A0)/150; // 사운드 센서의 입력을 받아 값을 6단계로 표현하도록 계산
if(a>5){a=5;} // 총 6개의 모습이므로 5를 넘지 않도록 함.
for(int i=0; i<8; i++){
digitalWrite(latch, LOW); //래치를 내리고
shiftOut(data,clock,LSBFIRST, scanval[i]);
shiftOut(data,clock,LSBFIRST, dataval[a][i]); // 센서에서 계산된 a값을 통해 입모양 선택
digitalWrite(latch, HIGH); //래치를 올린다. 74HC595에서 데이터를 출력함
delay(2);
}
digitalWrite(latch, LOW);
shiftOut(data,clock,MSBFIRST, 0x00); // 매트릭스를 끄는 시간을 줌
shiftOut(data,clock,MSBFIRST, 0x00);
digitalWrite(latch, HIGH);
delay(3);
}
----------------------------------------------------------------------------------
작동영상
참조 : http://cafe.naver.com/arduinostory/6869 (카페 : 아두이노 스토리)
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
xbee 통신 + 기울기센서로 모터제어 (3) | 2012.08.29 |
---|---|
아두이노 포토인터럽터 (0) | 2012.08.24 |
도트매트릭스(dot matrix) 제어 1 (3) | 2012.06.27 |
아두이노간 xbee통신 (4) | 2012.06.27 |
xbee 통신 (0) | 2012.06.27 |