진동센서와 서보모터 연결 코드 질문입니다!
페이지 정보
작성자 제리 작성일22-05-24 19:56 조회11,482회 댓글1건본문
코드의 목적부터 적어보겠습니다.
1.진동센서를 이용해서 입력 진동 값이 1000 이상일때 LED를 작동시키는 동시에 서보모터가 돌아간다.
2.컴퓨터로 A자판을 누르면 그제서야 서보모터가 원래위치로 가도록 작동한다.
2번 코드 즉, 한번 진동값이 1000이 넘어간 후 진동값이 몇이든 간에 서보모터가 돌아간 상태로 가만히 냅두고 자판을 누르면 그때 서보모터가 원래 위치로 가도록 하려면 어떻게 코드를 작성해야 하는지 감이 안잡혀서 질문합니다..!!
(센서값이 1000미만일때 원래대로 서보모터가 돌아오도록 작동하게만 코드를 짜봤습니다.)
#include <Servo.h>
int motor = 6; // 서보 모터의 핀 번호
int LED = 9; // LED의 핀 번호
Servo servo;
void setup(){
Serial.begin(9600); // 시리얼 통신, 속도는 9600
servo.attach(motor); // 모터 시작
pinMode(motor,OUTPUT); // 모터 출력
}
void loop(){
int val = analogRead(A0); // 충격 센서의 데이터 받아오기
Serial.println(val);
if (val > 1000){ // 센서값이 1000 이상 일 때
digitalWrite(LED, HIGH); // led 켜주기
for(int i = 0; i < 180; i++){ // 서보 모터의 각도를 180도로
servo.write(i);
delay(10);
}
while(val >=1000 && val <= 1023){ // 센서값 변함이 없을 때
val = analogRead(A0); // 충격센서의 값 재입력
}
}else { //센서값이 1000 미만 일 때
digitalWrite(LED, LOW); // led꺼주기
for(int k = 180; k> 0; k--){ // 서보모터의 각도를 0도로
servo.write(k);
delay(10);
}
while(val >= 0 && val < 1000){ // 센서값에 변함이 없을 때
val = analogRead(A0); // 충격센서의 값 재입력
}
}
}
댓글 : 1
조회수 : 11,482
master님의 댓글
master 작성일
#include <Servo.h>
Servo servo;
int motor = 6;
int LED = 9;
//
int angle=0; // 서보모터 초기각도
//
void setup(){
Serial.begin(9600);
servo.attach(motor);
pinMode(motor,OUTPUT);
}
//
void loop(){
int val=analogRead(A0); Serial.println(val); // 충격 센서
//
if(val>1000){ // 센서값이 1000 이상 일 때
digitalWrite(LED,1); // led on
while(angle<180){ angle++; servo.write(angle); delay(10); } // 180도
}
//---------------------
if(Serial.available()){
char r=Serial.read();
digitalWrite(LED,0); // led off
if(r=='0'){
while(angle>0){ angle--; servo.write(angle); delay(10); } // 0도
}
}
}