BASIC4MCU | 질문게시판 | 아두이노 delay를 millis로 바꾸고 싶습니다.
페이지 정보
작성자 슨슨슨모 작성일2022-06-16 22:07 조회216회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=20657
본문
초음파 센서를 이용해 거리가 가까울수록 진동모터가 더 강하고 빠르게 진동하며 수위센서에 따라 스피커 소리의 세기와 빠르기가 증가하는 장치를 아두이노로 만들려고 합니다.
아래의 코드가 에러 없이 돌아감에도 불구하고 의도와 다르게 작동되어 조사해보니 여러 실행을 할 떄엔 delay 대신 millis 를 사용해야 하는 것 같더라고요, 근데 어떻게 적용해야할 지 잘 모르겠습니다.. 도와주세요..
//수위센서 - 스피커int Sound_Sensor = A1;int Sensor_val;void setup() {Serial.begin(9600);//초음파센서 - 진동모터pinMode(2, OUTPUT);pinMode(3, INPUT);}void loop() {//초음파센서 - 진동모터digitalWrite(2, HIGH);delayMicroseconds(10);digitalWrite(2, LOW);long duration = pulseIn(3, HIGH);if (duration == 0){return;}long distance = duration / 58.2;Serial.println(String("distance: ")+distance);if(distance < 50){analogWrite(11,250);delay(1000);analogWrite(11,0);delay(10*distance);}//수위센서 - 스피커Sensor_val = analogRead(Sound_Sensor);if (Sensor_val <= 600 && Sensor_val >= 400) {tone(8, 1000, 20);delay(20);noTone(8);delay(100000/Sensor_val);}else if ( Sensor_val > 600) {tone(8, 1500, 20);delay(20);noTone(8);delay(100000/Sensor_val);}}
댓글 0
조회수 216등록된 댓글이 없습니다.