코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
아두이노 무드등
엽빵이 | 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 |