Guten Morgen Franz-Peter,
Schön dass du dir die Zeit genommen hast mir zu Antworten.
Leider muss ich noch ein paar Fragen stellen, ich hoffe dass ich dich damit nicht "Nerve"
1. Hast du schon einen Plan bis wann in etwa die Funktionen: "withEnable" freigeschaltet sind
2.
MicroBahner hat geschrieben: ↑So 4. Aug 2019, 08:11
Mit switch-case wäre das übrigends deutlich effizienter.
Meinst du damit : switch-case anstatt: if (results.value == zu benutzen?
MicroBahner hat geschrieben: ↑So 4. Aug 2019, 08:11
P.S. und unterscheide im Hirnstübchen von Anfang an zwischen 'ohne Fehler läuft' und 'ohne Fehler compiliert'. Dazwischen liegen Welten .
JA ich gelobe Besserung.........
Inzwischen habe ich den Sketch etwas weiter gesponnen oder gestrickt, Mit dem Ergebnis dass der Compiler keine Fehlermeldung ausgegeben hat.
Code: Alles auswählen
#include <MobaTools.h>
#include <IRremote.h>
#include <Arduino.h>
Stepper4 T1Stepper(200, A4988);
Stepper4 T2Stepper(200, A4988);
Stepper4 T3Stepper(200, A4988);
int irPin = 13; //Pin am Arduino Nano für den IR Receiver
int ledPin1 = 3;
int ledPin2 = 2;
int ledPin3 = 1;
int ledPin4 = A5;
int ledPin5 = A4;
int ledPin6 = A3;
int ledPin7 = A2;
int ledPin8 = A1;
int ledPin9 = A0;
IRrecv irrecv(irPin); //Objekt initialisieren für die IR Übertragung
decode_results results;
void setup()
{
T1Stepper.attach( 10,11 ); // Step und Dir-Pin
T2Stepper.attach( 7,8 ); // Step und Dir-Pin
T3Stepper.attach( 4,5 ); // Step und Dir-Pin
T1Stepper.setSpeedSteps( 200,50 );
T2Stepper.setSpeedSteps( 200,50 );
T3Stepper.setSpeedSteps( 200,50 );
T1Stepper.setRampLen( 50 ); // doppelte Eingabe der Rampenlänge ??
T2Stepper.setRampLen( 50 );
T3Stepper.setRampLen( 50 );
//T1Stepper.attachEnable(12,2,0); //EnaPin,delay,LOW
//T2Stepper.attachEnable(9,2,0); //funktioniert nicht
//T3Stepper.attachEnable(6,2,0);
pinMode(irPin, INPUT); //Den IR Pin als Eingang deklarieren.
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
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 Infrarotempfanger die Zahl
T1Stepper.doSteps(1700); // Taste 1 macht 1700 Schritte nach „rechts“
if (results.value == 16718055) // Taste 2
T1Stepper.doSteps(-1700); // macht 1700 Schritte nach „links“
if (results.value == 16716015) // Taste 4
T2Stepper.doSteps(1700); //1700 Stepps rechts
if (results.value == 16726215) // Taste 5
T2Stepper.doSteps(-1700); // 1700 nach links
if (results.value == 16728765) // Taste 7
T3Stepper.doSteps(1700); // 1700 nach rechts
if (results.value == 16730805) // Taste 8
T3Stepper.doSteps(-1700); // 1700 nach links
// Beleuchtung
if (results.value == 16756815) // Taste 3
digitalWrite(ledPin1,HIGH);
if (results.value == 16734885) // Taste 6
digitalWrite(ledPin1,LOW);
if (results.value == 16732845) // Taste 9
digitalWrite(ledPin2,HIGH);
if (results.value == 16738455) // Taste 0
digitalWrite(ledPin2,LOW);
if (results.value == 16750695) // Taste 100+
digitalWrite(ledPin3,HIGH);
if (results.value == 16756815) // Taste 200+
digitalWrite(ledPin3,LOW);
if (results.value == 16769055) // Taste minus
digitalWrite(ledPin4,HIGH);
if (results.value == 16754775) // Taste plus
digitalWrite(ledPin4,LOW);
if (results.value == 16748655) // Taste EQ
digitalWrite(ledPin5,HIGH);
if (results.value == 16720605) // Taste I<<
digitalWrite(ledPin5,LOW);
if (results.value == 16712445) // Taste >>I
digitalWrite(ledPin6,HIGH);
if (results.value == 16761405) // Taste <II
digitalWrite(ledPin6,LOW);
if (results.value == 16753245) // Taste CH-
digitalWrite (ledPin7,HIGH);
digitalWrite (ledPin8,HIGH);
digitalWrite (ledPin9,HIGH);
if (results.value == 16736925) // Taste CH
digitalWrite (ledPin7,LOW);
digitalWrite(ledPin8,LOW);
digitalWrite(ledPin9,LOW);
if (results.value == 16769565) // Taste CH+
delay(10);
}
Dabei habe ich die beiden Tasten(Zahlenwerte) nochmal korrigiert.
Nun bin ich am Überlegen wie ich die LED`s im Lokschuppen am besten starten lasse, ich wollte diese ja wie "Alte abgenudelte" Leuchtstoffröhren starten. Also erst 2-4 mal blinken mit halber Leuchtkraft dann langsam heller und zum Schluss dann an.
Weiterhin muss ich mir Gedanken machen wie ich die Strombelastung vom UNO reduzieren kann für die vielen LED`s
Gibt es dafür eventuell fertige Treiber IC`s oder muss ich da für jeden Ausgang Transistoren benutzen.
Ich habe auch schon mal über Opto-Koppler nach gedacht damit wäre sicher gestellt dass dem UNO nichts passiert. das wird dann allerdings eine Große Platine.
Vielleicht hat ja jemand eine Idee dazu
