Arduino: DC-Motor stockt?

Hallo,

ich bin gerade dabei, ein Roboterauto mithilfe von 4 DC-Motoren und einem Arduino Nano zu bauen. Ich habe zunächst alle Motoren direkt an das Batteriefach (4 x 1,5V) angeschlossen, um sicherzugehen, dass alle funktionieren. Jetzt habe ich einen an meinen Motor-Controller (L298N) angeschlossen, aber der Motor stockt jetzt und geht immer nur ein kleines Stück weiter, obwohl er eigentlich 3 Sekunden am Stück laufen und dann für 2 Sekunden stillstehen sollte (Siehe Code). Während der Motor läuft, sollte eine rote LED auf dem Arduino leuchten. Wenn ich den Motor ihn ohne Motor-Controller und Arduino teste, funktioniert er. Sobald ich ihn mit Controller und Arduino verbinde, stockt er und auch die rote LED blinkt nur kurz auf. Könnte es sein, dass mit dem Motor-Controller etwas nicht stimmt? Wo könnte das Problem sonst liegen?

Vielen Dank!

//This code is to use with L298n Dual H-bridge motor driver
//It just turns on a DC motor for a certain time and turn it off
//refer to surtrtech.blogspot.com for more information
int in1 = 9; //Declaring the pins where in1 in2 from the driver are wired 
int in2 = 8; //here they are wired with D9 and D8 from Arduino
void setup() {
  pinMode(in1, OUTPUT); //Declaring the pin modes, obviously they're outputs
  pinMode(in2, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}
//Before starting the loop you should create functions type "void" to control the driver's pins
//Here I created two functions, the first one turns a motor to a direction (you can change it by switching LOW and HIGH
//and the second one to stop the motor
void TurnMotorA(){              
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(LED_BUILTIN, HIGH);
}
void TurnOFFA(){
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(LED_BUILTIN, LOW);
}
void loop() {
  TurnMotorA(); //in the loop we use the function to turn the motor for 3s and stop it for 2s
  delay(3000);
  //delay(30000);
  
  TurnOFFA();
  delay(2000);
  //delay(20000);
}


Programm, Hardware, Computer, PC, Programmieren, Programmierung, Programmiersprache
Java: Wie kann ich in switch-Statements Benutzereingaben verarbeiten?

Hallo!

Also, ich muss eine Ampel in Java basteln. Die Ampel soll wechseln:

rot => rot-gelb => gelb => grün => rot => rot-gelb => gelb...

Ich habe jetzt ein Switch Statement (switch case) verwendet:

 public class TrafficLight {
public static void main(String[] args) {

    int tl = 2;
    String tlString;
    switch (tl) {
        case 1:  tlString = "red";
                 break;
        case 2:  tlString = "red-yellow";
                 break;
        case 3:  tlString = "green";
                 break;
        case 4:  tlString = "yellow";
                 break;
        default: tlString = "Invalid tl";
                 break;
    }
    System.out.println(tlString);

}
 }

Das funktioniert schonmal, aber ich bekomme nur „red-yellow” als Ausgabe. Damit ist die 1. Hälfte getan. Nun müsste der Benutzer nur noch eine Aktion machen (z.B. „c” eingeben). und dann sollte die Ampel umschalten (also auf grün wechseln). Ich habe also mit

  import java.util.Scanner;

den Scanner importiert (1. Zeile) und dann zwischen die letzten beiden geschweiften Klammern (s.o.)

public static void input(String[] args) {

    Scanner scan = new Scanner(System.in);
    int y = scan.nextInt();

    System.out.println("Please enter a the letter c:");
    int year = scan.nextInt();

}

eingefügt. Aber Java gibt noch nichtmal die Ausgabe aus, dass eine Eingabe erwartet wird und Eingaben sind auch nicht möglich! Was mache ich falsch? Oder ist die Idee generell falsch?


Hier die Aufgabe im Original:

Implementieren Sie die Steuerung einer Verkehrsampel. Die Verkehrsampel kann sich dabei ausschlielich in einem der folgenden vier Zustände benden: rot, rot-gelb, grün und gelb. Die Ampel darf dabei nur von rot auf rot-gelb, von rot-gelb auf grün, von grün auf gelb und von gelb auf rot umschalten. Schreiben Sie eine Klasse TrafficLight, die diesen Anforderungen genügt. Die Klasse soll jeweils eine Methode zum Weiterschalten der Ampel zwischen den erlaubten Zuständen anbieten. Ferner sollte es möglich sein, denaktuellen Zustand der Ampel auf den Bildschirm auszugeben. Schreiben Sie eine Main-Methode, in der Sie ihre Implementierung gründlich testen.


Danke im Voraus!

Programmierung, Java, Programmiersprache

Meistgelesene Fragen zum Thema Programmierung