22-09-2017, 18:27
Dzień dobry,
Mam problem ze sterowaniem silnikiem za pomocą arduino i tranzystora.
Kod jakiego używam (steruję przez radio):
Powyższy kod działa tylko z diodą LED - jest poprawnie włączana i wyłączana, natomiast silnik włącza się poprawnie, ale nie wyłącza się.
Aby rozwiązać ten problem próbowałem zmienić kod na poniższy:
Wtedy silnik pracuje poprawnie (wg kodu) czyli włącza się na 5 sekund i po upływie tego czasu wyłącza się poprawnie.
Schemat do sterowania tranzystorem jaki używam możecie zobaczyć tutaj: http://www.dummies.com/computers/arduino...e-arduino/
Czy jest jakiś sposób aby układ współpracował z silnikiem poprawnie?
Z góry dziękuję za pomoc.
Mam problem ze sterowaniem silnikiem za pomocą arduino i tranzystora.
Kod jakiego używam (steruję przez radio):
Kod:
#include <RCSwitch.h>
#define SIGNAL_START 1
#define SIGNAL_STOP 2
#define MOTOR_PIN 9
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
pinMode(MOTOR_PIN, OUTPUT);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
int prevValue = SIGNAL_STOP;
bool valueChanged = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if(prevValue != value) {
lastDebounceTime = millis();
prevValue = value;
valueChanged = true;
}
mySwitch.resetAvailable();
}
if(valueChanged && (millis() - lastDebounceTime) > debounceDelay) {
if(prevValue == SIGNAL_START ||
prevValue == SIGNAL_STOP) {
Serial.println(prevValue == SIGNAL_START ? "ON" : "OFF");
digitalWrite(MOTOR_PIN,
prevValue == SIGNAL_START ? HIGH : LOW);
valueChanged = false;
}
}
}
Powyższy kod działa tylko z diodą LED - jest poprawnie włączana i wyłączana, natomiast silnik włącza się poprawnie, ale nie wyłącza się.
Aby rozwiązać ten problem próbowałem zmienić kod na poniższy:
Kod:
if(valueChanged && (millis() - lastDebounceTime) > debounceDelay) {
if(prevValue == SIGNAL_START ||
prevValue == SIGNAL_STOP) {
digitalWrite(MOTOR_PIN, HIGH);
delay(5000);
digitalWrite(MOTOR_PIN, LOW);
delay(5000);
}
}
Wtedy silnik pracuje poprawnie (wg kodu) czyli włącza się na 5 sekund i po upływie tego czasu wyłącza się poprawnie.
Schemat do sterowania tranzystorem jaki używam możecie zobaczyć tutaj: http://www.dummies.com/computers/arduino...e-arduino/
Czy jest jakiś sposób aby układ współpracował z silnikiem poprawnie?
Z góry dziękuję za pomoc.