본문 바로가기

Embedded/Arduino

Arduino v220718

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); 
}

DHT11_library.zip
0.00MB

#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