BASIC4MCU | 질문게시판 | 답변 : 코드는 오류가 안뜨는데 작동을 안해서 피드백하나 가능할까요
페이지 정보
작성자 master 작성일2022-12-10 18:52 조회3,898회 댓글2건본문
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//
#define DIR 5
#define STEP 4
#define STEP_DELAY 500
#define STEP_COUNT 1000
//
int Vo=A0,V_LED=2;
//
char str1[10];
int Dust=0;
float Vo_value=0,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,1);
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,0); delayMicroseconds(280);
Vo_value=analogRead(Vo); delayMicroseconds(40);
digitalWrite(V_LED,1); 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 *((Voltage-0.1)* 5); }
else if(Voltage<1.0){ Dust=10+15*((Voltage-0.8)*10); }
else if(Voltage>1.0){ Dust=40+16*((Voltage-1.0)*10); }
Serial.print("Dust : "); Serial.println(Dust); Serial.println(" ");
//
delay(10);
//
sprintf(str1,"%03d",Dust);
lcd.setCursor(1,0); lcd.print("Dust : "); lcd.print(str1); lcd.write(0); lcd.print("g/m"); lcd.write(1);
//----------------------------------------------------------
if(Voltage>0.8){
digitalWrite(DIR,1);
for(int i=0;i<STEP_COUNT;i++){
digitalWrite(STEP,1); delayMicroseconds(STEP_DELAY); digitalWrite(STEP,0); delayMicroseconds(STEP_DELAY);
}
digitalWrite(DIR,0);
for(int i=0;i<STEP_COUNT;i++){
digitalWrite(STEP,1); delayMicroseconds(STEP_DELAY); digitalWrite(STEP,0); delayMicroseconds(STEP_DELAY);
}
}
//
delay(10);
}
모터코드는 먼지센서와 상관없이 동작할텐데
왜 모터 코드가 동작하지 않을까요?
댓글 2
조회수 3,898gw12님의 댓글
gw12 작성일감사합니다!! 미세먼지 센서값을 받고 모터를 구동시키는 것 까지는 완료 했습니다. 외에 미세먼지센서에서 데이터값을 계속받지만 모터를 정지시키는 방법이 있을까요?
master님의 댓글
master 작성일
if(Voltage>0.8){ // 0.8 이상에서만 모터 구동
추가했으니 다시 돌려보세요