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