Mega 2560 двигатели
- Войдите на сайт для отправки комментариев
Сб, 07/05/2022 - 19:27
Здравствуйте. Есть ардуино Mega к ней подключен двигатель. И вот такой код
#define X_EN 38 #define X_STP A0 #define X_DIR A1 #define SLEEP 250 void setup() { pinMode(X_EN, OUTPUT); pinMode(X_STP, OUTPUT); pinMode(X_DIR, OUTPUT); digitalWrite(X_EN, LOW); digitalWrite(X_DIR, LOW); } void move_x_one(int p) { for (int i=0; i <= p; i++) { digitalWrite(X_STP, HIGH); delayMicroseconds(SLEEP); digitalWrite(X_STP, LOW); delayMicroseconds(SLEEP); } } void loop() { if (Serial.available() > 0) { switch (Serial.read()) { case 'X': x=Serial.parseInt(); if(x>0) { digitalWrite(X_DIR, LOW); } else { digitalWrite(X_DIR, HIGH); x=-x; } move_x_one(x); break; } } }
пишу X1000 двигается вправо, X-1000 двигается влево. Проблема в том что как только я пишу X50000 должно двигаться вправо, а двигается влево. Оо
этот код не может скомпилироваться без ошибок!
повангую, там где то стоял int, а надо int32_t.
теперь компилируется без ошибок, но вопрос остаётся)
Программа работает так, как написана.
А Вам рекомендую вспомнить диапазон представления чисел различных типов. Если выдумаете, что int x=50000 положительное число, Вы ошибаетесь.
double?
Не нужно гадать, нужно книжки читать.
long int
andriano
Вас понял. Заработало. Спасибо.
int32_t если интересно
если интересно
нет
int32_t если интересно
это вам в первом жеж посте сказали
int32_t если интересно
это вам в первом жеж посте сказали
Вы правы. xDriver благодарю.