Você está na página 1de 2

ARDUINO CODE DUAL AXIS MATLAB CODE DUAL AXIS ARDUINO CODE SINGLE AXIS MATLAB CODE SINGLE

ARDUINO CODE SINGLE AXIS MATLAB CODE SINGLE AXIS


#include <Servo.h> // include Servo library clear all; clear all;
#include <Servo.h> //including
clc; clc;
the library of servo motor
Servo horizontal; // horizontal servo
int servoh = 90; // stand horizontal servo c=arduino('COM31'); %Create Arduino c = arduino()
Object Servo sg90; //initializing a
Servo vertical; // vertical servo variable for servo named sg90 servoAttach(c,9);
int servov = 90; // stand vertical servo servoAttach(c,9); %Horizontal Servo servoStatus(c,9);
servoAttach(c,10); %Vertical Servo int initial_position = 90; //Declaring
// LDR pin connections the initial position at 90 servoh=90;
// name = analogpin; servoStatus(c,9);
int ldrlt = A0; //LDR top left servoStatus(c,10);
int ldrrt = A1; //LDR top rigt int LDR1 = A0; //Pin at which tic
int ldrld = A2; //LDR down left servoh=90; %Horizontal Servo initial LDR is connected while toc<60
int ldrrd = A3; //ldr down rigt position
int spd = A4; //speed servov=90; %Vertical Servo initial position R1=c.analogRead(0);
int LDR2 = A1; //Pin at which
int tole = A5; //tolerance R2=c.analogRead(1);
LDR is connected
tic
while toc < 60 error=5;
void setup() int error = 5; //initializing
{ lt=c.analogRead(0) variable for error diff1= abs(R1-R2);
Serial.begin(9600); rt=c.analogRead(1) diff2= abs(R2-R1);
// servo connections ld=c.analogRead(2) int servopin=9;
// name.attacht(pin); rd=c.analogRead(3) if((diff1<=error) ||
horizontal.attach(9); spd=c.analogRead(4)/20 (diff2<=error))
void setup()
vertical.attach(10); tol=c.analogRead(5)/4 else if(R1>R2)
{
} servoh=servoh-1;
avt = (lt + rt) / 2; % average value top sg90.attach(servopin); // attaches end
void loop() avd = (ld + rd) / 2; % average value down the servo on pin 9 if(R1<R2)
{ avl = (lt + ld) / 2; % average value left pinMode(LDR1, INPUT); //Making servoh=servoh+1;
int lt = analogRead(ldrlt); // top left avr = (rt + rd) / 2; % average value right the LDR pin as input end
int rt = analogRead(ldrrt); // top right pinMode(LDR2, INPUT); servoWrite(c,9,servoh);
int ld = analogRead(ldrld); // down left dvert = avt - avd; % check the diffirence of sg90.write(initial_position); //Move end
int rd = analogRead(ldrrd); // down rigt up and down servo at 90 degree delay(100);
dhoriz = avl - avr; % check the diffirence of delay(2000); // giving a end
int dtime = analogRead(spd)/20; // read left and right delay of 2 seconds
potentiometers }
int tol = analogRead(tole)/4;
%check if the diffirence is in the tolerance void loop()
int avt = (lt + rt) / 2; // average value top else change vertical angle {
int avd = (ld + rd) / 2; // average value if (-1*tol > dvert || dvert > tol) int R1 = analogRead(LDR1); //
down if (avt > avd) reading value from LDR 1
int avl = (lt + ld) / 2; // average value left servov = servov+1;
int avr = (rt + rd) / 2; // average value right if servov > 180; int R2 = analogRead(LDR2); //
servov = 180; reading value from LDR 2
int dvert = avt - avd; // check the end
difference of up and down servoWrite(c,10,servov);
int dhoriz = avl - avr;// check the end int diff1= abs(R1 - R2); //
diffirence of left and right Calculating the difference between
else if (avt < avd) the LDR's
if (-1*tol > dvert || dvert > tol) // check if servov = servov-1;
the difference is in the tolerance else change if (servov < 0)
vertical angle servov = 0; int diff2= abs(R2 - R1);
{ end
if (avt > avd) servoWrite(c,10,servov); if((diff1 <= error) || (diff2 <= error))
{ end {
servov = ++servov; //if the difference is under the
if (servov > 180) %servoWrite(c,10,servov); error then do nothing
{ end }
servov = 180;
else {
}
if(R1 > R2)
} %check if the diffirence is in the tolerance
{
else if (avt < avd) else change horizontal angle
initial_position = --
{ if (-1*tol > dhoriz || dhoriz > tol)
initial_position; //Move the servo
servov= --servov; if (avl > avr)
towards 0 degree
if (servov < 0) servoh = servoh-1;
}
{ if (servoh < 0)
if(R1 < R2)
servov = 0; servoh = 0;
{
} end
initial_position =
} servoWrite(c,9,servoh);
++initial_position; //Move the servo
vertical.write(servov); end
towards 180 degree
}
}
else if (avl < avr)
}
if (-1*tol > dhoriz || dhoriz > tol) // check servoh = servoh+1;
sg90.write(initial_position); // write
if the diffirence is in the tolerance else if (servoh > 180)
the position to servo
change horizontal angle servoh = 180;
{ end
if (avl > avr) servoWrite(c,9,servoh); delay(100);
{ end }
servoh = --servoh;
if (servoh < 0) %servoWrite(c,9,servoh);
{
servoh = 0; end
}
} end
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > 180)
{
servoh = 180;
}
}
else if (avl = avr)
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
}

Você também pode gostar