Здравствуйте. Хочу запилить управление движком от джойстика. слепил код из скетча управления машинкой через nrf24l01. Но не работает И не пойму где ошибка. подскажите в чем проблема и как решить) Код (C++): const int in1 = 7 ; const int in2 = 6; const int ena = 5; const int X_pin = 0; //джой ось Х const int Y_pin = 1; // джой ось Y const int button = 2; //джой кнопка int msg[1]; int data; //память int fspeed; //переменная скорости вперед int bspeed; //переменная скорости назад int znach_X_pin; //переменная для записи данных с X_pin; int znach_Y_pin; //переменная для записи данных с Y_pin; void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(ena, OUTPUT); pinMode(button, OUTPUT); digitalWrite(button, HIGH); Serial.begin(115200); } void loop() { joy(); //val_1 = analogRead(X_pin),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1); znach_Y_pin = analogRead(Y_pin),znach_Y_pin = map(Y_pin, 0, 1023, 0, 255), msg[0] = znach_Y_pin; if (msg[0] >=128 && msg[0] <=189)data = msg[0], bspeed = map(data, 255, 201, 0, 255), backward(bspeed); if (msg[0] >=201 && msg[0] <=255)data = msg[0], fspeed = map(data, 189, 128, 0, 255), forward(fspeed); if (msg[0] >190 && msg[0] <200)data = msg[0], stop(); } void stop() { analogWrite(ena, 0); digitalWrite(in1, LOW); digitalWrite(in2, LOW); } void forward(int fspeed) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena, fspeed); } void backward(int bspeed) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(ena, bspeed); } void joy() { Serial.print("switch: "); Serial.print(digitalRead(button)); Serial.print("\n "); Serial.print("X-axis: "); Serial.print(analogRead(X_pin)); Serial.print("\n "); Serial.print("Y-axis: "); Serial.print(analogRead(Y_pin)); Serial.print("\n "); Serial.print("\n "); delay(500); } джой работает, в сериале все окей. но когда двигаешь джой по оси, не отвечает мотор-редуктор. двиг проверял на другом скетче, тоже все окей.
Никогда не пишите операторы через запятую и тем более не показывайте такой код людям. map(Y_pin, 0, 1023, 0, 255) - это что?
map(value, fromLow, fromHigh, toLow, toHigh) Функция пропорционально переносит значение (value) из текущего диапазона значений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный параметрами. Y_pin - переменная, в которую записываем положение джойстика по оси ординат, и эту же переменную будем "маштабировать" 0 - минимальное значение;(джой вниз) 1023 - максимальное значение;(джой вверх) 0 - минимальное значение, для двигла;(скорость вращение, т.е не крутится) 255 - отмаштабированное 1023, тоже для двигла( максимальная скорость вращения двигла)
Спасибо) уже мозги не варили, вот и не заметил) все работает) но чуть не так) тут уже будет дело с маштабированием)