본문 바로가기

유수봉 교수의 AI

유수봉 교수의 AI-10주차

Lab_Speake_1 : 멜로디

 

 

 

사용된 코드

 

#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); // 멜로디 중간에 짧게 멈추는 용도
}

 

 

 

 

 

Lab_Speake_2 : 거리 감지 경고발생기

 

 

 

사용된 코드

 

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

 

거리 감지 경고발생기의 동작 원리를 간단히 설명하시오.

​초음파 센서의 작동으로 인하여 대상 물체가 가까워지거나 멀리 갈수록 소리가 발생한다.

거리 감지 경고발생기는 어떤 곳에 적용할 수 있는가 ?

​자동차 센서 감지, 자동문 등

 

 

Lab01_Serial : 유수봉 만세

 

 

 

사용한 코드

 

void setup() {
  Serial.begin(9600);
  Serial.print("\n (이환웅) Serial Comm. \n\n ");
}
void loop() {
  int N = 0;
  for (N = 1; N < 10; N++) {
    Serial.print(N);
    Serial.println(" 이환웅 만세!! ");
  }
  for (N = 1; N < 10; N++) {
    Serial.print(" -> ");
    delay(500);
  }
  Serial.println();
}
 
 
 
Lab02_Serial2LED
 

 

 

사용한 코드

 

void setup() { Serial.begin(9600); for (int P = 2; P < 7; P++) { pinMode(P, OUTPUT); } Serial.print("\n (NewBongMan) Serial to LED\n\n "); } void loop() { char X = Serial.read(); if ((X >= '0') && (X <= '9')) { Serial.println(X); } if (X == '2') { digitalWrite(2, HIGH); } if (X == '3') { digitalWrite(3, HIGH); } if (X == '4') { digitalWrite(4, HIGH); } if (X == '5') { digitalWrite(5, HIGH); } if (X == '6') { digitalWrite(6, HIGH); } if (X == '0') { for (int P = 2; P < 7; P++) { digitalWrite(P, LOW); } } }

시리얼 모니터에서 숫자를 입력하면 전구가 켜지고 0을 꺼지면 모두 꺼진다.

 

 

Lab03_Serial2FND

 

 

사용한 코드

 

void setup() {
  Serial.begin(9600);
  for (int P = 2; P < 9; P++) {
    pinMode(P, OUTPUT);
  }
  Serial.print("\n (NewBongMan) Serial to FND\n\n ");
}

void loop() {
  char X = Serial.read();  // Serial 통신은 문자
  if ((X >= '0') && (X <= '9')) {
    Serial.print(" Input Number : ");
    Serial.println(X);
    disp(X - 48);  // 문자를 숫자로
  }
}

void CLS() {  // FND 지우기
  for (int X = 2; X < 9; X++) { digitalWrite(X, HIGH); }
}

void disp(int N) {  // FND 에 숫자 표시
  CLS();
  switch (N) {
    case 1:      digitalWrite(3, LOW);      digitalWrite(4, LOW);      break;
    case 2:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(5, LOW);      digitalWrite(6, LOW);      digitalWrite(8, LOW);      break;
    case 3:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(8, LOW);      break;
    case 4:      digitalWrite(3, LOW);      digitalWrite(4, LOW);      digitalWrite(7, LOW);      digitalWrite(8, LOW);      break;
    case 5:      digitalWrite(2, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(7, LOW);      digitalWrite(8, LOW);      break;
    case 6:      digitalWrite(2, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(6, LOW);      digitalWrite(7, LOW);      digitalWrite(8, LOW);      break;
    case 7:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(4, LOW);      break;
    case 8:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(6, LOW);      digitalWrite(7, LOW);      digitalWrite(8, LOW);      break;
    case 9:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(7, LOW);      digitalWrite(8, LOW);      break;
    case 0:      digitalWrite(2, LOW);      digitalWrite(3, LOW);      digitalWrite(4, LOW);      digitalWrite(5, LOW);      digitalWrite(6, LOW);      digitalWrite(7, LOW);      break;
  }
}

 

 

 

 

시리얼 모니터에 숫자를 입력하면 FND가 해당 숫자로 바뀐다.

'유수봉 교수의 AI' 카테고리의 다른 글

유수봉 교수의 AI-12주차  (1) 2023.11.17
유수봉 교수의 AI-11주차  (0) 2023.11.10
유수봉 교수의 AI-9주차  (0) 2023.10.27
유수봉 교수의 AI-8주차  (0) 2023.10.20
유수봉 교수의 AI-7주차  (0) 2023.10.13