mám NodeMCU s ESP8266 a k němu motor shield ( https://arduino-shop.cz/arduino/1456-sh ... p-12e.html ). Připojil jsem dva motory, řízení přes PWM mi funguje v pořádku, ale pokud zkusím změnit směr (ten driver by měl mít H můstek), motory se zastaví.
Ať dělám, co dělám, kdykoli nastavím piny 0 nebo 2 na LOW, odpovídající motor zastaví na tak dlouho, dokud pin nevrátím na HIGH.
Motory a shield jsou napájeny zvlášť (dva zdroje se společnou zemí), obojí 6V. Jumper nastavení napájení na motor shieldu jsem sundal.
Vycházel jsem hlavně tady z toho:
https://hackaday.io/project/8856-incuba ... tor-shield
Po dlouhém googlení jsem narazil na problém, že někomu trvalo 10-15 vteřin, než se motory v opačném směru rozjely. Zkusil jsem různé kombinace (např. PWM na 0, DIR na LOW, počkat, PWM na 1000, počkat) s dobou čekání 5 minut, nic se nezměnilo.
Dokonce jsem zkoušel otočit i polaritu na motorech, jestli se vůbec umí točit na opačnou stranu, umí
Vzhledem k tomu, že na ty piny reaguje a jiné už by ten motor shield neměl používat, předpokládám, že nastavuji správné piny.
Demonstrační příklad:
Kód: Vybrat vše
#include <Wire.h>
#define DIRL 0
#define DIRR 2
#define PWML 5
#define PWMR 4
;
void setup() {
pinMode(DIRL, OUTPUT);
pinMode(DIRR, OUTPUT);
pinMode(PWML, OUTPUT);
pinMode(PWMR, OUTPUT);
analogWrite(PWMR,0);
analogWrite(PWML,0);
digitalWrite(DIRL,HIGH);
digitalWrite(DIRR,HIGH);
delay(3000);
//směrové piny jsou na HIGH, PWM nastavím na 1000, motory jedou dopředu
analogWrite(PWMR,1000);
analogWrite(PWML,1000);
delay(3000);
//směrové piny nastavím na LOW, PWM zase na 1000, motory se zastaví
digitalWrite(DIRL,LOW);
digitalWrite(DIRR,LOW);
analogWrite(PWMR,1000);
analogWrite(PWML,1000);
delay(3000);
//směrové piny vrátím na HIGH, PWM na 1000, motory zase jedou
digitalWrite(DIRL,HIGH);
digitalWrite(DIRR,HIGH);
analogWrite(PWMR,1000);
analogWrite(PWML,1000);
delay(3000);
}
void loop() {
}