스텝모터란?
- 입력신호의 변화 유무에 따라 일정하게 각도를 변화하거나 위치를 유지하고 정지하는 기능의 모터.
- 스텝 모터는 전자 펄스를 운동으로 전환하고 각각의 펄스 '스텝' 이 샤프트를 어떤 각도로 회전하게 합니다.
ㄴ 샤프라는 부분이 회전 할 수 있게 한다.

스텝모터를 사용하려면...
--> 모터드라이브(ULN2003) 이 필요합니다.
왜?
--> 보드의 전료가 모터의 필요치보다 낮음 --> 보드 자체만으로 모터를 사용할 수 (X) --> 따라서 중간에 드라이브 회로를 거쳐서 전압, 전류를 증폭시켜야함
+들어가기 전에 : <Stepper.h>라는 헤더파일을 추가하여야 합니다.
<회로도>

<코드>
#include <Stepper.h> //스텝모터를 사용하는데 필요한 헤더파일 추가
int st = 2048; //모터값 설정
Stepper stepper(st, 11,9,10,8); //스텝 모터 클래스의 객체 생성 + 각각의 이름
void setup() {
stepper.setSpeed(10); //스텝모터 속도 설정
}
void loop() {
stepper.step(st);
}
<모터를 반대 방향으로 돌려보자>
<코드>
#include <Stepper.h> //스텝모터를 사용하는데 필요한 헤더파일 추가
int st = 2048; //모터값 설정
Stepper stepper(st, 8,10,9,11); //스텝 모터 클래스의 객체 생성 + 각각의 이름 --> 객체의 순서를 반대로 해 반대로 돌 수 있도록 함.
void setup() {
stepper.setSpeed(10); //스텝모터 속도 설정
}
void loop() {
stepper.step(st);
}
수분센서(수위 측정 센서)란?
- 물의 여부를 확인함
- 수분함량에 따른 저항의 변화를 측정 ( 수분함량과 비례)
<회로도>

<코드>
int led = 2;
void setup() {
Serial.begin(9600); //시리얼통신선언
}
void loop() {
int level = analogRead(A0); //아날로그 A0에다가 핀을 꽂음
Serial.println(level); // 시리얼모니터에 level값 출력
}
<적정 수위가 되었을 때 LED를 켜보자>
<회로도>

<코드>
int led = 2;
void setup() {
Serial.begin(9600); //시리얼 통신 선언
pinMode(led, OUTPUT); //led핀모드 설정
}
void loop() {
int level = analogRead(A0);
Serial.println(level);
if(level > 50){ //level이 50이 넘어가면
digitalWrite(led, HIGH);//led가 켜짐
}
else //아니라면
digitalWrite(led, LOW);//꺼짐
}
.
.
.
.
.
<오늘의 과제>
1. 수위센서를 사용하여 적정 수위일 때 부저센서 울리기
2. 스텝 모터의 속도를 마음대로 설정한 다음 돌려보기
<회로도>

<코드>
#include <Stepper.h> //스텝모터를 사용하는데 필요한 헤더파일 추가
int st = 2048; //모터값 설정
Stepper stepper(st, 11,9,10,8); //스텝 모터 클래스의 객체 생성 + 각각의 이름
void setup() {
stepper.setSpeed(10); //스텝모터 속도 설정 --> 각각 10, 15, 30순으로 증가시킴
}
void loop() {
stepper.step(st);
}
<실행영상>
...> 2
<회로도>

<코드>
int bu = 2;
void setup() {
Serial.begin(9600); //시리얼 통신 선언
pinMode(bu, OUTPUT); //bu핀모드 설정
}
void loop() {
int level = analogRead(A0);
Serial.println(level);
if(level > 50){ //level이 50이 넘어가면
tone(bu, 1100);//led가 켜짐
}
else //아니라면
noTone(bu);//꺼짐
}
...>1