본문 바로가기
아두이노_프로세싱/아두이노

도트매트릭스(dot matrix) 제어 2

by 돌돌쌤 2012. 6. 27.

 

도트매트릭스(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