PIEZO 스피커 소리조절(가변저항 사용)
아기상어+LED
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define PIEZO_PIN 7
int ledArr[] = {13,12,11,10,9,8};
int ledSize = sizeof(ledArr)/sizeof(int);
//notes in the melody:
int melody[] = {
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
0,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
0,
NOTE_A4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4,
NOTE_C4, NOTE_D4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_E4,
};
// note durations: 4 = quarter note, 8 = eighth note, etc
int noteDurations[] = {
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
2,
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
2,
2, 2, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4,
4, 4, 4, 4, 4, 8, 4, 8, 4, 4, 4, 2,
};
void setup(){
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
for (int thisNote = 0; thisNote < sizeof(melody) / sizeof(melody[0]); 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(){}
void ledON(int piezo_melody)
{
if((piezo_melody == NOTE_E4) || (piezo_melody == NOTE_G4))
digitalWrite(ledArr[0],HIGH);
if(piezo_melody == NOTE_C4)
digitalWrite(ledArr[2],HIGH);
if((piezo_melody == NOTE_A4) || piezo_melody == NOTE_D4)
digitalWrite(ledArr[4],HIGH);
if(piezo_melody == NOTE_F4){
digitalWrite(ledArr[1],HIGH);
digitalWrite(ledArr[3],HIGH);
digitalWrite(ledArr[5],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 7
int ledArr[] = {13,12,11,10,9,8};
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)
digitalWrite(ledArr[1],HIGH);
if(piezo_melody == NOTE_D4)
digitalWrite(ledArr[2],HIGH);
if(piezo_melody == NOTE_E4)
digitalWrite(ledArr[3],HIGH);
if(piezo_melody == NOTE_G4){
digitalWrite(ledArr[0],HIGH);
digitalWrite(ledArr[5],HIGH);
}
if(piezo_melody == NOTE_A4)
digitalWrite(ledArr[4],HIGH);
}
void ledOFF()
{
for(int i=0; i<ledSize; i++){
digitalWrite(ledArr[i], LOW);
}
}
센서 밝기값에 따라 LED 켜짐 숫자 변경
int ledArr[] = {13,12,11,10,9,8};
int ledSize = sizeof(ledArr)/sizeof(ledArr[0]);
void setup()
{
pinMode(A1, INPUT);
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A1);
//map(value, fromLow, fromHigh, toLow, toHigh)
int chk = map(photoValue, 0,1023, 0,7);
Serial.print(photoValue);
Serial.print(" : ");
Serial.println(chk);
for(int i=0; i<ledSize; i++){
if(i < chk)
digitalWrite(ledArr[i], HIGH);
else
digitalWrite(ledArr[i],LOW);
}
}
센서값에 따라 LED 켜짐/꺼짐
#define THR 350 //여기 숫자 수정
int ledArr[] = {13,12,11,10,9,8};
int ledSize = sizeof(ledArr)/sizeof(int);
void setup()
{
pinMode(A1, INPUT);
for(int i=0; i<ledSize; i++)
pinMode(ledArr[i], OUTPUT);
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A1);
Serial.println(photoValue);
if(photoValue < THR){
for(int i=0; i<ledSize; i++)
digitalWrite(ledArr[i], HIGH);
}
else{
for(int i=0; i<ledSize; i++)
digitalWrite(ledArr[i],LOW);
}
}
피에조 스피커 + 포토레지스터 추가
포토레지스터 사용하여 센서 밝기값 시리얼 모니터링
void setup()
{
pinMode(A1, INPUT);
Serial.begin(9600);
}
void loop()
{
int photoValue = analogRead(A1);
Serial.println(photoValue);
}
LED 6개 추가하기
#include <DHT11.h>
int pin=A0;
DHT11 dht11(pin);
int ledArr[] = {13,12,11,10,9,8};
int ledSize= sizeof(ledArr)/sizeof(ledArr[0]);
void setup()
{
Serial.begin(9600);
for(int i=0; i<ledSize; i++){
pinMode(ledArr[i],OUTPUT);
}
pinMode(pin,INPUT);
}
void loop()
{
int err, barSize=0;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("온도:");
Serial.print(temp);
if(temp < 26.0f)
barSize=1;
else if(temp < 28.0f)
barSize=2;
else if(temp < 29.0f)
barSize=3;
else if(temp < 30.0f)
barSize=4;
else if(temp < 32.0f)
barSize=5;
else
barSize=6;
for(int i=0; i<ledSize; i++){
if(i<barSize){
digitalWrite(ledArr[i],HIGH);
}
else{
digitalWrite(ledArr[i],LOW);
}
}
Serial.print("C 습도:");
Serial.print(humi);
Serial.println("%");
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000);
}
#include <DHT11.h>
#define RED_LED 3
#define BLUE_LED 6
#define GREEN_LED 5
int pin=A0;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
pinMode(RED_LED,OUTPUT);
pinMode(BLUE_LED,OUTPUT);
pinMode(GREEN_LED,OUTPUT);
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("온도:");
Serial.print(temp);
if(temp < 28.0f){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,HIGH);
}
else if(temp < 30.0f){
digitalWrite(RED_LED,LOW);
digitalWrite(GREEN_LED,HIGH);
digitalWrite(BLUE_LED,LOW);
}
else {
digitalWrite(RED_LED,HIGH);
digitalWrite(GREEN_LED,LOW);
digitalWrite(BLUE_LED,LOW);
}
Serial.print("C 습도:");
Serial.print(humi);
Serial.println("%");
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000);
}
다운로드 파일을 압축해제하고 해제된 폴더를 다음의 경로에 복사
C:\Program Files (x86)\Arduino\libraries
온도 습도 모니터링(시리얼 통신)
#include <DHT11.h>
int pin=A0;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
}
void loop()
{
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
Serial.print("온도:");
Serial.print(temp);
Serial.print("C 습도:");
Serial.print(humi);
Serial.println("%");
}
else
{
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000);
}
'Embedded > Arduino' 카테고리의 다른 글
lilyPad_v220721 (0) | 2022.07.21 |
---|---|
lilyPad_v220719 (0) | 2022.07.19 |
arduino v220714 (0) | 2022.07.14 |
lilypad_v220713 (0) | 2022.07.13 |
Arduino v220712 (0) | 2022.07.12 |