본문 바로가기

Embedded/Arduino

LilyPad - Beep

Beep Code

#define PIEZO_PIN 11

#define NOTE_C4  262
#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247
#define NOTE_C4  262

int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

void setup() {
  for (int thisNote = 0; thisNote < 8; thisNote++) {
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(PIEZO_PIN, melody[thisNote], noteDuration);

    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(PIEZO_PIN);
  }
}

void loop() {
  // no need to repeat the melody.
}

 

음계에 따라 LED깜빡이기 - 1회 반복(setup에서 1회 실행)

#define PIEZO_PIN 11

#define NOTE_C4  262
#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247

int ledArr[] = {10,9,3,2};
int ledSize = sizeof(ledArr)/sizeof(int);


// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};


void setup() {
  for(int i=0; i<ledSize; i++)
    pinMode(ledArr[i], OUTPUT);
  
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(PIEZO_PIN, melody[thisNote], noteDuration);
    ledON(melody[thisNote]);

    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(PIEZO_PIN);
    ledOFF();
  }
}


void loop() {
  // no need to repeat the melody.
}

void ledON(int piezo_melody)
{

  if(piezo_melody == NOTE_C4)
   digitalWrite(ledArr[0],HIGH);
  if(piezo_melody == NOTE_G3)
   digitalWrite(ledArr[1],HIGH);
  if(piezo_melody == NOTE_A3)
   digitalWrite(ledArr[2],HIGH);
  if(piezo_melody == NOTE_B3)
   digitalWrite(ledArr[3],HIGH);
	  
}

void ledOFF()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], LOW);
  }
}

 

 

음계에 따라 LED깜빡이기 - 연속 (loop에서 반복문 실행)

#define PIEZO_PIN 11

#define NOTE_C4  262
#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247

int ledArr[] = {10,9,3,2};
int ledSize = sizeof(ledArr)/sizeof(int);


// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};


void setup() {
  for(int i=0; i<ledSize; i++)
    pinMode(ledArr[i], OUTPUT);
}


void loop() {
  for (int thisNote = 0; thisNote < 8; thisNote++) {
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(PIEZO_PIN, melody[thisNote], noteDuration);
    ledON(melody[thisNote]);

    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(PIEZO_PIN);
    ledOFF();
  }
  delay(2000); // 2초간 휴식
}

void ledON(int piezo_melody)
{
  if(piezo_melody == NOTE_C4)
   digitalWrite(ledArr[0],HIGH);
  if(piezo_melody == NOTE_G3)
   digitalWrite(ledArr[1],HIGH);
  if(piezo_melody == NOTE_A3)
   digitalWrite(ledArr[2],HIGH);
  if(piezo_melody == NOTE_B3)
   digitalWrite(ledArr[3],HIGH);
}

void ledOFF()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], LOW);
  }
}

 

학교종이 땡땡땡 - 1회 반복

#define NOTE_C4  262
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_G4  392
#define NOTE_A4  440

#define PIEZO_PIN 11

int ledArr[] = {10,9,3,2};
int ledSize = sizeof(ledArr)/sizeof(int);


int melody[] = {
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, 
NOTE_G4, NOTE_G4, NOTE_E4,   
NOTE_G4, NOTE_G4, NOTE_E4, NOTE_E4,
NOTE_D4, 0,
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,
NOTE_G4, NOTE_G4, NOTE_E4,
NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4,
NOTE_C4,0};

int noteDurations[] = {
1,1,1,1,
1,1,2,
1,1,1,1,
3,1,
1,1,1,1,
1,1,2,
1,1,1,1,
3,1};
void setup() {
  for(int i=0; i<ledSize; i++)
    pinMode(ledArr[i], OUTPUT);
  
  for (int thisNote = 0; thisNote < 26; thisNote++) {
    int noteDuration = 250 * noteDurations[thisNote];
    tone(PIEZO_PIN, melody[thisNote],noteDuration);
    ledON(melody[thisNote]);
      
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(PIEZO_PIN);
    ledOFF();
  }
}
void loop() {}


void ledON(int piezo_melody)
{

  if((piezo_melody == NOTE_C4) || (piezo_melody == NOTE_D4))
   digitalWrite(ledArr[0],HIGH);
  if(piezo_melody == NOTE_E4)
   digitalWrite(ledArr[1],HIGH);
  if(piezo_melody == NOTE_G4)
   digitalWrite(ledArr[2],HIGH);
  if(piezo_melody == NOTE_A4)
   digitalWrite(ledArr[3],HIGH);
	  
}

void ledOFF()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], LOW);
  }
}

 

 

최종 - 밝기가 어두워지면 센서가 동작하여 소리+LED 동작

#define NOTE_C4  262
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_G4  392
#define NOTE_A4  440

#define PIEZO_PIN 11
#define INPUT_PIN A5

int ledArr[] = {10,9,3,2};
int ledSize = sizeof(ledArr)/sizeof(int);
int brightnessValue = 100; // 밝기값 조정하기


int melody[] = {
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, 
NOTE_G4, NOTE_G4, NOTE_E4,   
NOTE_G4, NOTE_G4, NOTE_E4, NOTE_E4,
NOTE_D4, 0,
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4,
NOTE_G4, NOTE_G4, NOTE_E4,
NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4,
NOTE_C4,0};

int noteDurations[] = {
1,1,1,1,
1,1,2,
1,1,1,1,
3,1,
1,1,1,1,
1,1,2,
1,1,1,1,
3,1};
void setup() {
  for(int i=0; i<ledSize; i++)
    pinMode(ledArr[i], OUTPUT);
  
  pinMode(A5, INPUT);
  
}
void loop() 
{
  int inputValue = analogRead(INPUT_PIN);
  
  if( inputValue < brightnessValue ){
    for (int thisNote = 0; thisNote < 26; thisNote++) {
      int noteDuration = 250 * noteDurations[thisNote];
      tone(PIEZO_PIN, melody[thisNote],noteDuration);
      ledON(melody[thisNote]);

      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      noTone(PIEZO_PIN);
      ledOFF();
    }
  }
}


void ledON(int piezo_melody)
{

  if((piezo_melody == NOTE_C4) || (piezo_melody == NOTE_D4))
   digitalWrite(ledArr[0],HIGH);
  if(piezo_melody == NOTE_E4)
   digitalWrite(ledArr[1],HIGH);
  if(piezo_melody == NOTE_G4)
   digitalWrite(ledArr[2],HIGH);
  if(piezo_melody == NOTE_A4)
   digitalWrite(ledArr[3],HIGH);
	  
}

void ledOFF()
{
  for(int i=0; i<ledSize; i++){
    digitalWrite(ledArr[i], LOW);
  }
}

'Embedded > Arduino' 카테고리의 다른 글

Arduino - Button Example  (0) 2021.07.06
LilyPad - Photo Sensor  (0) 2021.06.11
LilyPad - TestCode  (0) 2021.06.11
link  (0) 2021.06.11
여러개 LED 배열 사용하여 제어하기  (0) 2021.06.10