Электронная часть работает, всё проверено, а вот код - нет. Код: Код (C++): #include <SoftwareSerial.h> int channel; int channel2; byte Speedmotor; int diapazonSpeed; byte iz; byte a; byte b; int max1, max2, min1, min2, maxa1, maxa2, mina1, mina2; //const int ledPin = ; // номер выхода, подключенного к светодиоду //int ledState = LOW; // этой переменной устанавливаем состояние светодиода //long previousMillis = 0; // храним время последнего переключения светодиода //long interval = 400; void setup() { Serial.begin(9600); pinMode(3, INPUT); pinMode(5, INPUT); pinMode(8, OUTPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); pinMode(A4, OUTPUT); // pinMode(ledPin, OUTPUT); a=1; max1=1890 ; //вверх верхний предел min1=1510 ; //вверх нижний предел max2=1490 ; //вниз верхний предел min2=1215 ; //вниз нижний предел maxa1=1820 ; //правый стик (лево-право) правый предел mina1=1520 ; //правый минимум maxa2=1500 ; //левый минимум mina2=1245 ; //левый предел } void loop() { //получаем данные с приемника channel=pulseIn(3,HIGH); channel2=pulseIn(5,HIGH); //мониторим данные Serial.print(channel); Serial.print(" - "); Serial.print(channel2); Serial.print(" - "); Serial.print(Speedmotor); Serial.print(" - "); Serial.print(diapazonSpeed); Serial.print(" - "); Serial.print(b); Serial.print(" - "); Serial.println(iz); //управление мотором if (channel>min1) { //ход вперед digitalWrite(7, LOW); //7 HIGH назад digitalWrite(8, HIGH); //8 HIGH вперед Speedmotor=(channel-min1)/1.5; analogWrite(6, Speedmotor); if (Speedmotor<160 && Speedmotor>0){ diapazonSpeed=2; } if (Speedmotor<255 && Speedmotor>160){ diapazonSpeed=3; } } if (channel>(max1-10)) { //ход вперед max digitalWrite(7, LOW); digitalWrite(8, HIGH); Speedmotor=254; analogWrite(6, Speedmotor); if (Speedmotor<160 && Speedmotor>0){ diapazonSpeed=2; } if (Speedmotor<255 && Speedmotor>160){ diapazonSpeed=3; } } if (channel<max2) { //ход назад digitalWrite(8,LOW); digitalWrite(7,HIGH); Speedmotor=((max2-channel)/1.083); analogWrite(6, Speedmotor); if (Speedmotor<160 && Speedmotor>0){ diapazonSpeed=2; } if (Speedmotor<255 && Speedmotor>160){ diapazonSpeed=3; } } if (channel<(min2+10)) { //ход назад max digitalWrite(8,LOW); digitalWrite(7,HIGH); Speedmotor=254; analogWrite(6, Speedmotor); if (Speedmotor<160 && Speedmotor>0){ diapazonSpeed=2; } if (Speedmotor<255 && Speedmotor>160){ diapazonSpeed=3; } } if (min1>channel && channel>max2 || channel<1100) { //на месте Speedmotor=0; digitalWrite(7,LOW); digitalWrite(8,LOW); analogWrite(6, Speedmotor); diapazonSpeed=1; } //поворотники //unsigned long currentMillis = millis(); //if (min1<channel2 || max2>channel2) { // if(currentMillis - previousMillis > interval) { // // сохраняем время последнего переключения // previousMillis = currentMillis; // // // если светодиод не горит, то зажигаем, и наоборот // if (ledState == LOW) // ledState = HIGH; // else // ledState = LOW; // // digitalWrite(ledPin, ledState); // } // if (mina1>channel2>maxa2){ // digitalWrite(ledPin, LOW); // } //} //звук if (diapazonSpeed != iz){ //Проверяем, не меняется ли скорость iz=diapazonSpeed; if (diapazonSpeed=1) { //Если на месте играем первый трек digitalWrite(A1, HIGH); //Открываем транзистор delay(100); //Время необходимое для срабатывания модуля digitalWrite(A1, LOW); //Закрываем транзистор b=1; //переменная для проверки работы данной части кода } if (diapazonSpeed=2) { //Если движение малой скорости, то if (a=1){ //Если скорость повысилась, то играем следующий трек (малая скорость) digitalWrite(A2, HIGH); //a2 повышение delay(100); //a3 понижение digitalWrite(A2, LOW); b=2; //переменная для проверки работы данной части кода } if (a!=1){ //Если скорость понизилась, то играем предыдущий трек (малая скорость) digitalWrite(A3, HIGH); delay(100); digitalWrite(A3, LOW); a=1; b=3; //переменная для проверки работы данной части кода } } if (diapazonSpeed=3) { //Если движение большей скорости, то играем следующий трек (большая скорость) digitalWrite(A2, HIGH); delay(100); digitalWrite(A2, LOW); a=2; b=2; //переменная для проверки работы данной части кода } // if (diapazonSpeed=4) { // digitalWrite(A4, HIGH); // delay(100); // digitalWrite(A4, LOW); // } } } Данные мониторинга по порядку 1) Верные значения приемника (канал ELEV) 2) Верные значения приемника (канал AILE) 3) значение Speedmotor, тоже верное 4) значение diapazonSpeed=3, это неверно. 5) Значение b=2, это неверно. 6) Значение iz=3, это неверно. Подскажите где копать
Для того чтобы они были верными, нужно объявить из значения. В скетче я этого не вижу. Ткните носом если ошибаюсь.
Переделал byte на int и всё заработало int channel; int channel2; int Speedmotor; int diapazonSpeed; int iz; int a; int b;