создал библиотеку для контроля за дс мотором

pet_andrey
Offline
Зарегистрирован: 20.10.2017

Но она чтото не работает, думаю с иф намудрил, ктото может глянуть глазом?

#include "Motors.h"
MotorClass::MotorClass (int pE, int pI1, int pI2)
{
pinE=pE;
pinI1=pI1;
pinI2=pI2;
pinMode (pinE, OUTPUT);
pinMode (pinI1, OUTPUT);
pinMode (pinI2, OUTPUT);
Power = 0;
SpeedChanging = false;
}

void MotorClass::RunMotor (int motorpower)

{
if (motorpower>0) {digitalWrite(pinI1, LOW);
	                digitalWrite(pinI2, HIGH);}
if (motorpower<0) {digitalWrite(pinI1, HIGH);
	                digitalWrite(pinI2, LOW);}
if (motorpower=0) {digitalWrite(pinI1, LOW);
	                digitalWrite(pinI2, LOW);}
digitalWrite (pinE, abs(Power));
}

void MotorClass::SetSpeed (int newspeed, int smooth)

{
ReqPower=(int)newspeed*2.55;
if (ReqPower>=Power) StartPowerStep=1;
else StartPowerStep=-1;
StartTimeStep=smooth;
StartTimer=millis();
SpeedChanging=true;
}

void MotorClass::UpdateSpeed()

{
if (SpeedChanging)
if ((millis()-StartTimer)>= StartTimeStep){
if (Power!=ReqPower){
Power+=StartPowerStep;
RunMotor (Power);
StartTimer=millis();
}
else
SpeedChanging=false;
}
}

 

pet_andrey
Offline
Зарегистрирован: 20.10.2017

блин глаз замылился, наверное в runmotor надо AnalogWrite, а не digitalWrite. жаль только завтра проверю.

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

pet_andrey пишет:

наверное ... надо 

Да тут до хрена чего надо, начиная с того, что код надо выкладывать полностью - здесь даже типы данных непонятны и заканчивая тем, что строки №№ 21 и 22 абсолютно лишние, т.к. условие в строке №21 не может быть истинным ни при каких обстоятельствах.

pet_andrey
Offline
Зарегистрирован: 20.10.2017

а останавливать мотор как будем? или мы постоянно только ехать будем?

#ifndef MotorS
#define Motors
#include "Arduino.h"
class MotorClass
{
public:
byte pinE;
byte pinI1;
byte pinI2;
boolean SpeedChanging;
unsigned long StartTimer;
int StartTimeStep;
int StartPowerStep;
int ReqPower;
int Power;
int Direction;

MotorClass (int pE, int pI1, int pI2);
void RunMotor (int motorpower);
void SetSpeed (int newspeed);
void SetSpeed (int newspeed, int smooth);
void UpdateSpeed ();
};
#endif

 

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

pet_andrey пишет:

а останавливать мотор как будем? или мы постоянно только ехать будем?

Это вопрос ко мне по поводу строк №№ 21-22? Вы уж цитируйте о чём речь. Если о них, то, судя потому, что написано в коде, никак не будете останавливать.

Вы, возможно, невнимательно прочитали то, что я написал. Попробуйте ещё раз, я выделю ключевые слова:

ЕвгенийП пишет:
условие в строке №21 не может быть истинным ни при каких обстоятельствах.
А это значит, что никак и никогда не будете останавливать :-(

pet_andrey
Offline
Зарегистрирован: 20.10.2017

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

pet_andrey пишет:

а останавливать мотор как будем? или мы постоянно только ехать будем?

Это вопрос ко мне по поводу строк №№ 21-22? Вы уж цитируйте о чём речь. Если о них, то, судя потому, что написано в коде, никак не будете останавливать.

Вы, возможно, невнимательно прочитали то, что я написал. Попробуйте ещё раз, я выделю ключевые слова:

ЕвгенийП пишет:
условие в строке №21 не может быть истинным ни при каких обстоятельствах.
А это значит, что никак и никогда не будете останавливать :-(

я понимаю, что вы скорее гуру, а не могли бы так сказать снизойти и холопам обьяснить, в частности мне или ткнуть носом где почитать?

lilik
Offline
Зарегистрирован: 19.10.2017

 Вам подсказали уже, в 21 строке  = это присвоить значение, а не сравнить ( аналог в математике = это равно, а == это тождественно равно)

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

pet_andrey пишет:

я понимаю, что вы скорее гуру, а не могли бы так сказать снизойти 

Да ну какие ж из нас гуру? Гуру, оне "библиотеки" пишут, такие, как в первом посту. 

pet_andrey
Offline
Зарегистрирован: 20.10.2017

 а ведь можно было без пафоса сказать, что присваиваешь, а не сравниваешь, когда сидишь и думаешь как сделать, глаз то замыливается.

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

pet_andrey пишет:

 а ведь можно было без пафоса сказать, что присваиваешь, а не сравниваешь, когда сидишь и думаешь как сделать, глаз то замыливается.

Я почти никогда не говорю прямо. Считаю это неуважением к собеседнику. Я лишь слегка подталкиваю человека к решению и оставляю ему возможность найти ошибку самому, (а заодно заявить, что он всё нашёл сам, а я - мудак - нихрена не помог, что часто и слышу).

Вам может нравиться такая моя манера или не нравиться - это Ваше дело. Я считаю нужным поступать так. В конце концов, найти ошибку самому (пусть и небольшого пинка) - это гораздо приятнее, чем когда тебе её на блюдечке выложили (для меня, по крайней мере).

А пафоса я здесь никакого не вижу.

P.S. Опять неправильно помогаем :-(

pet_andrey
Offline
Зарегистрирован: 20.10.2017

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

pet_andrey пишет:

 а ведь можно было без пафоса сказать, что присваиваешь, а не сравниваешь, когда сидишь и думаешь как сделать, глаз то замыливается.

Я почти никогда не говорю прямо. Считаю это неуважением к собеседнику. Я лишь слегка подталкиваю человека к решению и оставляю ему возможность найти ошибку самому, (а заодно заявить, что он всё нашёл сам, а я - мудак - нихрена не помог, что часто и слышу).

Вам может нравиться такая моя манера или не нравиться - это Ваше дело. Я считаю нужным поступать так. В конце концов, найти ошибку самому (пусть и небольшого пинка) - это гораздо приятнее, чем когда тебе её на блюдечке выложили (для меня, по крайней мере).

А пафоса я здесь никакого не вижу.

P.S. Опять неправильно помогаем :-(

спасибо, что помогаем, остальное не важно, больше грубых косяков нету? Спасибо за помощь. ткните всетаки в какую литературу или примеры, сложных программ?!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

pet_andrey пишет:

 а ведь можно было без пафоса сказать, что присваиваешь, а не сравниваешь, когда сидишь и думаешь как сделать, глаз то замыливается.

Так откуда ж знать, что именно Вам нужно? Вы об этом нигде не пишете (кстати, именно это - одна из основных целей написания комментариев - чтобы можно было сравнить, что хочет автор, и что получается в коде, но Вы этой возможностью пренебрегли).

Вы употребили синтаксически верную конструкцию. Зачем Вы ее употребили, никому кроме Вас неизвестно. Но производимые этой конструкцией действия вызывают некоторые сомнения. О чем Вам прямо сообщили. Чего ж Вам еще надо?