정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 무드등
엽빵이 | 2019-06-06

제가 아두이노 무드등을 만드려구 하는데 일단 박수 소리를 내면 

RGB 색깔이 막 바뀌고 타이머를 기능을 넣어서 일정시간이 지나면      일반 LED 등 색깔로 돌아오게 하고 블루투스 제어장치를 넣어서 휴대폰으로 ON OFF 할수있게 하려구합니다
인터넷으로  코딩들을 몇개구해서 몇개 짜집기 해서 짯는데 이거는 뭔가 많이 부족한거 같아서 도움이 필요하고자 글을 올렸습니다 .. 도와주십시오 많이 고쳐야할것같습니다
//핀맵설정
const int LED_R_PIN = 10;
const int LED_G_PIN = 11;
const int LED_B_PIN =  9;
const int SOUND_PIN = A2;
 
 
// 전역변수
boolean button_is_activate = true;      // 버튼 활성화 상태, 한번 길게 터치로 여러번 실행되는것을 막는다.
int button_step = 0;                    // 버튼 정지(0)
int SOUND_THRESHOLD = 600;
 
float red = 0;   //0~255의 밝기 값
float blue = 170;
float green = 85;
 
float bright_control = 0.1;
float red_bright_control = 0.1;
float blue_bright_control = 0.1;
float green_bright_control = 0.1;
 
float x = 0;
#include <SoftwareSerial.h> //소프트웨어 시리얼 통신 함수가 정의됨
 
SoftwareSerial BTS(2,3);   // (rx통신pin, tx통신pin) 로 정의됨
void setup() {
    Serial.begin(9600);
    pinMode(SOUND_PIN, INPUT);
    pinMode(LED_R_PIN, OUTPUT);
    pinMode(LED_G_PIN, OUTPUT);
    pinMode(LED_B_PIN, OUTPUT);
{
   pinMode(7,OUTPUT); 
   Serial.begin(9600);//통신속도 9600bps
   BTS.begin(9600); //통신속도 설정 (핸드폰연결)
   
 
 
}
}
 
void button_pressed() {
    if (button_step == 0) { //꺼짐
        analogWrite(LED_R_PIN, 255);
        analogWrite(LED_G_PIN, 255);
        analogWrite(LED_B_PIN, 255);
    }
    else if (button_step == 1) { //흰색 켜짐
        analogWrite(LED_R_PIN, 0);
        analogWrite(LED_G_PIN, 0);
        analogWrite(LED_B_PIN, 0);
    }
    else if (button_step == 2) { //흰색 밝기변화
        analogWrite(LED_R_PIN, x);
        analogWrite(LED_G_PIN, x);
        analogWrite(LED_B_PIN, x);
        x += bright_control;
        if (x <= 0 || x > 255)  bright_control = -bright_control;
        // 0,255 값이 됬을때 bright_control를 반전시켜 반대로 동작하게 함.
        delay(1);
    }
    else if (button_step == 3) { //3색숨쉬는LED
        analogWrite(LED_R_PIN, red);
        analogWrite(LED_G_PIN, blue);
        analogWrite(LED_B_PIN, green);
        red += red_bright_control;
        blue += blue_bright_control;
        green += green_bright_control;
 
        if (red < 0 || red > 255) red_bright_control = -red_bright_control;
        if (blue < 0 || blue > 255) blue_bright_control = -blue_bright_control;
        if (green < 0 || green > 255) green_bright_control = -green_bright_control;
        delay(1);
 
 
   
    
    
    }
 
    
}
 
char cmd;
 
void loop() {
    button_pressed();
    Serial.println(analogRead(SOUND_PIN));  // 감도확인 사운드센서의 가변저항 돌리면서 감도를 맞춰줘야함
    if (analogRead(SOUND_PIN) < SOUND_THRESHOLD) {
 
        if (button_is_activate) {
            button_step++;
            if (button_step >= 4) {
                button_step = 0;
            }
            button_is_activate = false;   // 한번만 실행될 수 있게 버튼 비활성화
        }
        delay(100);
    }
    else {
        button_is_activate = true;
    }
}
 if( BTS.available() ) {  //블루투스통신 가능한지 여부 체크
       cmd = BTS.read();   //핸드폰에서 보내준 명령을 cmd로 설정
       Serial.print("Command = "); 
       Serial.println(cmd);  
 
이전글   |    아두이노 키패드와 블루투스를 이용한 금고 제작 명령어인데 작동이 안됩니다. ... 2019-06-05
다음글   |    블루투스모듈 서보모터 제어 (+초음파센서)... 2019-06-06