Алёша

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); 
}