- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Fehler bei "map"

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128

    Fehler bei "map"

    Anzeige

    Powerstation Test
    Hallo,
    Ich habe mein DUO 4/1 Fahrzeug von 6 auf 12 Volt umgerüstet. Aber den 6 Volt Scheibenwischermotor wollte ich mit PWM in der Drehzahl beschränken. Das klappt auch, nur im Sketch habe ich in map von 0-1023 auf 0-255 runterskaliert. Trotzdem liegt der Wert, den ich in der folgenden "if" angeben muß, überhaupt nicht in dem Bereich 0-255. Auch nicht im 0-1023 Bereich? Eher höher?

    Denn 450 entspricht ca 1/3 der Zeit HIGH.
    Und 900 entspricht ca 2/3 der Zeit HIGH.
    (Zusehen am Oszi)

    Code:
    //Konstanten
    const int wischerPin = 0;        // Wischermotor an Pin 0 Attiny angeschlossen
    const int potiPin = A3 ;     // Potenziometer am Pin 3 angeschlossen
    const int LED = 1; //Kontrollleuchte Pin 1
    
    // Variablen
    int wischerSpeed = 0;            // Variable für die Motorgeschwindigkeit
    int potiVar = 0 ;            // Variable zum speichern des Potentiometers
    
    
    void setup()
    {
    
    
      pinMode(wischerPin, OUTPUT) ;      //Setzt den WischerPin als Ausgang
      pinMode(potiPin, INPUT) ;   //Potipin als Eingang
      pinMode(LED, OUTPUT); //Setzt den LEDPin als Ausgang
    }
    
    
    void loop()
    {
      potiVar = analogRead(potiPin) ;                       // Liest das Potentiometer aus
      wischerSpeed = map(potiVar, 0, 1023, 0, 200);  // Setzt den Bereich auf 0-255
    
    
      if ((potiVar < 450) ||  (potiVar > 900))  //Unterhalb/Oberhalb soll Motor nicht laufen
      {
        digitalWrite(wischerPin, LOW);   //Ist aus
        digitalWrite(LED, HIGH);        //deshalb Kontrolle an
      }
      else//sonst
      {
    
        analogWrite(wischerPin, wischerSpeed);     // Variable Drehzahl mit PWM
        digitalWrite(LED, LOW);
      }
    }
    Danke, ich nehme jeden Fehlerhinweis dankend auf!

    Achim

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Hallo,

    der Inhalt von potiVar wird durch das map ja nicht geändert. Du fragst in dem if die Variable potiVar ab, ausgeben tust du aber wischerSpeed. Und das skalierst du zwischen 0 und 200, nicht wie du behauptest bis 255.

    Geb die Werte von potiVar und wischerSpeed doch mal über den seriellen Monitor aus, dann siehst du, was drin ist.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Dankeschön!
    Die 200 kommen, weil ich soviel versucht habe bevor ich postete.
    Zwischendurch habe ich fieserweise die kleine Schaltung eingebaut. Zugeben muß ich, dass ich das 4K7 Poti in die Mitte zwischen 2 Widerstände in Reihe setzte.
    Also von Gnd an einen Widerstand 6K8, dann das Poti 4K7, dann einen Widerstand 4K7 zu VSS. Dadurch habe ich am Poti kaum "Leerweg". Vorher musste man erstmal weit drehen bis die PWM anfing. Dafür hörte Sie auch nach 2/3 Potidrehung auf. Jetzt steht fast die ganze Drehung des Poti zur Verfügung.
    Das Ganze habe ich wohl komplett falsch angefangen. Hätte wohl mit Schwellwerten besser ausgesehen.

    Aber heute Abend werde ich mich nochmal mit dem Sketch befassen. Den Seriellen Monitor habe ich noch nicht benutzt. Steht aber im Buch drin wie man ihn aufruft.

    Code:
    analogWrite(wischerPin, potiVar);
    wäre das Richtig?
    statt
    Code:
    analogWrite(wischerPin, wischerSpeed);
    Danke
    Achim

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Ich würde eher in der if-Abfrage den skalierten Wert, also wischerSpeed, verwenden.

    Ein analogWrite will ja nur Werte von 0 bis 255, da wären die Werte von potiVar ja zu groß.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.02.2012
    Ort
    50KM über Hamburg
    Beiträge
    128
    Danke,
    beim nächsten Mal mache ich es besser.

    Schönen Gruß aus Schleswig Holstein, wo es seid Wochen regnet.

    Achim

Ähnliche Themen

  1. Fehler beim Schreiben "Device signature = 0x000102" USBasp
    Von spelli2001 im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 27.08.2012, 13:16
  2. Fehler beim linken "undefined reference to..."
    Von Befedo im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 21.05.2010, 23:20
  3. Odometrie - "normaler" fehler oder Softwareproblem
    Von robodriver im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 13.06.2008, 09:37
  4. Antworten: 3
    Letzter Beitrag: 04.07.2006, 20:52
  5. Kleiner Fehler in "The Robot Builders Bonanza" SE
    Von Jimmy C im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 09.04.2004, 13:30

Berechtigungen

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

LiFePO4 Speicher Test