- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 41

Thema: Alles PWM oder wie?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #23
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    So,

    anhand des Sketches vermute ich mal daß das auf einem Due oder Mega 2560 läuft.
    Auf einem Uno oder Nano funktioniert das nicht mit PWM und diesen PIN's.
    Code:
    PWM Pins
    Nano: 3; 5; 6; 9; 10; 11
    Uno: 3; 5; 6; 9; 10; 11
    Due: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
    Mega 2560: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
    Code:
    int IN1 = 9;
    int IN2 = 8;
    int IN3 = 7;
    int IN4 = 6;
    - - - Aktualisiert - - -

    Dann kann der Motor nur mit 100% laufen,
    Code:
    void Forward() {
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Forward");
      Serial.println();
    
    
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Forward");
      Serial.println();
    }
    Für PWM sollte es aber ein
    Code:
    analogWrite(pin, value)
    sein.
    https://www.arduino.cc/en/Tutorial/PWM

    https://www.arduino.cc/reference/en/...o/analogwrite/

    - - - Aktualisiert - - -

    So, das ist jetzt mit der heißen Nadel gestrickt.
    Habe hier keine Hardware auf dem ich es laufen lassen kann.
    Lässt sich aber fehlerfrei comilieren.
    Code:
    /* 
    PWM Pins
    Nano: 3; 5; 6; 9; 10; 11
    Uno: 3; 5; 6; 9; 10; 11
    Due: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
    Mega 2560: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
    */
    
    int IN1 = 9;
    int IN2 = 8;
    int IN3 = 7;
    int IN4 = 6;
    int speed;
    
    void setup()
    {
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
      pinMode(IN3, OUTPUT);
      pinMode(IN4, OUTPUT);
    
      Serial.begin(9600);
      Serial.println("Enter number for control option:");
      Serial.println("1. FORWARD");
      Serial.println("2. REVERSE");
      Serial.println("3. STOP");
      Serial.println();
    }
    
    void loop()
    {
      for (int speed=0; speed <=255; speed++){
        Forward(speed);
        delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Forward(speed);
        delay(10);
      }
      for (int speed=0; speed <=255; speed++){
        Backward(speed);
        delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Backward(speed);
        delay(10);
      }
      for (int speed=0; speed <=255; speed++){
        Rotateleft(speed);
        delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Rotateleft(speed);
        delay(10);
      }
      for (int speed=0; speed <=255; speed++){
        Rotateright(speed);
        delay(10);
      }
      for (int speed=255; speed >=0; speed--){
        Rotateright(speed);
        delay(10);
      }
    }
    
    void Forward(int speed){
      analogWrite(IN1, speed);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Forward");
      Serial.println();
      analogWrite(IN3, speed);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Forward");
      Serial.println();
    }
    
    void Backward(int speed){
      digitalWrite(IN1, LOW);
      analogWrite(IN2, speed);
      Serial.print("Motor 1 Backward");
      Serial.println();
      digitalWrite(IN3, LOW);
      analogWrite(IN4, speed);
      Serial.println("Motor 2 Backward");
      Serial.println();
    }
    
    void Rotateleft(int speed){
      digitalWrite(IN1, LOW);
      analogWrite(IN2, speed);
      Serial.print("Motor 1 Backward");
      Serial.println();
      analogWrite(IN3, speed);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Forward");
      Serial.println();
    }
    
    void Rotateright(int speed){
      analogWrite(IN1, speed);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Forward");
      Serial.println();
      digitalWrite(IN3, LOW);
      analogWrite(IN4, speed);
      Serial.println("Motor 2 Backward");
      Serial.println();
    }
    
    void Stop(){
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      Serial.print("Motor 1 Stop");
      Serial.println();
    
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      Serial.println("Motor 2 Stop");
      Serial.println();
    }
    Wenn ich keinen Fehler drin habe, müssten sich die Räder einmal vorwärts drehen.
    Und zwar von Stillstand bis zur Maximaldrehzahl und wieder bis zum Stillstand.
    Dann einmal rückwärts.
    Einmal Gegenläufig für drehen auf der Stelle, linksrum und einmal rechtsrum.
    Geändert von i_make_it (21.02.2018 um 06:41 Uhr)

Ähnliche Themen

  1. 2 Atmegas verwenden oder doch alles in einem
    Von moritz31 im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 12.03.2014, 17:02
  2. Alles Matrix, oder?
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 21.12.2012, 21:30
  3. Real Time Clock oder Uhrenquarz? Alles möglichst stromarm
    Von MelMan im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 08.06.2011, 17:01
  4. Was brauche ich alles
    Von Haveaniceday im Forum AVR Hardwarethemen
    Antworten: 17
    Letzter Beitrag: 02.08.2007, 12:07
  5. Ist in dem BAusatz alles drin, oder braucht man noch was ???
    Von michiE im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 3
    Letzter Beitrag: 07.03.2005, 16:10

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress