// #include <QuantSensors.h> // для Arduino IDE
#include "QuantSensors.h" // для Wokwi
QuantLine line;//можна написати іншу назву
int black[8];// масив
void setup(){
Serial.begin(9600);
line.begin(true);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void loop(){
// f();
for (uint8_t i = 0; i < 8; i++) {
black[i] = map(line.readLineSensor(i), 0, 1024, 0, 9);//black
Serial.print(black[i]);
Serial.print("\t");
} Serial.println();
if ( black[0] and black[1] and black[2] and black[3] and
black[4] and black[5] and black[6] and black[7] ){
Serial.println("all"); digitalWrite(5,0);digitalWrite(9,0);
}else if( !black[0] and !black[1] and !black[2] and !black[3] and
!black[4] and !black[5] and !black[6] and !black[7] ){
Serial.println("white all"); digitalWrite(5,0);digitalWrite(9,0);
}else if( black[0] or black[1] ){
Serial.println("L"); l(10);
}else if( black[2] or black[3] or black[4] or black[5] ){
Serial.println("center"); f();
}else if( black[6] or black[7] ){
Serial.println("R"); r(100);
}
}
int s = 100; //speed змінна
// forward-вперед
void ff(){
analogWrite(5, s*0.4445); //лівий мотор швидкість
digitalWrite(6, LOW); //лівий мотор напрям
analogWrite(9, 255-s); //правий мотор швидкість
digitalWrite(10, HIGH);//правий мотор напрям
}
float leftCal = 1.0;
float rightCal = 0.95;
void setMotors(int leftSpeed, bool leftForward, int rightSpeed, bool rightForward) {
analogWrite(5, constrain(leftSpeed * leftCal, 0, 255)); // PWM лівого
digitalWrite(6, leftForward ? LOW : HIGH); // напрямок лівого
analogWrite(9, constrain(rightSpeed * rightCal, 0, 255)); // PWM правого
digitalWrite(10, rightForward ? HIGH : LOW); // напрямок правого
}
void f() {
setMotors(s * 0.4445, true, 255 - s, true); // вперед
}
void l(int time) {
setMotors(s * 0.4445, false, 255 - s, true); // поворот ліворуч
}
void r(int time) {
setMotors(s * 0.4445, true, 255 - s, false); // поворот праворуч
}