#ifndef Car_Lib_h
#define Car_Lib_h
float ultrasonic_distance(int trigPin, int echoPin);
int potentiometer_Read(int pin);
void motor_forward(int IN1, int IN2, int speed);
void motor_backward(int IN1, int IN2, int speed);
void motor_hold(int IN1, int IN2);
#endif
//car.library.cpp 부분
#include "Arduino.h"
float ultrasonic_distance(int trigPin, int echoPin)
{
long distance, duration;
digitalWrite(trigPin, LOW);
digitalWrite(echoPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = ((float)(340 * duration) / 1000) / 2;
return distance;
}
int potentiometer_Read(int pin)
{
int value;
value = analogRead(pin) / 4; //analogRead(pin)/4의 이유:
//analogRead(pin)은 0~1000 범위 하지만 pwm은 0~255까지의 값밖에 못읽기 때문에 /4를 해줌.
//value = map(value,0,1000,0,255) 이런식으로 바꿔도 좋음
return value;
}
void motor_forward(int IN1, int IN2, int speed)
{
analogWrite(IN1, speed); //IN1은 speed 출력
analogWrite(IN2, LOW); //IN2는 LOW 출력 = 정방향 회전
}
void motor_backward(int IN1, int IN2, int speed)
{
analogWrite(IN1, LOW); //IN1은 LOW 출력
analogWrite(IN2, speed); //IN2는 speed 출력 = 역방향 회전
}
void motor_hold(int IN1, int IN2)
{
analogWrite(IN1, LOW);
analogWrite(IN2, LOW); //IN1,2 모두 LOW는 정지
}
int trig=3;
int echo=2;
long distance;
int analogPin = A5;
int val;
int motorA1=4;
int motorA2=5;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// distance=ultrasonic_distance(trig,echo);
// Serial.print(distance);
// Serial.println(" mm");
val=potentiometer_Read(analogPin);
Serial.println(val);
// 개조한 코드
if(val <= 50)
{
motor_hold(motorA1,motorA2);
}
else
motor_backward(motorA1,motorA2,175);
//개조한 코드
/* motor_forward(motorA1,motorA2,val);*/
//원래 코드
}