اطلاعیه

Collapse
No announcement yet.

مشکل اتصال همزمان نمایشگر و موتور پله ای

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل اتصال همزمان نمایشگر و موتور پله ای

    به نام خدا

    میخواستم یک موتور پله ای رو با آردینو اونو کنترل کنم. اول با کد دستی وصلش کردم (بدون کتابخانه). بعد برای افزایش پله های رفتم سراغ میکرکنترلش (طبق کد). البته از یک حدی کمتر به موتور فشار می اومد (اشتباهم چی بود نمیدونم). بعد با کلید (پتانسیومتر) سرعتش تنظیم کردک. بعد در یک برنامه مجزا ال سی دی (دارای ال2سی) و کلید رو تست کردم و دیدم سرعتو نشون میده. در مرحله بعد موتور و کلید و ال سی دی رو همزمان وصل کردم. به مشکل برخوردم. به رسیدن به نقطه شروع چرخش موتور، موتور و ال سی دی هر دو متوقف میشن. با حذف نمایش سرعت روی ال سی دی موتور راه می افته. همچنین با قطع اتصال A5 و A4 هم راه می افته. بنظرتون اشکال کجاست؟
    شیوه اتصال (پایه های 3 5 6 10 به l298N، ولتاژ صفر و 5 از آداپتور به صفر و 12 L298N، ولتاژ 5 برد اونو به 5 درایو، کلید به ولتاژ 0 و پایه صفر و A0، ال سی دی 2 تا اتصال به A4 و A5 , و 2 تا هم به آداپتور)
    فاز بعدی کارم اتصال صفحه کلید و کلید تغییر جهته.

    کد:
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>


    LiquidCrystal_I2C lcd(0x3F, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
    int sim[4] = {3, 10, 5, 6}; //شماره سیمهای موتور
    int takhir = 10;
    int k = 256; // فاصله پله ها
    int l = 3; // حل مشکل سیم چهارم
    void setup() {
    pinMode(sim[0], OUTPUT); //عملکرد سیمهای موتور
    pinMode(sim[1], OUTPUT);
    pinMode(sim[2], OUTPUT);
    pinMode(sim[3], OUTPUT);
    pinMode(12, OUTPUT);
    digitalWrite (0, HIGH);
    //برای ولوم
    pinMode(0, OUTPUT);
    digitalWrite (0, HIGH);
    //تا اینجا ولوم
    //LCD
    lcd.init();
    lcd.backlight();
    lcd.setCursor(1, 0);
    lcd.print("Pomp V. 1.0 1396");
    lcd.setCursor(0, 1);
    lcd.print("By: Dr. M.Jafari");
    delay (2500);
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("Speed: ");
    delay(1000);


    //پایان LCD


    analogWrite(sim[3], 1023); //صرفا برای بار اول نیاز است
    }


    void loop() {
    //حلقه ها برای ایجاد یکنواختی در چرخش است
    for (int j = 0; j < 3.2; j++) {
    for (int i = 0; i < 1024; i = i + k) {
    analogWrite(sim[j], i);
    delay (takhir);
    }
    analogWrite(sim[j], 1023);

    for (int i = 0; i < 1024; i = i + k) {
    analogWrite(sim[l], 1023 - i);
    delay (takhir);
    }
    analogWrite (l, 0);
    l = l + 1; //ایجاد ترتیب منظم و رفع مشکل سیم 4
    l = l % 4; //ایجاد ترتیب منظم و رفع مشکل سیم 4

    }
    takhir = analogRead(A0) / 10 + 1; //سرعت چرخش از ولوم
    lcd.setCursor(8, 1);
    lcd.print(takhir);
    }
لطفا صبر کنید...
X