@codingart๋์ led+์คํผ์ปค์ ๊ฒฐํฉํ์ฌ ์ฌ์ด๋์ LED๊ฐ ๋์ ์ถ๋ ฅํ๋ ํฌ์คํธ๋ฅผ ๋ณด๋ฉด์ ๊ฐ์์๋ฎฌ๋ ์ดํฐ์์ ๊ตฌํํด๋ณด๊ณ ์ถ์ด์ ธ์ ์ด๋ ๊ฒ ์ธ์ฉํ์ฌ ์คํ์ ํ๋ฒ ํด ๋ณด์์ต๋๋ค. ๊ทธ๋ฅ ๊ทธ๋๋ก ํํํ๊ธฐ๊ฐ ์ข ๊ทธ๋์ ์ต๊ทผ์ ๋ฐฐ์ ๋ NeoPixel๋ก ์์ฉํด ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ํ๋ฒ ์ ์ฉํด ๋ณด์์ต๋๋ค. ๋์ ๊ตฌํ์ ๋ฉ๋ก๋ ์๊ณ์ ๋ฐ๋ผ์ NeoPixel๋ก ๊ทธ๋ํฝ ์ดํ์์ด์ ๋ฐ ํํ๋ก ๋์์ ์ถ๋ ฅํ๋ ๋ก์ง์ผ๋ก ํํ ํ์ต๋๋ค. ์ฆ,
@codingart์ LED ๋ถ๋ถ์ NeoPixel๋ก ๋์ฒดํ๊ณ ์ถ๊ฐ๋ก ์๊ณ๋ฅผ ๊ทธ๋ํฝ๋ฐ๋ก ์์ฉํ๋ค์. ์ฐธ๊ณ ๋ก ์ค๋ ์คํํ ํ๋ก๋์ ์ฝ๋ฉ ๋ถ๋ถ์ ์ ์ฐธ๊ณ ์๋ฃ ์ค ์ง๊ธ๊น์ง ์ฐ์ฌํ ๋ด์ฉ์์ ํผ์์กฐ๋ถ์ ๊ณฐ์ธ๋ง๋ฆฌ ๋ฉ๋ก๋ ์ฝ๋ฉ๊ณผ ์ฌ์ด๋์ผ์ ๊ทธ๋ํฝ ์ดํ์์ง์ด ํํ์ ํฉ์ณ์ ๋ง๋ค ๊ฑฐ๋ผ์ ์์ ๋ถ๋ถ์ ๊ฑฐ์ ์์ต๋๋ค. NeoPixel์ ๋ถ๋ถ์์ ํ๊ฐ ์ง๋ฆฌ๋ฅผ ๋ฐ ํํ๋ก ์ถ๋ ฅ ์ฝ๋ฉ์ ์ฝ๊ฐ ๋ณ๊ฒฝ ํ๋ค์.
์ ๊ทธ๋ฆผ์ 12๋ฒ ํ์ ํผ์์กฐ๋ถ์ ๋ฉ๋ก๋๊ฐ ์ถ๋ ฅํ๋ ํ์ผ๋ก ์ฌ์ฉํ์ผ๋ฉฐ NeoPixel์ ๋ฐ ํํ๋ก 8๊ฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ 3๋ฒํ์ ํตํด์ ์ ์ดํ๋๋ก ์ ์ ์ฐ๊ฒฐํ๋ค์. ์ฐธ๊ณ ๋ก NeoPixel์ ์์ฒด์ inputํ๊ณผ outputํ์ ์ ํํ ํ์ธํ์๊ณ ์ ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
์ด์ ๊ธฐ๋ณธ ํ๋ก๋ ๊ตฌ์ฑ์ด ์๋ฃ ๋์์ผ๋๊น ์ฝ๋ฉ์ ํด ๋ณผ๊น์.
์์ ์ ํฌ์คํธ ํ ๊ณฐ์ธ๋ง๋ฆฌ ๋ฉ๋ก๋๋ฅผ ๊ธฐ์ตํ์ค ์ง ๋ชจ๋ฅด๊ฒ ๋ค์. ๊ธฐ์ต์ด ์๋๊ฑฐ๋ ์ฒ์ ์ ํ์๋ ๋ถ๋ค์ ์ ๋งํฌ๋ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์๊ณ ๋ฐ๋ก ์ธ๋ถ์ ์ผ๋ก ๋ฐ๋ณต ์ค๋ช ์ ํ์ง ์๊ฒ ์ต๋๋ค. ์ด๋ฏธ ๋ค ์ค๋ช ํ ๋ด์ฉ์ด๋๊น์. ๊ทธ๋ฌ๋ฉด ๊ณฐ์ธ๋ง๋ฆฌ ๋ฉ๋ก๋๋ฅผ ๊ธฐ๋ณธ ๋ฒ ์ด์ค๋ก ์ถ๋ฐ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
[ ๊ธฐ๋ณธ ์์ค ]
#define NOTE_C5 523 //๋
#define NOTE_D5 587 //๋
#define NOTE_E5 659 //๋ฏธ
#define NOTE_F5 698 //ํ
#define NOTE_G5 784 //์
#define NOTE_A5 880 //๋ผ
#define NOTE_B5 988 //์
#define NOTE_C6 1047 //๋
int tonepin = 12;
int melody[] = {
NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C5,
NOTE_E5,NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_E5,
NOTE_C5,NOTE_C5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,NOTE_A5,NOTE_G5,
NOTE_C6,NOTE_G5,NOTE_C6,NOTE_G5,
NOTE_E5,NOTE_D5,NOTE_C5
};
int noteDurations[]={
4,8,8,4,4,
4,8,8,4,4,
8,8,4,8,8,4,
4,4,2,
4,4,4,4,
4,4,2,
4,4,4,4,
4,4,2,
4,4,4,4,
8,8,8,8,2,
4,4,4,4,
4,4,2
};
void setup() {
}
void loop() {
for (int i = 0; i < 49; i++) {
int Durations = 1000/noteDurations[i]; // ์๊ณ์ ์๊ธธ์ด ๊ณ์ฐ
tone(tonepin, melody[i], Durations);
int pauseBetweenNotes = Durations *1.3 ;
delay(pauseBetweenNotes);
noTone(tonepin);
}
}
์ ์์ค์์ NeoPixel์ ์ฝ๋ฉ๋ง ์ฝ์ ํ์๋ฉด ๋ฉ๋๋ค.
์ ๋งํฌ๋ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค. ๋งํฌ ํฌ์คํธ์์๋ "๊ฐ๋ณ์ ํญ๊ธฐ์ NeoPixel"์ด๋ผ๋ ์์ ๋ชฉ์ ๊ฐ์์๋ฎฌ๋ ์ดํฐ ์คํ์ด ์์ต๋๋ค. ๊ฐ๋ณ์ ํญ๊ธฐ ๊ฐ์ ๋ฐ๋ผ ํ๊ฐ์ NeoPixel์ Color๋ฅผ ๋ง๋ค์ด ๋๋ ์คํ์ด์๋๋ฐ ์ค๋์ ์ด ์๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ NeoPixel์ ๋ฐ ํํ๋ก ๋ฐ๊พธ์ ์๊ณ๋ฅผ LED ๊ธธ์ด ํํ๋ก ์ถ๋ ฅํ๊ธฐ ์ํด์ ์ฐ์ ์ฌ์ฉ๋ ๋ถ๋ถ์ ๊ฐ์ ธ์ค๋๋ก ํ๊ฒ ์ต๋๋ค.
[ ๊ธฐ๋ณธ ์์ค ]
#include
const byte neopixelPin = 3;
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel(1, neopixelPin, NEO_GRB + NEO_KHZ800);
void setup()
{
neopixel.begin();
randomSeed(analogRead(A1));
}
void loop()
{
int SoundSenser=0;
int SoundColor=0;
SoundSenser = analogRead(A0);
if(SoundSenser<26) SoundSenser=26;
if(SoundSenser>300) SoundSenser=300;
SoundColor= map(SoundSenser,26,300,0,255);
neopixel.setPixelColor(0, random(SoundColor), random(SoundColor), random(SoundColor));
neopixel.show();
delay(50);
neopixel.clear();
}
์ ์์ค์์ ํ์ํ ๋ถ๋ถ๋ง ๋นผ๋ด๋๋ก ํ์ฃ .
#include
const byte neopixelPin = 3;
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel(8, neopixelPin, NEO_GRB + NEO_KHZ800);
void setup()
{
neopixel.begin();
randomSeed(analogRead(A1));
}
NeoPixel๋ฅผ ์์ํ๊ฒ ๋ค๊ณ ์ ์ธํด์ฃผ๊ณ NeoPixel์ ์นผ๋ฌ๋ฅผ ๋๋คํจ์๋ฅผ ์ด์ฉ ํ ์์ ์ด๋ผ์ ๋๋คํจ์ ์ด๊ธฐํ ํจ์๋ฅผ ์ ์ธํ๋ค์. ์ด ๋ ์ค์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
neopixel.setPixelColor(๋ค์คํฝ์
์์น, random(255), random(255), random(255));
neopixel.show();
neopixel.clear();
์ด ์ธ๊ฐ์ง ํจ์๋ง ๊ฐ์ ธ๋ค ์ธ ์์ ์ ๋๋ค. ์ด ์ธ ํจ์๋ก ๊ทธ๋ํฝ๋ฐ ์ถ๋ ฅ์ด ์ด๋ค์ง๊ฒ ์ฃ .
์ด๋ถ๋ถ์ด ํต์ฌ ์ฝ๋ฉ ๋ถ๋ถ์ ๋๋ค. ์๊ณ๋ฅผ ์ด๋ป๊ฒ NeoPixel Bar๋ก ์ถ๋ ฅ์ ํ ๊น์. ์ค๋ ์คํ์์๋ ์๊ณ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ์ด๋ฅผ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
const int scaleval[8] = {NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_B5,1047};
scalval[8] ๋ฐฐ์ด๋ณ์์ 5์ฅํ๋ธ์ ์๊ณ "๋๋ ๋ฏธํ์๋ผ์๋"๋ฅผ ์ ์ฅํ์ต๋๋ค.
์ด๋ป๊ฒ NeoPixel์ ๊ธธ์ด๋ก ์ถ๋ ฅ์ ํ ๊น์. ์ฌ๊ธฐ์, ์์๋ ฅ์ด ๋ง์ด ๋งํ์ค ๊บผ์์. ๋ง์ดํฌ์ฌ์ด๋๊ฐ์ง์ผ์์์ ๊ธฐ์ตํ์ค ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋ ฅ์๋ฆฌ๋ฅผ ์์ญ์ผ๋ก ๋๋ ์ ๊ตฌ๋ถ ํ ์ ์๋ค๊ณ ํ์ต๋๋ค. ์์ ์์ญ์ผ๋ก ๋๋๋ฉด ๋๋ ์์ญ์ด ํ๋์ NeoPixel์ ์์ญ์ผ๋ก ๊ฐ์ฃผ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ํด๋น ์๊ณ์ ์์ญ์ ๋งค์นญ๋๋ NeoPixel์ ์์น์ ๋ถ์ด ๋ค์ด์ค๊ฒ ํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ๋๊ฒ ์ฃ . ๊ทธ๋์, ์๊ณ๋ฅผ scaleval[8] ๋ฐฐ์ด๋ณ์๋ก ๋ง๋ค์์ง์.
๊ณฐ๊ณฐํ ์๊ณ๋ฐฐ์ด๋ณ์์ ์ดํด๋ณด์ธ์. '๋'์ 0๋ฒ์งธ ๋ฐฐ์ด์ ๋ค์ด ์๊ณ , '๋ '๋ 1๋ฒ์งธ ๋ฐฐ์ด์ ๋ค์ด ์์ต๋๋ค. ๊ฐ ์๊ณ์ ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ๋ค์ด ์๋๋ฐ 8๊ฐNeoPixel๋ฅผ ์ด ๋ฐฐ์ด์ ๋งค์นญ ์ํค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์.
์ฌ๊ธฐ์, '๋'์ NeoPixel 0๋ฒ์งธ์๋ง ๋ถ์ด ๋ค์ด์ค๊ณ '๋ฏธ'์ NeoPixel 2๋ฒ์งธ๊น์ง ๋ถ์ด ๋ค์ด์ค๊ฒ ๋ง๋ค์ด ์ฝ๋ฉํ๋ฉด ์๊ณ๊ฐ NeoPixel์ ๊ทธ๋ํฝ ๊ธธ์ด๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํด ์ง๋๋ค.
์ถ๋ ฅ ์ฝ๋ฉ์ ์ด๋ป๊ฒ ํ ๊น์. ๊ธฐ์ด ์ฝ๋ฉ์์ ๋ฐฐ์ด๋ณ์๋ฅผ ๋ฐฐ์ ์ต๋๋ค. ๋ฐฐ์ด๋ณ์๊ฐ ๋์ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก for๋ฌธ์ ๋ ์ฌ๋ฆฌ์๋ผ๊ณ ํ์ฃ . for๋ฌธ์ ํ์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ์ด ๋ฉ๋๋ค.
์ฝ๋ฉ์, ์๋์ ๊ฐ์ต๋๋ค.
for(int i=0;i<8;i++){
if(scaleval[i]<=soundval){
neopixel.setPixelColor(i, random(255), random(255), random(255));
neopixel.show();
}
else break;
}
์ด ์ฝ๋ฉ์ ์ด๋ป๊ฒ ๋์๋์ง ์์ฐจ์ ์ผ๋ก ์ฝ๋ฉํ๋ ๊ณผ์ ์ ๋ณผ๊น์.
for(int i=0;i<8;i++){
neopixel.setPixelColor(i, random(255), random(255), random(255));
neopixel.show();
delay(50);
}
neopixel.clear();
1์ด(1000)์ธ delay ์๊ฐ๊ฐ 50์ ๊ธฐ์ค์ผ๋ก setPixelColor()ํจ์๋ก ์์ฐจ์ ์ผ๋ก NeoPixel์ ์์ด ์ธํ ๋๊ณ show()ํจ์๋ก NeoPixel๋ก ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
๊ธฐ์ด ์ฝ๋ฉ์์ ๋ฐฐ์ด if๋ฌธ์ผ๋ก ์กฐ๊ฑด๋ฌธ์ ๋ง๋ค๋ฉด ๋ฉ๋๋ค.
const int scaleval[8] = {NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_B5,1047};
for(int i=0;i<8;i++){
if(scaleval[i]<=์
๋ ฅ์๊ณ){
neopixel.setPixelColor(i, random(255), random(255), random(255));
neopixel.show();
}
else break;
}
neopixel.clear();
if๋ฌธ์ผ๋ก 8๊ฐ์ ์๊ณ๋ฅผ for๋ฌธ์ผ๋ก ๋น๊ตํ๊ฒ ๋ฉ๋๋ค. ์ ๋ ฅํ ์๊ณ๋ ๋น๊ตํด์ "์๊ฑฐ๋ ๊ฐ๋ค"๋ฉด ํด๋น i๋ฒ์งธ์ NeoPixel์ Color๊ฐ ๋ง๋ค์ด ์ง๋๋ก ์กฐ๊ฑด๋ฌธ์ ๋ค์๋ฉด ๋ฉ๋๋ค. ์ฆ, ์ ๋ ฅํ ์๊ณ๊น์ง๋ง NeoPixel์ ๋ถ์ด ๋ค์ด์ค๊ฒ ํ๋ ๊ฒ์ด์ฃ .
์ฌ๊ธฐ์, else ๋ฌธ์์ break ๋ช ๋ น์ ๋ถ์๋๋ฐ ์ด๊ฑด ๋์ด์ ์ํํ์ง ๋ง๊ณ for๋ฌธ์ ๋น ์ ธ ๋์ค๋ผ๋ ๋ฌธ์ฅ์ ๋๋ค. Switch(์ ํ์ ์ด๋ฌธ)์์ ๋ฐฐ์ฐ์ จ์ฃ . ๋ฐ๋ณต ์ํ์ ๋ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ for๋ฌธ์ ๋น ์ ธ๋์ค๋๊ฒ ๋ ํจ์จ์ ์ธ ์ฝ๋ฉ์ด๊ฒ ์ฃ . ์ฐธ๊ณ ๋ก ์๋ต์ ๊ฐ๋ฅํฉ๋๋ค. ์ด์งํผ if๋ฌธ์ ์ ๋ ฅ ์๊ณ๊น์ง๋ง ์ธํ ์ด ์ด๋ค์ง๊ณ ๋๋จธ์ง ์๊ณ i๋ฒ์งธ๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๊ธฐ ๋๋ฌธ์ if๋ฌธ ์์ ๋ฌธ์ฅ์ ์ํํ์ง ์์ต๋๋ค. 8๋ฒ ๋ฐ๋ณต์ด๋๊น else ์ดํ ์ฝ๋ฉ์ ์๋ตํ์ ๋ ๋ณ๋ก ์ง์ฅ์ ์๋ค์.
์ด์ ์ ๋ ฅ์๊ณ๊น์ง NeoPixel Bar ์ถ๋ ฅ์ ํ ์ ์๊ฒ ์ฃ .
loop ํจ์์๋ค๊ฐ ๊ทธ๋๋ก ์ฝ๋ฉํ๋ฉด loop ํจ์์ ๊ฐ๋ ์ฑ์ ๋จ์ด์ง๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ NeoPixel Bar ์ถ๋ ฅ์ ์ฌ์ฉ์ ์ ์ ํจ์๋ก ๋นผ๋ฉด loop()ํจ์ ๋ด๋ถ๊ฐ ์ข ๊นจ๋ํด์ง๊ฒ ์ฃ .
void nepixelbar(int soundval){
for(int i=0;i<8;i++){
if(scaleval[i]<=soundval){
neopixel.setPixelColor(i, random(255), random(255), random(255));
neopixel.show();
}
else break;
}
}
์ด๋ ๊ฒ ํด์ soundval ๊ฐ์ด ์ ๋ ฅ๋๋ฉด ๊ทธ ์ ๋ ฅ๋ ๊ฐ์ ๋ฐ๋ผ์ NeoPixel Bar๊ฐ ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ํํ์ ๋๊ฐ์ง๊ฐ ์์ต๋๋ค. neopixel.show() ๋ช ๋ น๋ฌธ์ for๋ฌธ ์์๋ค ํํํด๋ ๋๊ณ for๋ฌธ ๋ฐ์๋ค ํํํด๋ ๋ฉ๋๋ค. ์ฝ๊ฐ ์ฐจ์ด๊ฐ ์์ ๋ฟ ์ํ๋ ์คํ์ผ๋ก ์ฝ๋ฉ ํ์๋ฉด ๋ฉ๋๋ค.
void loop() {
for (int i = 0; i < 49; i++) {
int Durations = 1000/noteDurations[i]; // ์๊ณ์ ์๊ธธ์ด ๊ณ์ฐ
tone(tonepin, melody[i], Durations);
int pauseBetweenNotes = Durations *1.3 ;
delay(pauseBetweenNotes);
noTone(tonepin);
}
}
์๊ณ๋ melody[i]๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด for๋ฌธ์์ ์๋ฆฌ๊ฐ ๋๊ธฐ ์ง์ ์์๋ค๊ฐ ์ง์ ๋ง๋ nepixelbar()ํจ์๋ฅผ ์ฝ์ ํ๋ฉด NeoPixel์ ๋ถ์ด ๋ค์ด์ค๋ ๋์์ ์์ ์๋ฆฌ๊ฐ ๋๊ฒ ์ฃ .
int Durations = 1000/noteDurations[i];
nepixelbar(melody[i]); //์ฝ์
์์น
tone(tonepin, melody[i], Durations);
์ฌ๊ธฐ์, ํ ์๊ณ์ NeoPixel๋ก ์ถ๋ ฅ ํ์๋ ์ถ๋ ฅ ์๊ฐ์ ๊ณฐ์ธ๋ง๋ฆฌ ๋ฉ๋ก๋์ ํ์์ด ๋ ๋ ๋๊น์ง ์ ์งํ๊ณ ์ด๊ธฐํ ํด์ผ ๋ค์ ์๊ณ์ NeoPixel๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํด ์ง๋๋ค. ์ด๊ธฐํ neopixel.clear() ํจ์๋ฅผ ์๋ฆฌ๊ฐ ๋๋๋ ๋ง์ง๋ง์ ์ฝ์ ํด์ผ ๊ฒ ์ง์.
noTone(tonepin);
neopixel.clear(); //์ฝ์
์์น
#include
#define NOTE_C5 523 //๋
#define NOTE_D5 587 //๋
#define NOTE_E5 659 //๋ฏธ
#define NOTE_F5 698 //ํ
#define NOTE_G5 784 //์
#define NOTE_A5 880 //๋ผ
#define NOTE_B5 988 //์
#define NOTE_C6 1047 //๋
const byte neopixelPin = 3;
Adafruit_NeoPixel neopixel = Adafruit_NeoPixel(8, neopixelPin, NEO_GRB + NEO_KHZ800);
const int tonepin = 12;
const int scaleval[8] = {NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_A5,NOTE_B5,1047};
//๋ฉ๋ก๋
const int melody[] = {
NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C5,NOTE_C5,
NOTE_E5,NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_E5,
NOTE_C5,NOTE_C5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,
NOTE_G5,NOTE_G5,NOTE_E5,NOTE_C5,
NOTE_G5,NOTE_G5,NOTE_G5,NOTE_A5,NOTE_G5,
NOTE_C6,NOTE_G5,NOTE_C6,NOTE_G5,
NOTE_E5,NOTE_D5,NOTE_C5
};
//์๊ธธ์ด
const int noteDurations[]={
4,8,8,4,4,
4,8,8,4,4,
8,8,4,8,8,4,
4,4,2,
4,4,4,4,
4,4,2,
4,4,4,4,
4,4,2,
4,4,4,4,
8,8,8,8,2,
4,4,4,4,
4,4,2
};
void setup() {
neopixel.begin();
randomSeed(analogRead(A1));
}
void loop() {
//์ฐ์ฃผ
for (int i = 0; i < 49; i++) {
int Durations = 1000/noteDurations[i]; // ์๊ณ์ ์๊ธธ์ด ๊ณ์ฐ
nepixelbar(melody[i]);
tone(tonepin, melody[i], Durations);
int pauseBetweenNotes = Durations *1.3 ;
delay(pauseBetweenNotes);
noTone(tonepin);
neopixel.clear();
}
}
void nepixelbar(int soundval){
for(int i=0;i<8;i++){
if(scaleval[i]<=soundval){
neopixel.setPixelColor(i, random(255), random(255), random(255));
eopixel.show();
}
else break;
}
}
[์ถ๋ ฅ ์ด๋ฏธ์ง ์ท]
@codingart์ ์ํ์ ๊ฐ์์๋ฎฌ๋ ์ดํฐ๋ก ์์ฉํด์ ํํ์ ํ๋ค์. ๊ธฐ์ด ์ฝ๋ฉ ๋ฌธ๋ฒ์ ์๊ฐ ํ ๋ค์ ์์์ด ์์ ๋๋จธ์ง ์ค๋ ํฌ์คํ
๋ด์ฉ์ด ์ฝ๋ฉ์ ๋๋ฌด ์น์ฐ์ณ์ ์ ๊ฐํ ๋ฏ ์ถ๋ค์. ์ฌ์ฉ ๋ ๊ธฐ์ด ์ฝ๋ฉ ๋ฌธ๋ฒ์ ๋ฐฐ์ด๋ณ์, IF๋ฌธ, FOR๋ฌธ ์
๋๋ค. ์ค์ํ ๊ฒ์NeoPixel์ ๋ถ์ด ์ด๋ป๊ฒ ๋ค์ด์ค๋์ง์ ๋ํ ์๋ฆฌ๋ฅผ ์ดํดํ์๋ฉด ์์๋ ฅ์ ๋ํ๋ฉด NeoPixel์ ๋ถ์ด ๋ค์ด์ค๊ฒ ํ๋ ๋ฐฉ์์ ๋ค์ํ๊ฒ ํํ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ํ๋์ ์๋ฆฌ ๋ฐฐ์ฐ๋ฉด ํํ์ "์ด๊ฑธ๋ก ๋ญ ํ์ง! ๋ญ ํํํ ์ ์์ง! ์ด๊ฒ์ ์จ๋จน์ ์ ์๋ ๊ณณ์ ์ด๋ ์์๊น!"๋ผ๊ณ ๊ณ์ ์์ ์๊ฒ ์ง๋ฌธ์ ๋์ ธ์ฃผ์ธ์. ์ด๋ฐ ํธ๋์ด๋ฉ ํ์ต์ ๊ณ์ ํ์๊ฒ ๋๋ฉด ์ฒ์์๋ ์ข ํ๋ค์ง๋ง ๋์ค์ ๋ค์ํ ํํ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ ๋ ์ฒ์์ C์ธ์ด ๊ธฐ์ด ๋ฌธ๋ฒ์ ๊ณต๋ถํ ๋ ํ์ต ๋ฐฉ๋ฒ์ ๋๋ค. ์ฝ๋ฉ์ ๊ฐ์ ํํ๋ ๋ค์ํ๊ฒ ํํ์ด ๊ฐ๋ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
c=a+b;
printf("%d",c);
์ด๋ฐ ํํ์ด ์๋ค๋ฉด
printf("%d",a+b);
์ด๋ ๊ฒ ์ง์ ์ ์ผ๋ก ํํ ํ ์ ์๊ณ
c=a+b;
printf("%d + %d = %d",a,b,c);
์ด๋ ๊ฒ ํํํ ์ ์์ต๋๋ค. ๋ค ๊ฐ์ ๋ง์
์ ์๋ฆฌ๋ฅผ ์ด์ฉํ์ง๋ง ํํํ๋ ๊ฒ์ ์ฝ๋ฉํ์๋ ์ฌ๋ฌ๋ถ์ ์์๋ ฅ์ ๋ฌ๋ ค ์์ต๋๋ค.
๋น์ ๊ฐ ์ ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด๋ ๊ฒ ์ ํด์ง ์ฝ๋ฉ๊ณผ ํํ์ ์์ต๋๋ค.
์ ๋ C์ธ์ด๋ฅผ ์ ๋ฌธํ ๋ ํ๋์ ์๋ฆฌ๋ฅผ ๋ฐฐ์ฐ๋ฉด ๊ทธ ํํ์ ๋ค์ํ ํํ๋ก 5๊ฐ์ง ์ด์์ผ๋ก ํํํ๋ ํ์ต์ ํ์์ต๋๋ค. ์ฒ์์๋ ์ฝ๊ฐ ํ๋ค์ง๋ง ์ด๋ ๊ฒ ์ฝ๋ฉํ๋ค ๋ณด๋ฉด ์ด๋์๊ฐ์ ์๋ก์ด ์ฝ๋ฉ ์๋ฆฌ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ฐฐ์ฐ๊ฒ ๋๋ฉด ์ด ์๋ฆฌ์ ๋ํด์ ๋ค์ํ๊ฒ ์ ๊ทผํ๊ณ ํํํ๋ ์์์ด ์์ฐ์ค๋ฝ๊ฒ ๋์ด ์ง๋๊ตฐ์.
์ฌ๋ฌ๋ถ๋ค๋ ์ค๋ ํฌ์คํ ํ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ณด์์ง ๋ง์๊ณ ํ๋ฒ ์ฌ๊ธฐ์ ๋ ์ถ๊ฐํ๊ณ ์ฝ๋ฉ์ ๋ณ๊ฒฝํด๋ณด๊ณ ์๋ก์ด ํํ์ด ์์์ง ์์๋ ฅ์ ๋ฐํ ํด๋ณด์ จ์ผ๋ฉด ํฉ๋๋ค.