- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 19

Thema: me-arm, 12bit servotreiber und ein joystick

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Zitat Zitat von inka Beitrag anzeigen
    ...der arm ruckelt aber ziemlich...
    Code:
    void loop() {
      float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
      float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
      float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
      float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
    map ist eine Integerfunktion. dx, dy etc. werden also nur ganzzahlige Werte zwischen -5 und 5, also 11 Schritte annehmen. Damit ruckelts.

    Lösung ist einfach: Einfach folgende Funktion vor die loop()-Definition setzen:
    Code:
    float map(long x, long in_min, long in_max, float out_min, float out_max)
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    Geändert von Sisor (19.02.2019 um 19:26 Uhr) Grund: Lösungsvorschlag angehängt.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180
    danke Sisor,
    leider kann ich es im moment nicht ausprobieren, ich muss jetzt erstmal überlegen wie ich HaWe's vorschläge für den anschluss der joystickplatine realisiere...
    Es ging bei der ursprünglichen frage um's ruckeln, ich wollte probieren, ob es bei einer "behutsamen" ansteuerung mit dem joystick auch so ruckartig fährt. Es ruckelt aber auch bei anderen sketches wie dem hier z.b.


    Code:
    #include <Wire.h>
    #include <Adafruit_PWMServoDriver.h>
    
    
    Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
    
    
    #define MIN_PULSE_WIDTH 650
    #define MAX_PULSE_WIDTH 2350
    #define DEFAULT_PULSE_WIDTH 1500
    #define FREQUENCY 50
    
    
    //uint8_t servonum = 0;
    uint8_t i;
    
    
    
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println("16 channel Servo test!");
      pwm.begin();
      pwm.setPWMFreq(FREQUENCY);
    }
    int pulseWidth(int angle)
    {
      int pulse_wide, analog_value;
      pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
      analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
      Serial.println(analog_value);
      return analog_value;
    
    
      //pwm.setPWM(0, 0, pulseWidth(0));
    }
    
    
    void loop()
    {
    
    // servo für horizontale drehung
    
      for (i = 70; i <= 135; i++)
      {
        //Serial.println(i);
        pwm.setPWM(0, 0, pulseWidth(i));
    
        delay(50);
      }
    
      delay(500);
    
      for (i = 135; i >= 70; i--)
      {
        //Serial.println(i);
        pwm.setPWM(0, 0, pulseWidth(i));
    
        delay(50);
      }
    }
    hängt das hier auch mit dem "map" zusammen?
    gruß inka

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    hängt das hier auch mit dem "map" zusammen?
    Nö, da wird map() richtig benutzt.

Ähnliche Themen

  1. Servotreiber RNS1
    Von Naturp im Forum Elektronik
    Antworten: 33
    Letzter Beitrag: 07.02.2010, 21:38
  2. ADC mit 12bit besser 16bit mit 1Wire oder I2C gesucht
    Von mat-sche im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 25.01.2010, 21:54
  3. wie verschicke ich 12bit per spi??
    Von drivepro82 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 21
    Letzter Beitrag: 16.09.2008, 19:36
  4. AVR 12Bit-PWM Lookuptable
    Von teslanikola im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 17.06.2008, 14:05
  5. einen 4bit und 8bit wertals 12bit Wert verarbeiten
    Von Olle_Filzlaus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 14.08.2007, 11:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress