///////////// МАНИПУЛЯТОР ДЛЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ скетч №3 две цифры по установке потенциометром //////////////////////////////
#include <Servo.h> // подключение библиотеки Servo
Servo servo1;//указываем сервопривод основного поворота (при увел. угла - поворот рычага ВЛЕВО)
Servo servo2;//указываем сервопривод дополнительного поворота (при увел. угла - поворот рычага ВПРАВО)
Servo servo3;//указываем сервопривод подъёмника (при увел. угла - поворот рычага ВВЕРХ)
int a01=70;//начальный угол
int a02=75;
int a03=125;
int da1=15;int da2=50;//переменные задающие изменение углов
int a1;//переменные хранения текущих углов поворота
int a2;
int a3;
int r=1;//счётчик прохода программы в loop()
int n=20;// единица временного интервала
int j;// переменная для выбранной цифры
//int tablA[12]={a01,a02, a01+da2/4,a02+da2/2, a01+da2/2,a02+da2, a01+da2/2-da1,a02+da2, a01+da2/4-da1,a02+da2/2, a01-da1,a02};//данные угловых координат точек сегментов
int tablB[70]={1,1,1,1,1,1,0,
0,0,0,1,1,0,0,
1,0,1,1,0,1,1,
0,0,1,1,1,1,1,
0,1,0,1,1,0,1,
0,1,1,0,1,1,1,
1,1,1,0,1,1,1,
0,0,1,1,1,0,0,
1,1,1,1,1,1,1,
0,1,1,1,1,1,1,};//коды цифр от 0 до 9
void setup()
{
servo1.attach(5);// подключаем переменную servo к соответствующему выводу платы Ардуино
servo2.attach(6);
servo3.attach(7);
servo1.write(a01);//начальная установка положения
servo2.write(a02);
servo3.write(a03);
delay(2000);
}
void loop()
{
if (r<3)// условие числа рисуемых цифр
{int tablA[12]={a01,a02, a01+da2/4,a02+da2/2, a01+da2/2,a02+da2, a01+da2/2-da1,a02+da2, a01+da2/4-da1,a02+da2/2, a01-da1,a02};//данные угловых координат точек сегментов
a3=a03;
j=analogRead(A0)/108;// выбор-считывание установленной на потенциометре цифры
//////////////////////////////// 1 ////////////////////////////////
if (tablB[(7*j)+0]==1){f_(1);}
a2=a02;a1=a01;servo2.write(a2);servo1.write(a1);
while(a2<tablA[3])
{servo2.write(a2);a2=a2+2;a1=a1+1;servo1.write(a1);delay(n);}
a1=tablA[2];a2=tablA[3];
f_(0);delay(50*n);
/////////////////////////////// 2 /////////////////////////////////
if (tablB[(7*j)+1]==1){f_(1);}
while(a2<tablA[5])
{servo2.write(a2);a2=a2+2;a1=a1+1;servo1.write(a1);delay(n);}
a1=tablA[4];a2=tablA[5];
f_(0);delay(50*n);
/////////////////////////////// 3 /////////////////////////////////
if (tablB[(7*j)+2]==1){f_(1);}
while(a1>tablA[6])
{a1=a1-1;servo1.write(a1);delay(n);}
a1=tablA[6];
f_(0);delay(50*n);
/////////////////////////////// 4 /////////////////////////////////
if (tablB[(7*j)+3]==1){f_(1);}
while(a2>tablA[9])
{servo2.write(a2);a2=a2-2;a1=a1-1;servo1.write(a1);delay(n);}
a1=tablA[8];a2=tablA[9];
f_(0);delay(50*n);
/////////////////////////////// 5 /////////////////////////////////
if (tablB[(7*j)+4]==1){f_(1);}
while(a2>tablA[11])
{servo2.write(a2);a2=a2-2;a1=a1-1;servo1.write(a1);delay(n);}
a1=tablA[10];a2=tablA[11];
f_(0);delay(50*n);
/////////////////////////////// 6 /////////////////////////////////
if (tablB[(7*j)+5]==1){f_(1);}
while(a1<tablA[0])
{a1=a1+1;servo1.write(a1);delay(n);}
a1=tablA[0];
f_(0);delay(50*n);
/////////////////////////////// 7 /////////////////////////////////
while(a2<tablA[3])
{servo2.write(a2);a2=a2+2;a1=a1+1;servo1.write(a1);delay(n);}
a1=tablA[2];a2=tablA[3];
f_(0);delay(50*n);
/////////////////////////////// 8 /////////////////////////////////
if (tablB[(7*j)+6]==1){f_(1);}
while(a1>tablA[8])
{a1=a1-1;servo1.write(a1);delay(n);}
a1=tablA[8];
f_(0);delay(50*n);
r=r+1;a01=a01-da1-5;
}
}
//////функция поднимания-опускания маркера (значения аргумента 0 и 1 соответственно)/////
void f_(int k)
{
while (a3>85&&k==1)
{servo3.write(a3);a3=a3-1;delay(n);}if(k==1){a3=85;}
while (a3<125&&k==0)
{servo3.write(a3);a3=a3+1;delay(n);}if (k==0){a3=125;}
}