정보나눔

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

3개의 조도센서로 각 가 서보모터 와 led 키기
심태영 | 2017-11-25

지금 제가 하려는게

조도센서를 여러개 이용해서 각 각 서보모터와 led를 킬생각입니다.

조도센서 각각 빛이 적으면 led 켜지고 서보모터회전

                          빛이 밝으면 led 꺼지고 서보모터 반대로 회전

 

그래서 조도센서로 감지하고 서보모터를 돌리는 형식을 취하려 했는데

코딩이 이상한지 잘안되네요 ㅠㅠㅠ

능력자 분들 저좀도와주세요 ㅇㅅㅇ

 

이밑에 와같은 모습입니다.

 

 

 

 

 

코딩은

#include <Servo.h>
int cds0 = A0;
int cds1 = A1;
int cds2 = A2;
int motor0 = 3; // 서보 모터의 핀 번호
int motor1 = 5;
int motor2 = 6;
int LED0 = A3; // LED의 핀 번호
int LED1 = A4;
int LED2 = A5;

Servo servo;
Servo servo1;
Servo servo2;

void setup(){
 Serial.begin(9600); // 시리얼 통신, 속도는 9600
 servo.attach(motor0); // 모터 시작
servo1.attach(motor1); // 모터 시작
servo2.attach(motor2); // 모터 시작
pinMode(motor0,OUTPUT); // 모터 출력
pinMode(motor1,OUTPUT); // 모터 출력
pinMode(motor2,OUTPUT); // 모터 출력
}
void loop(){
 int sensor0 = analogRead(cds0); // 조도센서의 데이터 받아오기


Serial.print("cds0 = ");
 Serial.println(sensor0);

 if (sensor0 > 450){ // 주위가 어둡다면
digitalWrite(LED0, HIGH); // led 켜주기
for(int a = 0; a < 180; a++){ // 서보 모터의 각도를 180도로
servo.write(a);
 delay(10);
 }
 while(sensor0 >=450 && sensor0 <= 1000){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor0 = analogRead(A1); // 조도센서의 값 재입력
}

 }else { // 주위가 밝다면
digitalWrite(LED0, LOW); // led꺼주기
for(int b = 180; b> 0; b--){ // 서보모터의 각도를 0도로
servo.write(b);
 delay(10);
 }
 while(sensor0 >= 0 && sensor0 < 450){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor0 = analogRead(A1); // 조도센서의 값 재입력
}
 }
}
 void loop2(){
   int sensor1 = analogRead(cds1); // 조도센서의 데이터 받아오기


Serial.print("cds1 = ");
 Serial.println(sensor1);
 

if (sensor1 > 450){ // 주위가 어둡다면
digitalWrite(LED1, HIGH); // led 켜주기
for(int c = 0; c < 180; c++){ // 서보 모터의 각도를 180도로
servo1.write(c);
 delay(10);
 }
 while(sensor1 >=450 && sensor1 <= 1000){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor1 = analogRead(A2); // 조도센서의 값 재입력
}

 }else { // 주위가 밝다면
digitalWrite(LED1, LOW); // led꺼주기
for(int d = 180; d> 0; d--){ // 서보모터의 각도를 0도로
servo1.write(d);
 delay(10);
 }
 while(sensor1 >= 0 && sensor1 < 450){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor1 = analogRead(A2); // 조도센서의 값 재입력
}
 }
 }
 void loop3(){
  int sensor2 = analogRead(cds2); // 조도센서의 데이터 받아오기

 Serial.print("cds2 = ");
 Serial.println(sensor2);
 

if (sensor2 > 450){ // 주위가 어둡다면
digitalWrite(LED2, HIGH); // led 켜주기
for(int e = 0; e < 180; e++){ // 서보 모터의 각도를 180도로
servo2.write(e);
 delay(10);
 }
 while(sensor2 >=450 && sensor2 <= 1000){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor2 = analogRead(A3); // 조도센서의 값 재입력
}

 }else { // 주위가 밝다면
digitalWrite(LED2, LOW); // led꺼주기
for(int g = 180; g> 0; g--){ // 서보모터의 각도를 0도로
servo2.write(g);
 delay(10);
 }
 while(sensor2 >= 0 && sensor2 < 450){ // 조도센서의 빛 밝기에 변함이 없을 때
delay(100);
 sensor2 = analogRead(A3); // 조도센서의 값 재입력
}
 }

 }

 

 

입니다

 

제가 코딩이 이번이 처음이라....

1개짜리로 할때는 됬는데 여러개를 사용하려고 하니 코딩이 되지않아요 ㅠㅠ

능력자분들 도와주세요 ㅇㅅㅇ

이전글   |    로드셀과 앱인벤터 2017-11-25
다음글   |    https://www.kocoafab.cc/tutorial/view/339 에서 응용에 관... 2017-11-25