15-06-2017, 17:52
Cześć. Mam zamiar zrobić silniki DC sterowane pilotem ale jak narazie wszystko idzie jak najgorzej...
Po podłączeniu całego układu oraz podczerwieni napisałem sterownik który na chłopski rozum powinien działać ale nie chce...
Co rozumiem poprzez nie chce? Po klikaniu na przyciski +/- PWM zmniejsza się i zwiększa lecz silnik nie startuje... dopiero gdy PWM dojdzie do 255 to silnik gwałtownie rusza..
Pomoże ktoś aby silnik powolutku przy każdym naciśnięciu przycisku ruszał coraz to szybciej lub wolniej?
Niżej zamieszczam cały kod:
napewno nie jest to wina złego podłączenia do sterownika, bo poprzez pętle for normalnie silnik się rozpędza.. Prosze o pomoc, pozdrawiam
Po podłączeniu całego układu oraz podczerwieni napisałem sterownik który na chłopski rozum powinien działać ale nie chce...
Co rozumiem poprzez nie chce? Po klikaniu na przyciski +/- PWM zmniejsza się i zwiększa lecz silnik nie startuje... dopiero gdy PWM dojdzie do 255 to silnik gwałtownie rusza..
Pomoże ktoś aby silnik powolutku przy każdym naciśnięciu przycisku ruszał coraz to szybciej lub wolniej?
Niżej zamieszczam cały kod:
Kod:
#include <IRremote.h>
#define irPin 3
IRrecv irrecv(irPin);
decode_results results;
int pwm = 50;
void setup() {
pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1
pinMode(10, OUTPUT);
pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1
pinMode(8, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
switch (results.value){
case 0x1002C2D:
pwm=pwm+5;
Serial.print("+ ");
Serial.println(pwm);
analogWrite(6, pwm);
digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
digitalWrite(8, HIGH);
analogWrite(10, pwm);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
break;
case 0x100ACAD:
pwm=pwm-5;
Serial.print("- ");
Serial.println(pwm);
analogWrite(6, pwm);
digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
digitalWrite(8, HIGH);
analogWrite(10, pwm);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
break;
case 0x1009293:
analogWrite(6, pwm);
analogWrite(10, pwm);
digitalWrite(6, LOW);
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
break;
default:
Serial.print("Nie zostałem zaprogramowany dla tego przycisku.. Jest to: ");
Serial.print("0x");
Serial.println(results.value, HEX);
break;
}
irrecv.resume();
}
}
napewno nie jest to wina złego podłączenia do sterownika, bo poprzez pętle for normalnie silnik się rozpędza.. Prosze o pomoc, pozdrawiam