#include <PID_v1.h>
#define echoPin 22
#define trigPin 24
double Setpoint, Input, Output, min=0, max=255;
int led=7;
long distancia,dist;
PID myPID(&Input, &Output, &Setpoint,1,2,3, DIRECT);
void setup()
{
Serial.begin(9600);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Input = dist;
Setpoint = 15;
//turn the PID on
myPID.SetMode(AUTOMATIC);
myPID.SetOutputLimits(min, max);
}
void loop()
{
//sonar
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin,HIGH);
distancia = duration /29 / 2 ;
if( distancia >0 && distancia <=100)
{
dist=distancia;
}
Input = dist;
myPID.Compute();
digitalWrite(led, Output);
Serial.print(Input); Serial.print(Setpoint); Serial.println(Output);
delay(250);
}
ae galera esse é o codigo so que ele não sai uma onda quadrada igual as do pwm
obs: estou utilizando o mega então a saida 7 é PWM.