코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-11-14 17:20:14
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 | 2 | 오렌지 보드 |
2 | zigbee 모듈 | 2 | Digi international Xbee S1 |
3 | zigbee 쉴드 | 2 | |
4 | 64x16 LED matrix | 1 | 3.75mm 64x16 Dot Matrix LED Display |
5 | 초음파 센서 | 1 | HC-SR04 |
6 | 점퍼케이블 | 15 | 점퍼케이블 |
7 | 아답터 | 1 | DC 5V |
8 | 9v 건전지 | 1 |
부품명 | 아두이노 | zigbee 모듈 | zigbee 쉴드 | 64X16 LED matrix |
부품 사진 | ||||
부품명 | 초음파 센서 | 점퍼케이블 | 아답터 | 9v 건전지 |
부품 사진 |
int echoPin = 12; int trigPin = 13; //초음파 센서의 핀번호를 설정한다. void setup(){ Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // trig를 출력모드로 설정, echo를 입력모드로 설정 } void loop(){ float duration; int distance; char signal = 'A'; digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); // 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다. duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다. distance = ((float)(340 * duration) / 10000) / 2; // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다. if(distance < 100) { //인지한 거리가 100이하로 측정될 경우 signal을 zigbee통신을 통해 전송한다. Serial.print(signal); } delay(500); }
//Author: cantone-electonics //More information welcome to : http://www.canton-electronics.com //Arduino 1.0.4 //Arduino uno R3 //64x16 Matrix LED #define COL_PIXEL 64 #define ROW_PIXEL 16 int latchPin=8; //LT int clockPin=12;//SK int dataPin=11; //R1 int en_74138 = 2; int la_74138 = 3; int lb_74138 = 4; int lc_74138 = 5; int ld_74138 = 6; unsigned int ROW_xPixel; unsigned int ROW_num; unsigned char Col_num_1; unsigned char Col_num_2; unsigned char Col_num_3; unsigned char Col_num_4; unsigned char Col_num_5; unsigned char Col_num_6; unsigned char Col_num_7; unsigned char Col_num_8; char ch; //Data code: Horizontal modulus ,Bytes reverse order unsigned char Bmp1[]= { 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xfc , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x3F , 0x0c , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x30 , 0x0c , 0xfc , 0x3F , 0x0 , 0xfc , 0x3F , 0x0 , 0xfc , 0xc0 , 0x0 , 0xFF , 0xCF , 0x0 , 0x0 , 0x0 , 0x30 , 0x0c , 0x0 , 0xc0 , 0x0 , 0x0 , 0xc0 , 0x0 , 0x03 , 0xc3 , 0x0 , 0x0 , 0xcc , 0x0 , 0xc0 , 0x0F , 0x30 , 0x0c , 0x0 , 0xc0 , 0x0 , 0x0 , 0xc0 , 0x0 , 0x03 , 0xc3 , 0x0 , 0xcc , 0xfc , 0x0 , 0xc0 , 0x0F , 0x30 , 0x0c , 0xfc , 0xFF , 0x0 , 0xfc , 0xFF , 0x0 , 0x03 , 0xc3 , 0x0 , 0xcc , 0xcc , 0x0 , 0xc0 , 0x0F , 0x30 , 0x0c , 0xc0 , 0xc0 , 0x0 , 0xc0 , 0xc0 , 0x0 , 0x03 , 0xc3 , 0x03 , 0xcc , 0xcc , 0x0 , 0x3c , 0xF3 , 0x30 , 0x0c , 0xc0 , 0xc0 , 0x0 , 0xc0 , 0xc0 , 0x0 , 0x03 , 0xc3 , 0x0 , 0xFF , 0x03 , 0x0 , 0xfc , 0xFF , 0x30 , 0x0c , 0xc0 , 0x30 , 0x0 , 0xc0 , 0x30 , 0x0 , 0x03 , 0xc3 , 0x0 , 0x0c , 0xc0 , 0x0 , 0xfc , 0xFF , 0x30 , 0x0c , 0xc0 , 0x0 , 0x0 , 0xc0 , 0x0 , 0x0 , 0x03 , 0xc3 , 0x0 , 0xfc , 0xFF , 0x0 , 0x30 , 0x33 , 0x30 , 0x0c , 0xFF , 0xFF , 0x03 , 0xFF , 0xFF , 0x03 , 0xfc , 0xc0 , 0x0 , 0x0c , 0xc0 , 0x0 , 0x0 , 0x03 , 0x30 , 0x0c , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xc0 , 0x0 , 0xf0 , 0x3F , 0x0 , 0x0 , 0x0 , 0x30 , 0x0c , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x30 , 0xfc , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0x3F , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 }; void shiftOut(unsigned char dataOut) { for(int i=0;i<=7;i++) { PORTB &=~(1<<(clockPin-8));//equate digitalWrite(clockPin,LOW); if(dataOut & (0x01<<i)) PORTB |=1<<(dataPin-8); //equate digitalWrite(dataPin,HIGH); else PORTB &=~(1<<(dataPin-8));//equate digitalWrite(dataPin,LOW); PORTB |=1<<(clockPin-8);//equate digitalWrite(clockPin,HIGH); } } //Combine 2 bits/pixel to 1 bits/pixel unsigned char Combine_2BitsTo1Bit(unsigned char num,unsigned char *BMP) { unsigned char Col_num_tem_1; unsigned char Col_num_tem_2; unsigned int Col_num_tem = 0; unsigned char i=0; unsigned char Col_num_1bit = 0x00; Col_num_tem_1 = *(BMP+num); Col_num_tem_2 = *(BMP+num+1); Col_num_tem = Col_num_tem_1; Col_num_tem |= (Col_num_tem_2 << 8); for(i=0;i<8;i++) { if(Col_num_tem&(0x0003<<i*2)) Col_num_1bit |= (0x01<<i); } return ~Col_num_1bit; } //display one picture void display_martix(unsigned char *BMP) { //Display count unsigned int dis_cnt=256; unsigned int i; for(i=0;i<dis_cnt*16;i++) { digitalWrite(en_74138, HIGH);//Turn off display //Col scanning shiftOut(Col_num_1); shiftOut(Col_num_2); shiftOut(Col_num_3); shiftOut(Col_num_4); shiftOut(Col_num_5); shiftOut(Col_num_6); shiftOut(Col_num_7); shiftOut(Col_num_8); digitalWrite(latchPin, LOW); digitalWrite(latchPin, HIGH); //Row scanning // AVR Port Operation PORTD = ((ROW_xPixel << 3 ) & 0X78) | (PORTD & 0X87);//Write PIN 3 4 5 6 la_74138 lb_74138 lc_74138 ld_74138 digitalWrite(en_74138, LOW);//Turn on display if(ROW_xPixel==15) ROW_xPixel=0; else ROW_xPixel++; /* // Single color,1 bits/pixel Col_num_1=~BMP[(COL_PIXEL/8)*ROW_xPixel]; Col_num_2=~BMP[(COL_PIXEL/8)*ROW_xPixel+1]; Col_num_3=~BMP[(COL_PIXEL/8)*ROW_xPixel+2]; Col_num_4=~BMP[(COL_PIXEL/8)*ROW_xPixel+3]; Col_num_5=~BMP[(COL_PIXEL/8)*ROW_xPixel+4]; Col_num_6=~BMP[(COL_PIXEL/8)*ROW_xPixel+5]; Col_num_7=~BMP[(COL_PIXEL/8)*ROW_xPixel+6]; Col_num_8=~BMP[(COL_PIXEL/8)*ROW_xPixel+7]; */ //Single color,2 bits/pixel Col_num_1 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2,BMP); Col_num_2 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+2,BMP); Col_num_3 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+4,BMP); Col_num_4 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+6,BMP); Col_num_5 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+8,BMP); Col_num_6 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+10,BMP); Col_num_7 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+12,BMP); Col_num_8 = Combine_2BitsTo1Bit((COL_PIXEL/8)*ROW_xPixel*2+14,BMP); // delayMicroseconds(1000); } } void setup() { pinMode(latchPin,OUTPUT); pinMode(clockPin,OUTPUT); pinMode(dataPin,OUTPUT); pinMode(en_74138,OUTPUT); pinMode(la_74138,OUTPUT); pinMode(lb_74138,OUTPUT); pinMode(lc_74138,OUTPUT); pinMode(ld_74138,OUTPUT); digitalWrite(en_74138, LOW); // AVR Port Settings DDRD |= 0x78; //Set PIN 3 4 5 6 output Serial.begin(9600); } void loop() { if(Serial.available()) { //전송된 데이터가 존재하는지 확인한다. ch = Serial.read(); //전송된 데이터가 있으면 ch에 저장 if(ch == 'A') { //저장된 값이 'A'일 경우 코코아팹 메시지 출력 display_martix(Bmp1); //kocoafab } } }
수박쨈