Geegrow L298N + motor + joystik

HetotTort
HetotTort аватар
Offline
Зарегистрирован: 19.12.2018

Здравствуйте. Выложу материал по драйверу моторов L298N от компании Geegrow. Собрал схемку подключения одного мотора. Скетч дёрнул тут и немного подправил http://www.cyberforum.ru/arduino/thread1658955.html

https://images2.imgbox.com/3e/f3/F4Swy5VM_o.jpg

 

#include <AFMotor.h>

int enA = 8, in1 = 3, in2 = 9;  //enA = М1

int xValue, yValue;
 
void setup() {
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);

  Serial.begin(9600);
}
 
void loop() {
  xValue = map(analogRead(A2), 0, 1024, -255, 255);
  yValue = map(analogRead(A1), 0, 1024, -255, 255);
 
  Serial.print(xValue);  
  Serial.print("\t");      
  Serial.print(yValue);    
  Serial.print("\t");
  if (xValue >= -0 && xValue <= 0)  {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    Serial.print("X stop\t");
  }
  if (xValue > 0)  {
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    analogWrite(enA, xValue);
    Serial.print("X up\t");
  }
  if (xValue < -0)  {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    analogWrite(enA, -xValue);
    Serial.print("X down\t");
  }
  Serial.println("");
}

По мере движения буду обновлять.

b707
Offline
Зарегистрирован: 26.05.2017

а можно попросить прокомментировать это условие:

 if (xValue >= -0 && xValue <= 0)  {

что такое, по вашему, "минус ноль" и чем он отличается от "просто нуля"?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

а можно попросить прокомментировать это условие:

 if (xValue >= -0 && xValue <= 0)  {

что такое, по вашему, "минус ноль" и чем он отличается от "просто нуля"?

это да, у интов в отличии от флоатов минус ноль не бывает )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

что такое, по вашему, "минус ноль" и чем он отличается от "просто нуля"?

Особенно актуально с учётом того, что xValue имеет тип int.

b707
Offline
Зарегистрирован: 26.05.2017

ua6em,  ЕвгенийП - мужики, вы меня заинтересовали. А что, для флоат запись "-0" чем-то отличается от "просто нуля"?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Таки да. См. http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-tip-float-kak-ne-utonut

Кстати, строка №37 у ТС гораздо интереснее, хотя и не так эффектна.

b707
Offline
Зарегистрирован: 26.05.2017

не, это все понятно, но такой записи, как "-0" я у вас в статье не увидел.

И еще мне кажется, что в условном операторе никакой разницы между  if (x < -0) и (x < 0) быть не может. Не прав?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

а можно попросить прокомментировать это условие:

 if (xValue >= -0 && xValue <= 0)  {

что такое, по вашему, "минус ноль" и чем он отличается от "просто нуля"?

да это просто такая хитровывернутая проверка на равенство 0.  Бьюсь об заклад, ТС не писал этот код и нихрена в ём не смыслит. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

b707 пишет:

а можно попросить прокомментировать это условие:

 if (xValue >= -0 && xValue <= 0)  {

что такое, по вашему, "минус ноль" и чем он отличается от "просто нуля"?

да это просто такая хитровывернутая проверка на равенство 0.  Бьюсь об заклад, ТС не писал этот код и нихрена в ём не смыслит. 

так он об этом прямо так и сказал, что код сдёрнул

b707
Offline
Зарегистрирован: 26.05.2017

умиляет еще, что автор "выложил материал по драйверу". Зачем?

Чем меньше понимает новичок в предмете, тем больше ему хочется "поделится со всеми" своими небогатыми знаниями :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

И еще мне кажется, что в условном операторе никакой разницы между  if (x < -0) и (x < 0) быть не может. Не прав?

Прав, т.к. 0.0 == -0.0. Проблемы отрицатльеность нуля может создать только в специальных, весьма экзотических случаях.

Кстати, пересмотрел тот материал и замелил, что не описал там про особенности округления. Надо бы добавить. Всё же жаль, чпервый пост нельзя редактировать. Может админ наделит меня таким правом? Ну, не студент же я, чтобы запрос курсовой от преподов прятать.

Araris
Offline
Зарегистрирован: 09.11.2012

ЕвгенийП пишет:

Всё же жаль, чпервый пост нельзя редактировать. Может админ наделит меня таким правом?

Я не админ, но помочь могу, выложите желаемый текст первого поста, а я отредактирую.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, не сейчас, там поработать над текстом надо. Мож вечером, если сложится :(

Araris
Offline
Зарегистрирован: 09.11.2012

ОК, выкладывайте, когда будет удобно, в http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-tip-float-kak-ne-utonut , я перенесу в первый пост.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Спасибо.

А с флоатами, там столько граблей ... вот классический примерчик от которого сносит башню у тех, кто никогда об этом не думал.

//
//	Пример на перестановку слагаемых местами
//
#include <Printing.h>

void setup(void) {
	float a = 3.14e8;
	float b = 10;

//	Просто меняем местами слагаемые
	float c = a + b - a;
	float d = a - a + b;
	
	Serial.begin(57600);
	Serial << "c=" << c << "\r\nd=" << d << "\r\n";
}

void loop(void) {}

/////////////////////////////////////////////
//	Результат
//
//	c=0.00
//	d=10.00