Schrittmotor einfach drehen- Arduino?

Seid gegrüßt,

Ich möchte über einen PS2 Controller einfach einen Schrittmotor ansteuern, also sprich ich drücke eine Taste und er dreht solange in diese Richtung, wie die Taste gehalten wird. Nur mit zwei Tasten, für 2 Richtungen, vor und zurück.

Eigentlich Frage: Wie code ich das am Besten?

Also etwa so (mal so erklärend):

if(ps2x.ButtonPressed(PSB_L1)) {
for (drehe dich vorwärts)
solange vorwärts drehen, wie die Taste gehalten wird
}
if(ps2x.ButtonPressed(PSB_R1)) {
for (drehe dich rückwarts)
solange rückwarts drehen, wie Taste gedrückt wird
}

Soweit, so gut. Danke für alle Antworten!

MFG Alex

Hier mein aktueller Code dafür: (ganz unten ist der Part, wo später das mit dem Motor hin soll....)

#include <PS2X_lib.h>  
PS2X ps2x; 
//right now, the library does NOT support hot-pluggable controllers, meaning 
//you must always either restart your Arduino after you connect the controller, 
//or call config_gamepad(pins) again after connecting the controller.
int error = 0; 
byte type = 0;
byte vibrate = 0;
int magenta=2;
int gruen=3;
int blau=4;
int rot=5;
// Stepper Bibliothek hinzufügen
#include <Stepper.h>
// Anzahl der Schritte pro interner Motorumdrehung
const float STEPS_PER_REV = 32; 
// Betrag der Untersetzung
const float GEAR_RED = 64;
// Anzahl der Schritte pro Getriebeausgangrotation
const float STEPS_PER_OUT_REV = STEPS_PER_REV * GEAR_RED;
// Number of Steps Required
int StepsRequired;
// PIN BELEGUNG
// Benutze PINs 8,9,10,11 des Arduinos
// und verbinde diese mit ULN2003 Motor Driver In1, In2, In3, In4 
// Pins, die in der Sequenz 1-3-2-4 für die richtige Schrittsequenzierung eingegeben wurden
Stepper steppermotor(STEPS_PER_REV, 7, 6, 5, 4);
void setup(){
Serial.begin(9600);
error = ps2x.config_gamepad(13,11,10,12, true, true);  //GamePad(clock, command, attention, data, Pressures?, Rumble?) 
if(error == 0){
 Serial.println("Found Controller, configured successful");
 Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press harder;");
 Serial.println("holding L1 or R1 will print out the analog stick values.");
 Serial.println("Go to www.billporter.info for updates and to report bugs.");
}
type=1;
error=0;
pinMode(2,OUTPUT);
pinMode(3, OUTPUT); //gruen
pinMode(4, OUTPUT); //blau
pinMode(5, OUTPUT); //rot
}
void loop(){
 /
error=0;
type=1;
if(error == 1) 
 return; 
if(type == 2){ 
 ps2x.read_gamepad();     //read controller 
}
else {
ps2x.read_gamepad(false, vibrate); //Ab hier beginnt der eigentliche loop, davor nur weil es auch type 2- Controller gibt, hier für den richtigen
if(ps2x.ButtonPressed(PSB_L1){
  --->Hier Motor...
}
delay(50);
} 
}
Computer, Technik, PlayStation, Drehung, Arduino, Technologie, C (Programmiersprache), Schrittmotor, Servo
C++ Programmcode nicht ausführbar "willkommen"?

Guten Abend zusammen,

ich habe mir heute das, Kindle eBook C++ Programmieren für Einsteiger geholt, da mich programmieren schon seit langer Zeit sehr interessiert, ich bisher aber zeitlich nicht dazu kam, mich da einzulesen.

Nun zu der Frage: Ich habe all das, was das Buch mir gesagt hat, durchgeführt:

  1. Einen Text-Editor zum Codes schreiben heruntergeladen: Geany (Schreibe jedoch über den normalen, bereits auf Windows 10 vorhandenen Texteditor).
  2. Einen Compiler für die Erstellung der Programme heruntergeladen: MinGW.

Anschließend kam auch schon die erste Aufgabe. Ich sollte mit einem Kommandozeileninterpreter (cmd / Eingabeaufforderung) die Version des MinGW abfragen. Dies musste ich erst in den erweiterten Systemeinstellungen einstellen, indem ich die Umgebungsvariablen anpasse (in PATH den Dateipfad meines MinGW\Bin-Ordner hinzufügen). Das hat auch funktioniert und ich konnte durch die Eingabeaufforderung die Version meines Compilers abfragen.

Nun geht es los, das erste Programm schreiben: Eine einfache Ausgabe auf dem Bildschirm. Ziel ist es, eine kurze Textnachricht auszugeben.

Nun sind die Schritte wie folgt beschrieben:

  1. Texteditor öffnen
  2. Programmcode eingeben
#include <iostream>

int main()
{
  std::cout << "Willkommen zum C++ Kurs!";
}

Nun soll ich die Datei unter dem Namen willkommen.cpp abspeichern, in meinem Fall auf dem Desktop.

Danach geht es um die Ausführung des Programms: Ich muss das Programm mithilfe des Kommandozeileninterpreters (cmd) kompilieren.

  1. cmd öffnen.
  2. Verzeichnis ändern, in dem Fall auf meinen Desktop

Befehl:

g++ -o willkommen willkommen.cpp

(Ich frage mich, warum ich doppelt willkommen eingeben muss, auch wenn meine Datei nur ein willkommen hat? Ich habe es mit nur einem willkommen probiert und es wurde mir ein Fehler angezeigt!)

Wenn ich das so eingebe, kommt eine oder zwei kurze Sekunden ein Ladevorgang und es passiert weiter nichts. Eigentlich steht in dem Buch geschrieben, dass unter meiner Eingabe in der cmd ein "Willkommen im C++ Kurs " erscheinen sollte. Dies ist leider nicht der Fall.

Also an jeden, der sich mein Problem angeschaut hat: Vielen Dank!

Ich habe auf YouTube und anderen Plattformen nach einer Lösung geschaut, jedoch nichts mit der gleichen Ähnlichkeit gefunden.

Computer, Buch, Technik, IT, programmieren, Informatik, Technologie, C (Programmiersprache)
Globale Variablen durch Zeiger ersetzen?

Hallo,

bei der folgenden Programmieraufgabe würde ich gerne die globalen variablen durch Zeiger ersetzten, da man mit den globalen Variablen ja etwas vorsichtig sein sollte.

include include include

double x0; //globale variablen int ok, anzit;

double fct (int fn, double x){ // Funktion fct mit 2 Parametern

double y;

switch (fn) {                                               // switch case funktion zum Auswählen der Funktion
    case 1:     y = sin(x);                     break;
    case 2:     y = exp (x) - 5.0 * x + 1.0;    break;
    case 3:     y = x * x - 2.0;                break;
    case 4:     y = (1.0 / 7.0) + (1.0/x);      break;
    case 5:     y = 2.0 * x - 2.0;              break;
    default:    y = 0.0;                        break;
}
return y;

}

void nullstelle (int fn, double a, double b, double g) { // Prozedur Nullstelle

double fa, fb, fm, m;
                                                                // Verarbeitung der Parameter und Variablen

fa = fct (fn, a);
fb = fct (fn, b);

while ((b-a) > g) {

    m = (a+b) / 2.0;
    fm = fct (fn, m);

    if ((fa*fm) < 0) {
        b = m; fb = fm;
    }

        else {
            a = m; fa = fm;
        }
    anzit++;
}
        x0 = m;
        ok = 1;

}

int main(){ // Hauptprogramm // Fordert den Benutzer auf Befehle einzugeben int fn; double a, b, g;

printf ("1) f(x) = sin (x) \n");
printf ("2) f(x) = e^x - 5x + 1 \n");
printf ("3) f(x) = x^2 - 2 \n");
printf ("4) f(x) = (1/7) + (1/x) \n");
printf ("5) f(x) = 2x - 2 \n");


while (1) {
    printf ("\nWaehlen Sie eine Funktion aus: ");
    scanf ("%d", &fn);

    printf ("Linker Grenzwert: ");
    scanf ("%lf", &a);

    printf ("Rechter Grenzwert: ");
    scanf ("%lf", &b);

while (fct (fn, a) * fct (fn, b) > 0.0){
    printf ("\nf(a) und f(b) haben gleiches Vorzeichen, bitte andere Grenzen eingeben!");
    printf ("\nLinker Grenzwert: ");
    scanf ("%lf", &a);
    printf ("\nRechter Grenzwert: ");
    scanf ("%lf", &b);
    }

    printf ("Genauigkeit: ");
    scanf ("%lf", &g);

    nullstelle (fn, a, b, g);

    if (ok == 1)
        printf ("x0 \t = %.15f\n", x0);
        printf("f(x0) \t = %.15f\n", fct(fn, x0));
        printf("%d Iteration\n", anzit);

}

return 0;

}

programmieren, C (Programmiersprache)

Meistgelesene Beiträge zum Thema C (Programmiersprache)