Hallo liebes Forum,
ich habe mich mal an etwas anderem Versucht der Code soll die Drehrichtung eines DC Motors ändern.
Pinbelegung:
13 = intLED für bereit blinken
12 = Relai für Rechtslauf
11 = Relai für Linkskauf
3 = Taster für Linkslauf
2 = Taster für Rechtslauf
Anschlussschema
nun der Code
//Definition
bool button0read = false;
bool button0on = false;
//Schaltdefinition
bool switch0 = false;
//Definition für Millis
unsigned long button0millis = 0;
//LED Definition
bool blinker = false;
unsigned long blinkerMillis = 0;
//Zeitabschaltung Relai
unsigned long relaiMillis = 0;
//Pinzuweisung
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
ledBlinker();
setRelai(2, 3, 11, 12, 13, 0);
}
//**************
//* Funktionen *
//**************
//LED Funktion
void ledBlinker() {
//Bereit blinken der LED
if (millis() - blinkerMillis < 10) {
blinker = true;
} else {
blinker = false;
}
if (millis() - blinkerMillis > 1500) {
blinkerMillis = millis();
}
//Millis zurücksetzten
if (blinkerMillis > millis()) {
blinkerMillis = 0;
}
}
//Relai Funktion
void setRelai(int buttonPin, int relaiPin, int ledPin, long offMillis) {
buttonRead(buttonPin);
if (millis() - relaiMillis > offMillis && offMillis > 0) {
switch0 = false;
}
if (switch0 == true) {
digitalWrite(relaiPin, true);
digitalWrite(ledPin, true);
} else {
digitalWrite(relaiPin, false);
digitalWrite(ledPin, blinker);
}
}
//Taster Funktion
void buttonRead(int buttonPin) {
button0read = digitalRead(buttonPin);
//Tasterprellen kompensiert
if (button0read == true) {
button0millis = millis();
}
//Schatung aus Funktion (== vergleicht, && und, = gleichsetztend)
if (button0read == false && button0on == false && millis() - button0millis > 10) {
button0on = true;
}
//Schaltung an Funktion (!=negativiert)
if (button0read == true && button0on == true) {
button0on = false;
switch0 = !switch0;
relaiMillis = millis();
}
}
leider gibt es einen Fehler den ich nicht verstehe
pert
December 13, 2023, 7:58am
2
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.
Die Fehlermeldung sagt doch eindeutig, was da falsch ist.
Deine Funktion hat weniger Argumente als der Aufruf dahin.
Das muss schon passen.
Wobei ich def. nicht verstehe wie da was funktionieren soll.
Du solltest den Sketch mal richtig kommentieren, damit auch andere den verstehen.
Ich hab den Code jetzt umgeschrieben bekomme jetzt eine andere Meldung und könnte Hilfe bei der Lösung brauchen
//Definition
bool button0readR = false;
bool button0onR = false;
bool button0readL = false;
bool button0onL = false;
//Schaltdefinition
bool switch0R = false;
bool switch0L = false;
//Definition für Millis
unsigned long button0millis = 0;
//LED Definition
bool blinker = false;
unsigned long blinkerMillis = 0;
//Zeitabschaltung Relai
unsigned long relaiMillis = 0;
//Pinzuweisung
void setup() {
pinMode(2, INPUT_PULLUP); //buttonPinR
pinMode(3, INPUT_PULLUP); //buttonPinL
pinMode(11, OUTPUT); //relaiPinL
pinMode(12, OUTPUT); //relaiPinR
pinMode(13, OUTPUT); //ledPin
}
void loop() {
ledBlinker();
setRelai(2, 3, 11, 12, 13, 0);
}
//**************
//* Funktionen *
//**************
//LED Funktion
void ledBlinker() {
//Bereit blinken der LED
if (millis() - blinkerMillis < 10) {
blinker = true;
} else {
blinker = false;
}
if (millis() - blinkerMillis > 1500) {
blinkerMillis = millis();
}
//Millis zurücksetzten
if (blinkerMillis > millis()) {
blinkerMillis = 0;
}
}
//Relai Funktion
void setRelai(int buttonPinR, int buttonPinL, int relaiPinL, int relaiPinR, int ledPin, long offMillis) {
//Drehrichtung R
buttonReadR(buttonPinR);
if (millis() - relaiMillis > offMillis && offMillis > 0) {
switch0R = false, switch0L = false;
}
if (switch0R == true) {
digitalWrite(relaiPinR, true);
digitalWrite(ledPin, true);
} else {
digitalWrite(relaiPinR, false);
digitalWrite(ledPin, blinker);
}
//Drehrichtung L
buttonReadL(buttonPinL);
if (millis() - relaiMillis > offMillis && offMillis > 0) {
switch0L = false, switch0R = false;
}
if (switch0L == true) {
digitalWrite(relaiPinL, true);
digitalWrite(ledPin, true);
} else {
digitalWrite(relaiPinL, false);
digitalWrite(ledPin, blinker);
}
}
//Taster Funktion Drehrichtung R
void buttonReadR(int buttonPinR) {
button0readR = digitalRead(buttonPinR);
//Tasterprellen kompensiert
if (button0readR == true) {
button0millis = millis();
}
//Schaltung AUS Funktion (== vergleicht, && und, = gleichsetztend)
if (button0readR == false && button0onR == false && millis() - button0millis > 10) {
button0onR = true;
}
//Schaltung AN Funktion (!=negativiert)
if (button0readR == true && button0onR == true) {
button0onR = false;
switch0R = !switch0R;
relaiMillis = millis();
}
//Taster Funktion Drehrichtung L
void buttonReadL(int buttonPinL) {
button0readL = digitalRead(buttonPinL);
//Tasterprellen kompensiert
if (button0readL == true) {
button0millis = millis();
}
//Schaltung AUS Funktion (== vergleicht, && und, = gleichsetztend)
if (button0readL == false && button0onL == false && millis() - button0millis > 10) {
button0onL = true;
}
//Schaltung AN Funktion (!=negativiert)
if (button0readL == true && button0onL == true) {
button0onL = false;
switch0L = !switch0L;
relaiMillis = millis();
}
}
Vielleicht könntet Ihr den Code mal bei euch einfügen und schauen ob ihr den Fehler findet. Ich komm einfach nicht drauf
Überprüfe die richtige Anordnung der {} Klammern.
Mal ehrlich, sollen wir dir jedesmal die Fehlermeldung vorlesen ?
Das kann Google viel besser.
Und du lernst da gleich was draus.
Das hilft mir leider nicht ich suche nach einer Lösung die ich nicht finde , Ich wende mich deshalb an das Forum weil ich noch ein blutiger Anfänger bin und hoffe hier Hilfe zu bekommen durch erfahrene Arduino & Co nutzer
Wo denkst du sind die klammern falsch? ich habe den Code für die drehrichtung R kopiert und für links eingefügt und angepasst
Gehe dein Sketch durch und überprüfe die richtige und logische Reihenfolge der {} Klammern.
Das ist ganz einfach, eigentlich.
hab ich schon mehr fach vielleicht bin ich einfach zu blind es zusehen ^^
Und kontrolliere deinen Sketch auf Schreibfehler.
Z.B. hier: "buttonReadR" vs. "button0readR"
Das sind alles Flusigkeitsfehler die du selbst finden musst.
Notfalls eine Brille aufsetzen.
Aber wozu haben wir da ein Forum ?
ich werde es für heute gut sein lassen ich weis nicht wo der fehler liegt vielleicht finde ich den fehler wann anders weiter mache
Wenn wir dir helfen sollen, dann musst du schon den Sketch so zeigen, das wir den auch richtig lesen können. Bei deinen gleichlautenden Variablen und Funktionen steigt keiner durch.
Dann noch keinerlei erklärende Kommentare, da ist es kein Wunder das selbst du nicht durchsteigst.
Und wo ist die Fehlermeldung, von der du schreibst ?
combie
December 13, 2023, 9:28am
15
Ich könnte mir vorstellen, dass ihm Fehlermeldungen so doof findet, dass ihm sie gar nicht lesen will.
Am liebsten: Noch nicht einmal ignorieren.
1 Like
Oder....die Fehlermeldung ist so lang, dass diese hier nicht reinpasst.
Moko
December 13, 2023, 10:50am
18
Oder man kann die komplette Fehlermeldung im Screenshot nicht lesen duck und weg
1 Like
//Definition
bool button0readR = false;
bool button0onR = false;
bool button0readL = false;
bool button0onL = false;
//Schaltdefinition
bool switch0R = false;
bool switch0L = false;
//Definition für Millis
unsigned long button0millis = 0;
//LED Definition
bool blinker = false;
unsigned long blinkerMillis = 0;
//Zeitabschaltung Relai
unsigned long relaiMillis = 0;
//Pinzuweisung
void setup() {
pinMode(2, INPUT_PULLUP); //buttonPinR
pinMode(3, INPUT_PULLUP); //buttonPinL
pinMode(11, OUTPUT); //relaiPinL
pinMode(12, OUTPUT); //relaiPinR
pinMode(13, OUTPUT); //ledPin
}
void loop() {
ledBlinker();
setRelai(2, 3, 11, 12, 13, 0);
}
//**************
//* Funktionen *
//**************
//LED Funktion
void ledBlinker() {
//Bereit blinken der LED
if (millis() - blinkerMillis < 10) {
blinker = true;
} else {
blinker = false;
}
if (millis() - blinkerMillis > 1500) {
blinkerMillis = millis();
}
//Millis zurücksetzten
if (blinkerMillis > millis()) {
blinkerMillis = 0;
}
}
//Relai Funktion
void setRelai(int buttonPinR, int buttonPinL, int relaiPinL, int relaiPinR, int ledPin, long offMillis) {
//Drehrichtung R
buttonReadR(buttonPinR);
if (millis() - relaiMillis > offMillis && offMillis > 0) {
switch0R = false, switch0L = false;
}
if (switch0R == true) {
digitalWrite(relaiPinR, true);
digitalWrite(ledPin, true);
} else {
digitalWrite(relaiPinR, false);
digitalWrite(ledPin, blinker);
}
//Drehrichtung L
buttonReadL(buttonPinL);
if (millis() - relaiMillis > offMillis && offMillis > 0) {
switch0L = false, switch0R = false;
}
if (switch0L == true) {
digitalWrite(relaiPinL, true);
digitalWrite(ledPin, true);
} else {
digitalWrite(relaiPinL, false);
digitalWrite(ledPin, blinker);
}
}
//Taster Funktion Drehrichtung R
void buttonReadR(int buttonPinR) {
button0readR = digitalRead(buttonPinR);
//Tasterprellen kompensiert
if (button0readR == true) {
button0millis = millis();
}
//Schaltung AUS Funktion (== vergleicht, && und, = gleichsetztend)
if (button0readR == false && button0onR == false && millis() - button0millis > 10) {
button0onR = true;
}
//Schaltung AN Funktion (!=negativiert)
if (button0readR == true && button0onR == true) {
button0onR = false;
switch0R = !switch0R;
relaiMillis = millis();
}
//Taster Funktion Drehrichtung L
void buttonReadL(int buttonPinL) {
button0readL = digitalRead(buttonPinL);
//Tasterprellen kompensiert
if (button0readL == true) {
button0millis = millis();
}
//Schaltung AUS Funktion (== vergleicht, && und, = gleichsetztend)
if (button0readL == false && button0onL == false && millis() - button0millis > 10) {
button0onL = true;
}
//Schaltung AN Funktion (!=negativiert)
if (button0readL == true && button0onL == true) {
button0onL = false;
switch0L = !switch0L;
relaiMillis = millis();
}
}
der oben stehende Code bringt in Arduino IDE den fehler:
und markiert folgende bereiche rot:
mehr ist durch den Fehler nicht zusehen und da ich nicht weis wie ich den Fehler beseitigen kann frage ich euch es bringt mir also nichts von euch kommentare zubekommen wie kommentier deinen code mal besser oder frag google etc
Ich hoffe hier mal auf einen zutreffen der mir sachlich erklären kann wo mein fehler liegt
Ich habe so gut es geht im Code kommentare platziert damit ich es das nöchste mal wieder verstehe was dort passieren soll