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 |