Hallo Franz-Peter, Hallo Alle Mitleser,
MicroBahner hat geschrieben: ↑Do 22. Aug 2019, 14:37
ts250x hat geschrieben: ↑Di 20. Aug 2019, 18:33
Per Versuch und Irrtum habe ich dann auch noch gelernt dass bei der Modifikation des Motors " T1Stepper.setSpeedSteps( 200, 50 );"
die "200" nicht für Stepps pro Umdrehung stehen sondern für die Geschwindigkeit mit der sich der Motor dreht...
Man könnte ja auch mal die Doku lesen ....
Oder sich mal Gedanken machen was wohl SpeedSteps übersetzt bedeuten könnte

Da der" Fehler!" schon ziemlich lange in meinen Sketchen besteht hatte ich mir da keine Gedanken mehr darum gemacht.... Die Folge daraus
besteht denn auch in einer anderen Funktion: Diese Hier Stepper4 myStepper( int steps360, byte mode ); dort habe ich einen Echten Fehler eingegeben
Da sich meine Motoren ja mit, wie ich jetzt festgestellt habe, mit 20 Stepps /U drehen und nicht mit 200.... das erklärt vielleicht auch warum die Motoren so schnell Heiß werden... denn da werden die Spulen 10x so schnell umgepolt..
MicroBahner hat geschrieben: ↑Do 22. Aug 2019, 14:37
Alle Abfragen, welche Taste gedrückt ist, müssen innerhalb des Blockes von
CODE: ALLES AUSWÄHLEN
if (irrecv.decode(&results)) {
...
...
irrecv.resume();
}
gemacht werden.
Das habe ich dann geändert.... Vielen DANK für`s nachschauen....
MicroBahner hat geschrieben: ↑Do 22. Aug 2019, 14:37
Bei so vielen Abfragen würde sich auch eine switch Anweisung anbieten.
Tja ich weis, doch das kann ich offensichtlich nicht anwenden, da fehlen mir die notwendigen Schreibweisen Kenntnisse....
MicroBahner hat geschrieben: ↑Do 22. Aug 2019, 14:37
Warum ordnest Du deinen Pins erst ordentlich Namen zu, wenn Du die dann im Sketch nicht nutzt ?
Da dachte ich es wäre vom Programmablauf schneller wenn der Chip nicht so Viele Buchstaben lesen muss
MicroBahner hat geschrieben: ↑Do 22. Aug 2019, 14:37
Und den Pin 1 solltest Du generell nicht benutzen. Pins 0 und 1 werden für die Kommunikation zum PC benötigt.
OK, dann lasse ich diese unbelegt.
Jedoch hatte ich nicht geplant dass der UNO am PC angeschlossen ist wenn das Programm mal funktioniert...
So und nun kommt doch gleich das nächste Problem:
Es geht um die Spannungsversorgung von UNO,Treiber,ULN2803.
Meine Idee war alles auf eine Platine zu löten mit einer Spannungsquelle, = Netzteil 12 V
Dazu folgende Pin Belegungen:
+12 V
am UNO an PIN V in
am Treiber an Vmot
am ULN an Pin 10 und an die LED`s jeweils an Anode
GND vom Netzteil:
GND an UNO unter der Vin
GND an Treiber Vmot-(GND)
Und jetzt kommt mein Problem
Laut Schaltplan soll der GND vom ULN = Pin 9 mit dem UNO GND verbunden werden und gleichzeitig noch mit der Spannungsversorgung
der LED`s
Dadurch würde ich am Treiber die LogikGND mit Vmot GND brücken.
Ich denke das ist der Tod vom Treiber.... oder täusche ich mich da ??
Ach so hier nochmal der Überarbeitete Sketch.......
Code: Alles auswählen
#include <MobaTools.h>
#include <IRremote.h>
Stepper4 T1Stepper(20, A4988);
Stepper4 T2Stepper(20, A4988);
Stepper4 T3Stepper(20, A4988);
int T1Slp_PIN = 12;
int T2Slp_PIN = 9;
int T3Slp_PIN = 6;
int T1Led_PIN = 3;
int T2Led_PIN = 2;
int T3Led_PIN = 1;
int RECV_PIN = 13; //Pin am Arduino UNO für den IR Receiver
IRrecv irrecv(RECV_PIN); //Objekt initialisieren für die IR Übertragung
decode_results results;
void setup()
{
T1Stepper.attach( 10, 11 ); // Step und Dir-Pin
T1Stepper.setSpeedSteps( 200, 50 ); // !muss noch kontroliert werden ob das so passt!
T2Stepper.attach( 7, 8 ); // Step und Dir-Pin
T2Stepper.setSpeedSteps( 200, 50 );
T3Stepper.attach( 4, 5 ); // Step und Dir-Pin
T3Stepper.setSpeedSteps( 200, 50 );
irrecv.enableIRIn(); //Dieser Befehl initialisiert den Infrarotempfänger.
pinMode(T1Slp_PIN, OUTPUT); // Treiber 1 EIN-Ausschalten
pinMode(T2Slp_PIN, OUTPUT); // Treiber 2 Ein-Ausschalten
pinMode(T3Slp_PIN, OUTPUT); // Treiber 3 Ein-Ausschalten
pinMode(3, OUTPUT); // LED`s Stand 1
pinMode(2, OUTPUT); // LED`s Stand 2
pinMode(1, OUTPUT); // LED`s Stand 3
pinMode(RECV_PIN, INPUT); //Den IR Pin als Eingang deklarieren.
Serial.begin(9600); //Serielle kommunikation mit 9600 Baud beginnen.
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println (results.value, DEC);
if (results.value == 16724175) { // wenn der Infrarot Empfänger die Zahl der Taste 1 erkennt
digitalWrite(T1Slp_PIN, HIGH);
T1Stepper.doSteps(300); // Taste 1 macht 300 Schritte nach „rechts“
}
if (results.value == 16718055) { // Taste 2
digitalWrite(T1Slp_PIN, HIGH);
T1Stepper.doSteps(-300); // macht 300 Schritte nach „links“
}
if (!T1Stepper.moving() ) {
digitalWrite(T1Slp_PIN, LOW);
}
if (results.value == 16716015) { // Taste 4
digitalWrite(T2Slp_PIN, HIGH);
T2Stepper.doSteps(300); // Taste 4
}
if (results.value == 16726215) { // Taste 5
digitalWrite(T2Slp_PIN, HIGH);
T2Stepper.doSteps(-300); // Taste 5
}
if (!T2Stepper.moving() ) {
digitalWrite(T2Slp_PIN, LOW);
}
if (results.value == 167288765) { // Taste 7
digitalWrite(T3Slp_PIN, HIGH);
T3Stepper.doSteps(300); // Taste 7
}
if (results.value == 16730805) { // Taste 8
digitalWrite(T3Slp_PIN, HIGH);
T3Stepper.doSteps(-300); // Taste 8
}
if (!T3Stepper.moving() ) {
digitalWrite(T3Slp_PIN, LOW);
}
if (results.value == 16756815) { // Taste 3
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(250);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
delay(750);
digitalWrite(3, LOW);
delay(500);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(300);
digitalWrite(3, HIGH);
}
if (results.value == 16734885) { // Taste 6
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(250);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
delay(750);
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
}
if (results.value == 16732845) { // Taste 9
digitalWrite(1, HIGH);
delay(500);
digitalWrite(1, LOW);
delay(250);
digitalWrite(1, HIGH);
delay(500);
digitalWrite(1, LOW);
delay(300);
digitalWrite(1, HIGH);
delay(750);
digitalWrite(1, LOW);
delay(500);
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(1, LOW);
delay(300);
digitalWrite(1, HIGH);
}
if (results.value == 16738455) { // Taste 0 = Stand 3 Licht Aus
digitalWrite(1, LOW);
}
if (results.value == 16750695) { // Taste +100 = Stand 2 Licht Aus
digitalWrite(2, LOW);
}
if (results.value == 16756815) { // Taste +200 = Stand 1 Licht Aus
digitalWrite(3, LOW);
}
irrecv.resume();
}
}
Ich traue mich schon gar nicht mehr zu Fragen ob sich das mal Jemand ( HALLO Franz-Peter)

anschauen würde
