코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-09-17 17:10:56
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | 아두이노 호환보드 |
2 | RFID 리더기(ID-12LA) | 1 | RFID |
3 | RFID USB Reader(SEN-09963) | 1 | RFID |
4 | Mp3 쉴드 | 1 | VS1053 breakout board |
5 | 9v배터리 | 1 | 배터리 |
6 | 9v 어댑터 | 1 | 9v 어댑터 |
7 | 점퍼케이블 | 3 | 점퍼케이블 |
8 | 스피커 | 1 | 스피커 |
부품명 | 오렌지 보드 | RFID 리더기 (ID-12LA) |
RFID USB Reader (SEN-09963) |
Mp3 쉴드 | 9v배터리 |
파트 | x1 | x1 | x1 | x1 | x1 |
부품명 | 9v 어댑터 | 점퍼케이블 | 스피커 |
파트 | x1 | x3 |
x1 |
/*
RFID JUKEBOX
by www.kocoafab.cc
*/
#include <SPI.h> // SPI library
#include <SdFat.h> // SDFat Library
#include <SdFatUtil.h> // SDFat Util Library
#include <SFEMP3Shield.h> // Mp3 Shield Library
SdFat sd; // SD카드를 사용하기 위한 오브젝트를 생성합니다.
SFEMP3Shield MP3player; // Mp3 라이브러리를 사용하기 위한 오브젝트를 생성합니다.
const uint8_t volume = 0; // MP3 Player volume 0=max, 255=lowest (off)
const uint16_t monoMode = 1; // Mono setting 0=off, 3=max
char tag1[13] = "6F005C9656F3"; // RFID 태그의 ID입니다.
boolean state = 0;
void setup()
{
Serial.begin(9600);
Serial.println("RFID example start !");
Serial.println('\n');
/* Set up all trigger pins as inputs, with pull-ups activated: */
initSD(); // Initialize the SD card
initMP3Player(); // Initialize the MP3 Shield
}
// All the loop does is continuously step through the trigger
// pins to see if one is pulled low. If it is, it'll stop any
// currently playing track, and start playing a new one.
void loop()
{
char tagString[13]; // tagString를 선언합니다
int index = 0 ;
boolean reading = false;
while(Serial.available()) { //시리얼 포트에 읽을 데이터가 있으면
// 태그 리더기에 태그를 가져다 대면, 읽기 시작합니다.
int readByte = Serial.read(); // 시리얼 포트에 있는 데이터를 저장합니다.
// 태그에서 읽은 정보를 출력
Serial.println("Serial.read() is ");
Serial.print("DEC : "); Serial.println(readByte, DEC );
Serial.print("HEX : "); Serial.println(readByte, HEX);
Serial.println("RFID reading..... store string");
if(readByte >= '0' && readByte <= 'F'){
Serial.print("readByte input : ");
Serial.println(readByte);
tagString[index] = readByte;
index++;
}
}
checkTag(tagString); // 저장된 태그 ID와 RFID 리더에서 읽은 태그 ID와 일치하는지 확인
clearTag(tagString); // 읽어온 태그 ID를 지움
delay(100);
}
void initSD()
{
if(!sd.begin(SD_SEL, SPI_HALF_SPEED))
sd.initErrorHalt();
if(!sd.chdir("/"))
sd.errorHalt("sd.chdir");
}
void initMP3Player()
{
uint8_t result = MP3player.begin();
if(result != 0)
{
}
MP3player.setVolume(volume, volume);
MP3player.setMonoMode(monoMode);
}
void checkTag(char tag[]){
// 저장된 태그 ID 와 RFID 리더에서 읽은 태그 ID가 일치하는지 확인 하는 함수
if (strlen(tag) == 0 ){ // 아무것도 읽지 않았을 경우
return;
}
if(compareTag(tag, tag1)){ // 저장된 태그 ID와 읽은 태그 ID를 비교합니다.
Serial.println("sucess tag");
{
{
if (state == 1){
MP3player.stopTrack();
state = 0;
}else{
uint8_t result = MP3player.playTrack(1);
if (result == 0) //만약 결과가 0일 경우 1번 트랙을 재생합니다.
{
// Success
}
else
{
}
state = 1;
}
}
}
} else { // 읽은 태그와 일치하는 저장 태그가 없을면
Serial.println("No matching Tag, New tag name is display");
Serial.println(tag); // 읽은 태그 ID 출력
}
}
void clearTag(char one[]){ // 읽은 태그 ID를 초기화
for(int i =0; i < strlen(one); i++){
one[i] = 0;
}
}
boolean compareTag(char one[], char two[]){ // 읽은 태그 ID와 저장된 태그 ID를 비교
Serial.println("in the compareTag");
if(strlen(one) == 0 ){ // 읽은 태그가 비어 있을 경우
Serial.println("empty string");
return false;
}
for (int i=0; i < 11; i++){ // 읽은 태그와 저장된 태그 ID를 한자리 씩 비교
if(one[i]!=two[i]) { // 제 태그 ID의 앞자리가 이상한 값이 들어와서 수정
Serial.println("one of the string mismatches");
return false; // 하나라도 다르면 다른 태그 ID로 정함
}
}
Serial.println("All string matches");
return true; // 전부 일치할 경우 일치하는 상태 값을 보냄
}
#include <SPI.h> // SPI library
#include <SdFat.h> // SDFat Library
#include <SdFatUtil.h> // SDFat Util Library
#include <SFEMP3Shield.h> // Mp3 Shield Library
SdFat sd; // SD카드를 사용하기 위한 오브젝트를 생성합니다.
SFEMP3Shield MP3player; // Mp3 라이브러리를 사용하기 위한 오브젝트를 생성합니다.
const uint8_t volume = 0; // MP3 Player volume 0=max, 255=lowest (off)
const uint16_t monoMode = 1; // Mono setting 0=off, 3=max
char tag1[13] = "6F005C9656F3"; // RFID 태그의 ID입니다.
boolean state = 0;
if(compareTag(tag, tag1)){ // 저장된 태그 ID와 읽은 태그 ID를 비교합니다.
Serial.println("sucess tag");
{
{
if (state == 1){
MP3player.stopTrack();
state = 0;
}else{
uint8_t result = MP3player.playTrack(1);
if (result == 0) //만약 결과가 0일 경우 1번 트랙을 재생합니다.
{
// Success
}
else
{
}
state = 1;
}
}
}
}
hihyo