BASIC4MCU | 질문게시판 | 아두이노 a4988 스텝모터 + LCD 모니터 + 미세먼지 센서 (GP2Y1014AU0F)
페이지 정보
작성자 JCHJ 작성일2022-12-15 16:58 조회3,712회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=22197
본문
#include#include#define DIR 5#define STEP 4#define STEP_DELAY 5000#define STEP_COUNT 300LiquidCrystal_I2C lcd (0x27, 16, 2);int Dust = 0;char str1[10];int Vo = A0;int V_LED = 2;float Vo_value = 0;float Voltage = 0;void setup(){Wire.begin();Serial.begin(9600);while(!Serial);Serial.println("\nI2C Scanner");pinMode(V_LED, OUTPUT);pinMode(Vo, INPUT);pinMode(DIR, OUTPUT);pinMode(STEP, OUTPUT);digitalWrite(DIR, HIGH);lcd.begin();lcd.noBacklight();lcd.clear();delay(500);lcd.backlight();delay(500);lcd.setCursor(6, 0);lcd.print("SENSOR");delay(1000);lcd.clear();}void loop(){digitalWrite(V_LED, LOW);delayMicroseconds(280);Vo_value = analogRead(Vo);delayMicroseconds(30);digitalWrite(V_LED, HIGH);delayMicroseconds(9680);Voltage = Vo_value * 5.0 / 1023.0;Serial.print(" Volatage: ");Serial.println(Voltage);if (Voltage < 0.1) {Dust = 0;}else if (Voltage < 0.8) {Dust = 10 * (5 * (Voltage - 0.1));}else if (Voltage < 1) {Dust = 10 + 15 * ((Voltage - 0.8) * 10);}else if (Voltage > 1) {Dust = 40 + 16 * ((Voltage - 1) * 10);}Serial.print("Dust : ");Serial.println(Dust);Serial.println(" ");delay(10);lcd.setCursor(1, 0);lcd.print("Dust : ");sprintf(str1, "%03d", Dust);lcd.print(str1);lcd.write(0);lcd.print("g/m");lcd.write(1);if (Dust > 80) {digitalWrite(DIR, HIGH);for (int i = 0 ; i < STEP_COUNT; i++) {digitalWrite(STEP, HIGH);delayMicroseconds(STEP_DELAY);digitalWrite(STEP, LOW);delayMicroseconds(STEP_DELAY);}}else if (Dust < 80) {digitalWrite(DIR, LOW);for (int i = 0 ; i < STEP_COUNT; i++) {digitalWrite(STEP, HIGH);delayMicroseconds(STEP_DELAY);digitalWrite(STEP, LOW);delayMicroseconds(STEP_DELAY);}}else {digitalWrite(STEP, LOW);digitalWrite(STEP, LOW);}delay(10000);}Q : 미세먼지 센서에 의해 모터가 돌아가는 형식으로 코드를 진행하려고하는데 미세먼지 농도가 기준치보다 높거나 낮을 경우 모터가 계속 한쪽으로만돌아가는 방식(ex: 농도가 높을 경우 모터가 왼쪽, 낮을 경우 모터가 반대방향으로 돌아가는 방식)으로 작동됩니다.미세먼지는 계속 측정되고 스텝모터는 한번 돌아가고 그 이후로 모터가 멈추는 방법(ex: 농도가 기준치 이상이면 모터가 왼쪽으로 돌아가고 정지한뒤에, 기준치 아래로 낮아지면 다시 반대방향으로 돌아가는 방법)을 알려주시면 감사하겠습니다 빠른답변 부탁드립니다.
댓글 0
조회수 3,712등록된 댓글이 없습니다.