Seri haberleşme DC motor akıllı duraklama
  • Kolay gelsin arkadaşlar
    Bir web yazılımımız var web yazılımımız ile seri bağlantısını sorunsuz bir şekilde yaptık tx veri alma rx veri verme web yazılımımız gereği veri verme RX ışığı bazen 5 bazen 10 bazen 50 sefer yanabiliyor buraya kadar sorunsuz bağlantı şemamız (WEB YAZILIM- ARDUİNO - L298N - DC MOTOR - SENSÖR) buraya kadar tamam ama DC motorumuz tamamı ile zamana bağlı çalışıyor bizim istediğimiz DC motorumuz tamamı ile sayaca bağlı çalışsın sensör rx ışığına bağlı olarak sayı tamamlanınca DC motor a dur komutu göndersin sensör sayı tamamlanmadan DC motor sürekli dönsün ?RX WEB YAZILIMIMIZ İLE ORTAK ŞEKLİDE SAYILARI DÜZGÜN SAYIYOR AMA DC MOTOR TAMAMI İLE ZAMANA BAĞLI ÇALIŞIYOR .

    int INA = 7;
    int INB = 8;
    int hiz = 0;
    int incomingByte;

    void setup() {

    Serial.begin(9600);
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
    }

    void loop() {
    if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'H') {
    geri();
    }
    if (incomingByte == 'L') {
    dur();
    }
    }
    }

    void ileri()
    {
    digitalWrite(INA, LOW);
    digitalWrite(INB, HIGH);
    }
    void geri()
    {
    digitalWrite(INA, HIGH);
    digitalWrite(INB, LOW);
    }
    void dur()
    {
    digitalWrite(INA, LOW);
    digitalWrite(INB, LOW);
    }
  • Kodu inceleyecek bir arkadaş yok mu
  • Yokmu kimse
  • burada olmayan nedir anlamadık. H gelince hareket mi etmiyor ne oluyor
  • Valla kardeşim yanlış anlamada ya yazdıklarımı okumadın yada anladığın pek bir şey yok yazdığım yazıda yeterince net açıkladığımı düşünüyorum
  • Peki yazdığın kod içerisinde,
    "WEB yazılımımız ile sayıları ortak düzgün sayıyor" dediğin sayı nerede ?
    "DC motor tamamı ile zamana bağlı çalışıyor" dediğin zaman nerede ?
    "rx ışığına bağlı sayı" dan kastın ney ?
    "rx ışığı bazen 10 bazen 50 sefer yanabiliyor" gibi belirsiz bir ifade söyleyebiliyorsan nasıl olurda tam anlamıyla kontrol edemediğin birşeye motoru bağlamak istiyorsun ?

    Biraz daha açıklayıcı olman gerek ki yardımcı olabilelim
  • Sayı rx ışığı. Zamanda rx ışığına bağlı . Sistemde bazen 50 bazen 10 dediğimde rx ışığı. yani herşeyi unutup rx ışığına odaklanalım . Rx ışığımız yazılım ile ortak bir şekilde gereken neyse yapıyor. Yazılımımızın gönderdiği sinyalleri arduino sorunsuz bir şekilde rx led ile sayıyor 50 ise 50 sefer rx yanıp sönüyor 10 ise 10 sefer rx yanıp sönüyor buraya kadar sorunsuz yani kısacası yazılımın gönderdiği sinyalleri arduino sayıyor buraya kadar sorunsuz .Buradan sonrası iki tane çıkış pinimiz var 7 ve 8 / çıkış pinleri-l298n-dc motor-sensör / dolayısıyla rx led yanıp sönmeye başlayınca DC motor dönmeye başlıyor 50 sefer yanıp sönüyorsa örnek veriyorum 30 sn boyunca DC motor dönüyor zamandan kastım budur tamamı ile zamana bağlı çalışıyor eee sorun nerde kaldı ? (SENSÖR DEVRE DIŞI ... RX IŞIĞININ YAZILIMDAN ALDIĞI SAYILAR ANLAMSIZ... DC MOTOR TAMAMI İLE ZAMANA BAĞLI... YAPTIĞI İŞLEMİN RX İLE HİÇ BİR ALAKASI YOK BU YÜZDEN EKSİK FAZLA İŞLEM YAPABİLİYOR... ) Bizim istediğimiz rx 50-5-10-20 herneyse kaç sefer yanıyorsa DC motor dönmeye başlasın (AMA ZAMANA BAĞLI DEĞİL) sensör saymaya başlasın ve sayı tamamlanınca DC motora dur komutu göndersin . Sensör yeterli sayıya ulaşmadığı takdirde DC motor durmasın. Şimdiden teşekkür ederim.
  • https://i.hizliresim.com/ALz0gq.png şöyle bir bağlantı şemamız var ama sensör den saydıramıyoruz ve sensör ile arduino arasında herhangi bir bağlantı yapamıyoruz
  • Bir bilgisayar yazıcısı düşünelim bir sayfa yazı yazıp yazıcıya bir sayfa yazı yaz komutu gönderdiğimizde tam bir sayfa yazar ne eksik ne fazla yazar bizim sistem eksik fazla yazıyor işlemde buna benzer bizde bu komutu arduino ya gönderiyoruz rx ışığımız bu komutu sorunsuz algılıyor ama arduino dan öteye akıllı sistem devreden çıkıyor sayıların bir anlamı kalmıyor
    örnek veriyorum bizim sistemde rx ışığı yanma
    Zaman karşılıkları:
    rx ışığı 50 sefer =25 sn DC motor dönme
    rx ışığı 10 sefer =5 sn DC motor dönme
    rx ışığı 5 sefer =2.5 sn DC motor dönme

    Bizim istediğimiz bu zaman sürelerini silelim DC motor sinyali aldığında dönmeye başlasın sensör rx ışığı ile ortak hareket etsin sayı tamamlanmadan durmasın ...
  • Benim kapasitem anlamaya yetmedi dostum kusura bakma.
    Anlama olayını aşamayınca malesef ki çözüm aşamasına gelemiyorum.
  • Teşekkürler :)
  • yapılmak istenen ile verilen arduino kodunun hiç bir alakası yok.
  • Olabilir kardeşim ama dediğimiz yere kadar arduino çalıştırıyor sorun kodda belki de en başından beri yanlış yazmışız
  • int INA = 6;
    int INB = 8;
    int PARA = 2;
    int hiz = 0;
    int BUTON = 1;
    int say = 0;
    int HIZ = 255;
    int durum = 0;
    int incomingByte;
    String readString;
    int n;

    unsigned long int timer_var1;
    void setup() {


    Serial.begin(9600);
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
    pinMode(PARA, INPUT_PULLUP);
    pinMode(3, INPUT_PULLUP);
    // Serial.println("RESET" );
    // attachInterrupt(1,wakeUpNow, RISING);

    }
    //void wakeUpNow()
    //{
    //
    //
    //
    //if ((n > 0) && (millis() - timer_var1) > 200) {
    //say = say + 1;
    //
    //timer_var1 = millis();
    // Serial.print(say );
    // Serial.print(":" );
    // Serial.println(n );
    //
    //
    //if (say == n){
    // analogWrite(INA, 0);
    //say=0;
    //n=0;
    // Serial.println("DUR" );
    //dur();
    //
    //}
    //
    // }
    //}
    //

    void loop() {

    BUTON = digitalRead(PARA);
    if (BUTON == 0) {
    Serial.println("F2" );
    delay(100);
    }

    if ((digitalRead(3)== LOW)&& ( durum == 0)) {
    // Serial.println("BOS" );
    durum = 1;
    }
    if ((digitalRead(3)== HIGH)&& ( durum == 1)) {
    // Serial.println("YUKSEK" );
    durum = 2;
    }


    if ((digitalRead(3)== LOW)&& ( durum == 2)) {
    // Serial.println("ALGI" );
    durum = 0;


    say = say + 1;


    // Serial.print(say );
    // Serial.print(":" );
    // Serial.println(n );


    if (say == n){
    analogWrite(INA, 0);
    say=0;
    n=0;
    // Serial.println("DUR" );
    dur();

    }



    }







    //
    while (Serial.available()) {
    char c = Serial.read(); //gets one byte from serial buffer
    readString += c; //makes the string readString
    delay(2); //slow looping to allow buffer to fill with next character
    }

    if (readString.length() >0) {
    // Serial.println(readString); //so you can see the captured string
    n = readString.toInt(); //convert readString into a number

    // auto select a0500ppropriate value, copied from someone elses code.
    if ((n >= 1) && (n<1000))<br /> {

    say=0;
    // Serial.print("SAYI:" );
    // Serial.println(n );
    ileri();

    } else {
    dur();
    }

    readString=""; //empty for next input
    }
    }

    void ileri()
    {
    analogWrite(INA, HIZ);
    }

    void dur()
    {
    analogWrite(INA, 0);
    digitalWrite(INA, LOW);
    }

    BU kodu inceleyebilirmisiniz arkadaşlar teşekkür ederim.
  • inceledim teşekkürler.
  • Yanlışlık nerde :)
  • arkadaşlar bir soru sordum soruyu pek anlatamadım galiba tam olarak istediğim bu mantıkta

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.