*사용 부품
서보모터 1개
LED 2개 (Green, Yellow)
조도센서(CDS) 1개
부저 1개
*기능 설명
1. 초음파 센서에 10cm이하의 거리일 때 Servo모터가 작동해서 차단바가 올라가고 부저가 울림
2. CDS센서가 가려지면 LED_Y가 켜지고 LED_G가 꺼짐
*동작영상
*전체 소스코드
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <softPwm.h>
#include <softTone.h>
#include <string.h>
#include <errno.h>
#define Buzzer 28
#define Servo 1
#define LED_G 6
#define LED_Y 5
#define micro_trig 23
#define micro_echo 24
#define CDS 7
int Warning[11] = {0,659,0,659,0,659,0,659,0,659,0};
int main ()
{
int start_time, end_time;
float distance;
if(wiringPiSetup() == -1) exit(1);
softToneCreate (Buzzer);
pinMode(LED_G, OUTPUT);
pinMode(LED_Y, OUTPUT);
pinMode(Servo, PWM_OUTPUT);
pinMode(micro_trig, OUTPUT);
pinMode(micro_echo, INPUT);
pwmSetMode(PWM_MODE_MS);
pinMode(CDS, INPUT);
pwmSetClock(384);
pwmSetRange(1000);
while(1)
{
//초음파센서
digitalWrite(micro_trig, LOW);
delay(1500);
digitalWrite(micro_trig, HIGH);
delayMicroseconds(10);
digitalWrite(micro_trig, LOW);
while (digitalRead(micro_echo) == 0);
start_time = micros();
while (digitalRead(micro_echo) == 1);
end_time = micros();
distance = (end_time - start_time) / 29. / 2.;
printf("distance %.2f cm\n", distance);
//초음파센서 끝
//초음파센서 + 서보모터 + 부저
//CDS + LED
if(distance < 10.00 && digitalRead(CDS) == HIGH){
pwmWrite(Servo, 120);
digitalWrite(LED_Y, HIGH);
digitalWrite(LED_G, LOW);
for (int i = 0; i < 11; ++i)
{
softToneWrite(Buzzer, Warning[i]);
delay (200);
}
}
else if(distance > 10.00 && digitalRead(CDS) == HIGH){
pwmWrite(Servo,75);
digitalWrite(LED_Y, HIGH);
digitalWrite(LED_G, LOW);
}
else if(distance < 10.00 && digitalRead(CDS) == LOW){
pwmWrite(Servo, 120);
for (int i = 0; i < 11; ++i)
{
softToneWrite(Buzzer, Warning[i]);
delay (200);
}
digitalWrite(LED_Y, LOW);
digitalWrite(LED_G, HIGH);
}
else if(distance > 10.00 && digitalRead(CDS) == LOW)
{
pwmWrite(Servo,75);
digitalWrite(LED_Y, LOW);
digitalWrite(LED_G, HIGH);
}
}
return 0 ;
}
'라즈베리파이' 카테고리의 다른 글
C언어로 라즈베리파이4 GPIO 레지스터 접근하여 버튼 사용하기 (0) | 2020.11.03 |
---|---|
C언어로 라즈베리파이4 GPIO 레지스터 접근하여 LED점멸시키기 (0) | 2020.11.03 |
Win32 Disk Imager로 SD카드에 라즈비안 설치하기 (0) | 2020.08.27 |
라즈비안 이전버전 다운로드하기 (0) | 2020.08.27 |