Алёша
ROB-75376Мой робот будет следовать по черной линии. Для движения робота по черной линии я установили три датчика. Датчик был установлен вертикально вниз на высоте 0,5-1см, что обеспечило максимальную точность работы. При этом датчик был вынесен перед основной конструкцией робота, для более быстрого реагирования робота на поворотах.
я не стали сильно экспериментировать с конструкцией и собрали стандартную модель. Так же я провел эксперименты с колесами разного диаметра что бы выяснить с какими колесами робот будет развивать большую скорость. Так удалось выяснить, что робот с большими колесами развивает большую скорость, это связано с тем что при одинаковой мощности двигателей диаметр колес оказываю большую разницу в скорости и мощности. Чем больше скорость, тем меньше мощность робота и наоборот.
После сбор , я написал код.
int pinSensor [3]={A0,A1,A2};
int koficent [3]={-1,0,1};
int base=60;
int Kp=1.5;
double P;
void setup() {
pinMode(4,OUTPUT);//в перёд
pinMode(5,OUTPUT);//скорость
pinMode(6,OUTPUT);//скорость
pinMode(7,OUTPUT);//в перёд
pinMode(A0,INPUT);//1 сенсор
pinMode(A1,INPUT);//2 сенсор
pinMode(A2,INPUT);//3 сенсор
Serial.begin(9600);
}
void loop() {
double error=0;
Serial.println(error);
for (int i=0;i<7;i++){
if (digitalRead(pinSensor[i])==LOW){
error=error + koficent[i];
double P = error*Kp; }
}
int right=0;
int left=0;
if(error>0){
right=(int)(P +error *Kp);
left=(int)(P -error *Kp);
Serial.println(right);
Serial.println( left);}
if(error<0){
right=(int)(base -error *Kp);
left=(int)(base + error *Kp);
}
digitalWrite(4,HIGH);//левый
analogWrite(5,left);
digitalWrite(7,HIGH);//правый
analogWrite(6,right);
}