Şimdi Ara

Serial monitordeki hex değerlerini işlemede yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
631
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba, HID'tan sürekli sinyal alabiliyorum, serial monitor'de değişkenler sürekli gözüküyor. HEX formatında. İstediğim olay şu,
    cihaza giriş yapılmadığında aldığım değer X: 01FC Y: 01FC , max durumdaki değerler 03FF ve min değerler 0000
    01FC'den her uzaklaşıldığında, servonun artan hızla saat yönünde dönmesini istiyorum. İşlem mutlak değer içerisinde olmayacağından negatif çıkan sonuçlarda --kod saat yönünde olmasına rağmen-- saat yönünün tersine döneceğini varsayarak bunu söyledim.

    Ayrıca bir servonunda bir değeri gördüğünde belirlenmiş bir hızla belirlenmiş bir yöne dönmesini istiyorum. Mesela A:00 da hareketsiz A:01 değeri gözükünce bu A değişkenine göre sabit bir hız ve yön atamak istiyorum. Şimdiden teşekkürler :)



  • Up... Arkadaşlar, 180 derece dönebilen servo motora açıya gitmesini değilde bir hızla bir yönde dönmesini nasıl sağlayabilirim ? Şu sorunu ufak ufak çözebiliriz. Ufak çaplı bir beyin fırtınası bekliyorum :)

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Gesaffelstein kullanıcısına yanıt
    Bunu yapmayı amaçlarken ne kullanacaksın ? Arduino mu ?
  • Evet Arduino Uno kullanıyorum. Usb Host Shield ile birlikte.
  • Belirli bir delay değerinde verirsen istediğin hızda çevirmez misin zaten
  • İstediğim şey, -hızın- aldığım değere oranla değişmesi durumu.
  • Mesela potansiyometre bağladığımı düşün. Hızı analog kontrol etmek gibi.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Buradan yapılabilecek birşeymiş anladığım kadarıyla ama neyi ne yapmam gerektiğini anlamadım.

    #include "le3dp_rptparser.h" 

    JoystickReportParser::JoystickReportParser(JoystickEvents *evt) :
    joyEvents(evt)
    {}

    void JoystickReportParser::Parse(HID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf)
    {
    bool match = true;

    // Checking if there are changes in report since the method was last called
    for (uint8_t i=0; i<RPT_GAMEPAD_LEN; i++) {
    if( buf[i] != oldPad[i] ) {
    match = false;
    break;
    }
    }
    // Calling Game Pad event handler
    if (!match && joyEvents) {
    joyEvents->OnGamePadChanged((const GamePadEventData*)buf);

    for (uint8_t i=0; i<RPT_GAMEPAD_LEN; i++) oldPad[i] = buf[i];
    }
    }

    void JoystickEvents::OnGamePadChanged(const GamePadEventData *evt)
    {
    Serial.print("X: ");
    PrintHex<uint16_t>(evt->x, 0x80);
    Serial.print(" Y: ");
    PrintHex<uint16_t>(evt->y, 0x80);
    Serial.print(" Hat Switch: ");
    PrintHex<uint8_t>(evt->hat, 0x80);
    Serial.print(" Twist: ");
    PrintHex<uint8_t>(evt->twist, 0x80);
    Serial.print(" Slider: ");
    PrintHex<uint8_t>(evt->slider, 0x80);
    Serial.print(" Buttons A: ");
    PrintHex<uint8_t>(evt->buttons_a, 0x80);
    Serial.print(" Buttons B: ");
    PrintHex<uint8_t>(evt->buttons_b, 0x80);
    Serial.println("");
    }




  • Detaylı açıklama isteyen olursa burada Arduino forum
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.