Codigo Actuador

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

#include <Wire.

h>

void setup() {

Serial.begin(9600);
Wire.begin();

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);

float pid,pv,pv2,sp=0.999,
error10=0,error9=0,error8=0,error7=0,error6=0,error5=0,error4=0,error3=0,error2=0,e
rror1=0,error=0,sumaerror=0,kp=5.4,ki=3.6,kd=1.025;
int c,c2;

void loop() {

Wire.requestFrom(2,5);
if (Wire.available())
{
c=Wire.parseInt();
pv= c/100.0;
}

if (pv<0.1)
{
pv=1;
}

Wire.requestFrom(3,5);
if (Wire.available())
{
c2=Wire.parseInt();
pv2= c2/100.0;
}

if (pv2<0.1)
{
pv=1;
}

error= sp-pv;
sumaerror=error+error1+error2+error3+error4+error5+error6+error7+error8+error9+erro
r10;
pid =error*kp + sumaerror *ki + (error1-error)*kd;
error10=error9;
error9=error8;
error8=error7;
error7=error6;
error6=error5;
error5=error4;
error4=error3;
error3=error2;
error2=error1;
error1=error;

Serial.print (pv);
Serial.print ("/");
Serial.print (pv2);
Serial.print ("/");
Serial.print (error);
Serial.print ("/");
Serial.println (pid);

if (pid > 5)
{
pid = 5;
}
if (pid < 0)
{
pid = 0;
}
if( pid <=0.5)
{
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >0.5) && (pid<=1))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >1) && (pid<=1.5))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >1.5) && (pid<=2))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >2) && (pid<=2.5))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >2.5) && (pid<=3))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >3) && (pid<=3.5))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >3.5) && (pid<=4))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

if((pid >4) && (pid<=4.5))


{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);

if(pid >4.5)
{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);

delay(7);
}

You might also like