BASIC4MCU | 질문게시판 | 스위치로 서보모터를 이용한 엘리베이터 제작 중 도움이 필요합니다.
페이지 정보
작성자 나나나리리 작성일2023-11-16 21:58 조회1,426회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23397
본문
안녕하십니까 엘리베이터 만드는 중 어려움이 있어 질문드립니다.제가 원하는 것은버튼을 누르자마자 led 빛이 들어오며 동시에 모터가 움직이는 것을 원하는데버튼을 길게 눌러야 led 빛이 들어오고led를 키려고 버튼을 길게누르니 모터가 90도 정도 움직여야하는것이 그 이상 움직이게 됩니다.delay 때문에 동시동작이 불가능한 것은 알겠으나.. 생각처럼 해결이 되지않습니다..초음파 센서로 거리를 측정해 10cm이하가 되면 led가 꺼지게 동작했습니다.현재 코딩은 버튼1만 하였고 버튼1이 생각처럼 동작하면 2,3,4도 추가할 예정입니다.millis를 이용하려해도 잘 안되고.. 미치겠습니다..#include <Servo.h>Servo myservo;int button1 = 4;int button2 = 5;int button3 = 6;int button4 = 7;int LED = 10;int Status = 0;int trig = 11;int echo = 12;void setup() {pinMode(button1,INPUT);pinMode(LED, OUTPUT);Serial.begin(9600);pinMode(trig, OUTPUT);pinMode(echo, INPUT);myservo.attach(9);pinMode(button1,INPUT);pinMode(button2,INPUT);pinMode(button3,INPUT);pinMode(button4,INPUT);}void loop() {Status = digitalRead(button1);if(Status == 1) digitalWrite(LED, 1);delay(10);float duration, distance;digitalWrite(trig,1);delay(1);digitalWrite(trig,0);duration = pulseIn(echo,1);distance = ((float)(duration * 340) / 10000) / 2 ;Serial.print("Distance: ");Serial.print(distance);Serial.println("cm");if(distance <= 10) digitalWrite(LED,0);myservo.write(90);if(digitalRead(button1)==HIGH){myservo.write(90);myservo.write(180);delay(500);}else if(digitalRead(button2)==HIGH){myservo.write(90);myservo.write(-180);delay(500);}else if(digitalRead(button3)==HIGH){myservo.write(90);myservo.write(180);delay(1000);}else if(digitalRead(button4)==HIGH){myservo.write(90);myservo.write(-180);delay(1000);}}
댓글 0
조회수 1,426등록된 댓글이 없습니다.