학교/스타트업모바일앱

유수봉 교수의 APP-08

공부 기록장 2023. 11. 2. 16:57

https://blog.naver.com/newbongman/223253485925

 

... 교수의 APP-08 : Speaker

... 교수의 APP-08 : Speaker 스피커(피에조부저)는 전기적 신호를 소리로 바꾸어 줍니다. 그림과 같이...

blog.naver.com

스피커를 통해 소리를 나게 함

 

#define C 262 // 도
#define D 294 // 레
#define E 330 // 미
#define F 349 // 파
#define G 392 // 솔
#define A 440 // 라
#define B 494 // 시
#define X 0 // 쉼

int piezoPin = 2;
int tempo = 200; 
int notes[30] = { C,E,G,C,E,G,A,A,A,G,X,X,F,F,F,E,E,E,D,D,D,C,X,X,X  };

void setup() {
  pinMode (piezoPin, OUTPUT);
} 

void loop() {
  for (int i = 0; i < 30; i++) {
    tone (piezoPin, notes[ i ], tempo);
    delay (300);
  }

  delay(100); // 멜로디 중간에 짧게 멈추는 용도
}

 

 

 

 

 

거리가 가까울수록 소리가 남

 

#define C 262 // 도
#define D 294 // 레
#define E 330 // 미
#define F 349 // 파
#define G 392 // 솔
#define A 440 // 라
#define B 494 // 시
#define B5 524 // 시
#define X 0 // 쉼

const int buzzerPin = 13;
const int trigPin = 12;
const int echoPin = 11;
 

int read_distance(void)  
{
    long duration;
    int distance;
    digitalWrite(trigPin, LOW);
    
    delayMicroseconds(5);
    // Trigger the sensor by setting the trigPin high for 10 microseconds:
    digitalWrite(trigPin, HIGH);
    
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // Read the echoPin, pulseIn() returns the duration (length of the pulse) in microseconds:
    duration = pulseIn(echoPin, HIGH);
    // Calculate the distance:
    distance = duration * 0.034 / 2;
    return distance;  
}

void setup()
{
    Serial.begin(9600);
    pinMode(echoPin, INPUT);
    pinMode(trigPin, OUTPUT);
    pinMode(buzzerPin, OUTPUT);
  for(int N=2; N<10; N++) {
    pinMode(N, OUTPUT);
  }
}

void loop()
{
    int distance;
    distance = read_distance();
  
  if((distance/10)<5) {  
    tone (buzzerPin, D, 50); }
  else {
    digitalWrite(buzzerPin, LOW); }
  
  if ((distance/10)>1) { 
    digitalWrite(2, HIGH); } 
  else { 
    digitalWrite(2, LOW); }
  if ((distance/10)>3) { 
    digitalWrite(3, HIGH); } 
  else { 
    digitalWrite(3, LOW); }
  if ((distance/10)>5) { 
    digitalWrite(4, HIGH); } 
  else { digitalWrite(4, LOW); }
  if ((distance/10)>7) { 
    digitalWrite(5, HIGH); } 
  else { 
    digitalWrite(5, LOW); }
  if ((distance/10)>9) { 
    digitalWrite(6, HIGH); } 
  else 
  { digitalWrite(6, LOW); }
  if ((distance/10)>11) { 
    digitalWrite(7, HIGH); } 
  else { 
    digitalWrite(7, LOW); }
  if ((distance/10)>13) { 
    digitalWrite(8, HIGH); } 
  else { 
    digitalWrite(8, LOW); }
  if ((distance/10)>15) { 
    digitalWrite(9, HIGH); } 
  else { 
    digitalWrite(9, LOW); }
  if ((distance/10)>17) { 
    digitalWrite(10, HIGH); } 
  else { 
    digitalWrite(10, LOW); }
  
    Serial.println(distance);
    //Serial.println("cm");
  	//Serial.println();

    delay(100);
}

 

 

 

블루투스 통신 코드(R, B, Y 면 led 불빛 켜지고 r, b, y면 led 불빛 꺼짐)

#include <SoftwareSerial.h>
 
#define BT_RXD 8
#define BT_TXD 7
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
 
void setup(){
  Serial.begin(9600);
  bluetooth.begin(9600);
 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  Serial.print("Start");
}
 
void loop(){
  char X;
  if (bluetooth.available()) {
    X = bluetooth.read(); 
    Serial.write(X);
    if (X=='R') digitalWrite(3,HIGH);
    if (X=='B') digitalWrite(4,HIGH);
    if (X=='Y') digitalWrite(5,HIGH); 
    if (X=='r') digitalWrite(3,LOW);
    if (X=='b') digitalWrite(4,LOW);
    if (X=='y') digitalWrite(5,LOW);
  }
  if (Serial.available()) {
    bluetooth.write(Serial.read());
  }
}