Motor Relaisteuerung Richtungswechsel

Hallo
Dem armen Linker im IDE fehlt der Verweis auf die Funktion setup()

Hab ich gemacht :+1:

Was heißt das jetzt genau, sry bin Anfänger :sweat_smile:

Die Arduino-Umgebung nimmt Dir eine Menge ab.
Insbesondere werden schon grundlegende HeaderDateien eingebunden und auch die eine oder andere Funktion deklariert.
Dazu gehört auch, das es zwei vorgefertigte Funktionen gibt.
Die eine ist loop() - die macht, was ihre Aufgabe ist. Sie "dreht sich im Kreis" und sorgt dafür, das Dein Code immer und immer wieder ausgeführt wird.

Die andere ist setup().
Setup wird nur einmal - vor loop() - ausgeführt.

Wenn zum compilieren also in der "Vorlage" setup() gesucht und nicht gefunden:
Das ist Deine Fehlermeldung.

1 Like

Ah oke das habe ich jetzt verstanden, hätte es jetzt probiert mit Setup nur funktioniert das nicht so liegt vl auch daran das ich nicht weiß wie und wo :sweat_smile:

Mit einem guten und modernen C++ Buch könntest du dein Wissen aufpeppen.

Naja, das geht natürlich nicht.
Aber wenn Du so wirklich ganz frisch einsteigst, dann vor dem Buch ein Pdf - das ist schön einfach und verständllich geschrieben.
In dem Post: Code ausfüren wen 2 Bedinungen erfült sind(if) - #14 by my_xy_projekt
ist unten ein pdf zum download angehangen.
Lies es durch. Jeden Abend ein wenig. Und bitte ganz vorne anfangen.

Wenn du uns den aktuellen Sketch zeigst, haben wir sogar eine Chance dir zu helfen.

Das wäre sicher sehr hilfreich danke dafür werde ich auch machen, das problem ist nur das das Projekt nicht für mich ist und ich das eigentlich dieses Wochenende Abschließen wollte :sweat_smile:

Muss ich nach const int eigentlich noch OUTPUT vergeben ?weil das wäre ja dann in Setup oder ?

Vergiss es. So bissl Grundlagen brauchst Du dafür.
Und nein, ich kann Dir nicht alles liefern :wink:

Ach schau, doch schon was gelernt... :slight_smile:
Ja.
Und bitte mach Dir gleich ein Serial.begin rein und eine erste Ausgabe, damit Du siehst das Dein Code auch anläuft. Bei mir:

void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));

Ich habe gar kein Aktuelles Sketch, ich weiß nicht wie ich das ändern muss :grimacing:

const int sensorPin = 13;
const int motor1Pin = 4;
const int motor2Pin = 5;
const int motor3Pin = 6;
const int motor4Pin = 7;

unsigned long timeMark;

void setup()
{
Serial.begin(115200);
Serial.println(F("Start..."));
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(13,INPUT);
}



void loop() {
if (digitalRead(sensorPin) == LOW) {
timeMark = millis();
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, LOW);
digitalWrite(motor3Pin, HIGH);
digitalWrite(motor4Pin, HIGH);
}
else if (millis()- timeMark <= 4000 ) {
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, HIGH);
digitalWrite(motor3Pin, LOW);
digitalWrite(motor4Pin, LOW);
}
else {
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, HIGH);
digitalWrite(motor3Pin, HIGH);
digitalWrite(motor4Pin, HIGH);
}
}

Habe es geschaft :muscle:

Danke euch allen für eure Hilfe :sweat_smile:
Werde dann von fertigen Projekt ein Bild Posten :+1:

Danke an dich ganz besonders, werde mir die PDF jetzt Stück für Stück durchlesen :smiley:

Mfg

Das ist massiv unglücklich.
2 Dinge: Pin 13 ist auf'm UNO die Onboard-LED. Das könnte kontraproduktiv sein, den alsEingang zu nutzen.
Und wenn Du schon PIN's deklarierst, VERWENDE DAS!

pinMode(motor1Pin,OUTPUT)

naja, hast noch viel vor.
PS: Das Umschalten ohne kurzen Halt macht das System anfällig.

Oke aber 12 schon ??

Mit Delay darf ich das jetzt erfahrungsweiße nicht machen oder ??

Aber doch nicht bei einem UNO.

Ja. 2,3, oder 8 gehen auch.

Das ist erfahrungsgemäß nicht gut gelöst.

Dein Stichpunkt: Schrittkette.
Schau in das pdf unter switch/case.
Hast ja noch die Nacht zeit - und morgen den halben Tag zum bauen :wink:

Ja. Aber wenn ich den später als Kontrolle verwenden will... Ich weiss, wie Projekte wachsen :slight_smile: Aber ok.

Einigen wir uns daß beim UNO pin 13 auch gut als Eingang funktioniert weil die LED mittels Optokoppler Operationsverstärker entkoppelt ist, Aber in einem späteren, ausgebauten Moment als einfaches Userinterfaces für etwaige einfachste Signalgabe verwendet werden kann.

Wenn man dann 13 frei hat dann kann man es auch mal auf die schnelle zum debuggen verwenden ohne irgendwo an einem freien PIN eine LEd hinfummeln zu müssen.

Grüße Uwe

1 Like

Es ist ein Opamp. Eine LED mit Optokoppler entkoppeln macht irgendwie keinen Sinn.

Sie ist entkoppelt.
Und um das abzuschliessen:
Es ging mir einzig darum, das PIN 13 am UNO schon eine Doppelverwendung hat und das später auf die Füsse fällt, wenn gebraucht.
Nicht weniger. Nicht mehr. Unglücklich rüber gebracht für die "eingefleischten" - aber ich versuche dem Fragesteller entgegen zu kommen.

Ende der Diskussion.