STUDY BLOG
초음파센서로 RGB 모듈 제어 본문
라즈베리파이 C++
거리 0~10사이 빨간불 on
거리 10~15사이 녹색불 on
거리 15~30사이 파란불 on
1 #include <iostream>
2 #include <wiringPi.h>
3 using namespace std;
4
5 #define PIN_TRIG 23
6 #define PIN_ECHO 24
7 #define RANGE_MAX 200
8 #define RANGE_MIN 0
9
10 #define LED_R 18
11 #define LED_G 17
12 #define LED_B 27
13
14
15 int main(int argc, char* argv[]){
16 wiringPiSetupGpio();
17 unsigned int T,L;
18 pinMode(PIN_TRIG, OUTPUT);
19 pinMode(PIN_ECHO, INPUT);
20 pinMode(LED_R, OUTPUT);
21 pinMode(LED_G, OUTPUT);
22 pinMode(LED_B, OUTPUT);
23
24 while(1){
25 digitalWrite(PIN_TRIG, LOW); delayMicroseconds(2);
26 digitalWrite(PIN_TRIG, HIGH); delayMicroseconds(20);
27 digitalWrite(PIN_TRIG, LOW);
28 while(digitalRead(PIN_ECHO) == LOW);
29 unsigned int startTime = micros();
30 while(digitalRead(PIN_ECHO) == HIGH);
31 T=micros() - startTime;
32 L=T/58.2;
33
34 if(0<=L && L<10){
35 cout<<L<<endl;
36 digitalWrite(LED_R,HIGH);
37 digitalWrite(LED_G,LOW);
38 digitalWrite(LED_B,LOW); }
39
40 else if(10<=L && L<15) {
41 digitalWrite(LED_R,LOW);
42 digitalWrite(LED_G,HIGH);
43 digitalWrite(LED_B,LOW); }
44
45 else if(15<=L && L<30) {
46 digitalWrite(LED_R,LOW);
47 digitalWrite(LED_G,LOW);
48 digitalWrite(LED_B,HIGH); }
49
50 else {
51 digitalWrite(LED_R,LOW);
52 digitalWrite(LED_G,LOW);
53 digitalWrite(LED_B,LOW); }
54
55 delay(1000);
56 }
57 }
58
'Hardware > Raspberry Pi' 카테고리의 다른 글
온도센서로 RGB 모듈 제어 (0) | 2021.04.08 |
---|---|
LED 번갈아 페이딩 (0) | 2021.04.07 |
디바운싱을 이용한 LED 제어 (0) | 2021.04.07 |