سلام . من برنامه زیر رو نوشتم . این برنامه به صورت ریموت قراره سرعت موتور رو کنترل کنه . از گیرنده ریموت 4 تا سیگنال دیجیتال میاد و به صورت digitalRead دریافت میشه . key1_jelo و key2_aghab برای حرکت به جلو وعقب هستند . و key3_inc_speed و key4_dec_speed هم برای افزایش و کاهش سرعت هستند که روی PWM خروجی از پایه 5 (potout) تاثیر میذارن . مقدار اولیه PWM رو 160 تنظیم می کنم . حالا مشکل من اینه که وقتی که کلید key3_inc_speed رو فشار می دم ، اول کار تقریبا به صفر میرسه و بعد شروع به افزایش میکنه .
. چرا به صفر میرسه ؟ . این تو برنامه من خیلی مشکل سازه . من نوشتم که potval به مقدار 5 تا اضافه بشه ، پس چرا اول به صفر میرسه ؟
شدیدا به کمک یه آدم خبره نیاز دارم ، خودم خیلی روش کار کردم ، نمیتونم باگش پیدا کنم .
int pot = 0;
int potout = 5;
int potval;
int key1_jelo = 9;
int key2_aghab= 10;
int key3_inc_speed = 11;
int key4_dec_speed= 12;
int en1 = 3;
int en2 = 4;
void setup() {
pinMode(potout , OUTPUT);
pinMode(key1_jelo , INPUT);
pinMode(key2_aghab , INPUT);
pinMode(key3_inc_speed , INPUT);
pinMode(key4_dec_speed , INPUT);
pinMode(en1 , OUTPUT);
pinMode(en2 , OUTPUT);
int potval = 160;
//setPwmFrequency(potout, 1);
analogWrite(potout , potval );
}
void loop() {
if (digitalRead(key1_jelo) == HIGH){
digitalWrite(en2 , LOW);
delay(300);
digitalWrite(en1 , HIGH);
}
else if(digitalRead(key2_aghab) ==HIGH){
digitalWrite(en1 , LOW);
delay(300);
digitalWrite(en2 , HIGH);
}
else{
digitalWrite(en1 , LOW);
digitalWrite(en2 ,LOW );
}
if (digitalRead(key3_inc_speed) == HIGH)
{
if (potval <230)
{
potval = potval+5;
analogWrite(potout , potval );
delay(100);
}
}
else if(digitalRead(key4_dec_speed) == HIGH){
if (potval >150){
potval = potval-5;
analogWrite(potout , potval );
delay(100);
}
}
}