Programm ablaufen lassen nach anlegen der Spannung und Schaltimpuls setzen

Hallo.

Ich bin neu hier, bin 41 Jahre alt, gelernter Kommunikationselektroniker, kenne mich mit SPS und Siemens-Logo aus, aber nun möchte ich aufgrund der Kompaktheit und des Preises gerne auch mal was neues probieren.

Für eine automatisch ablaufende Programm nach dem einschalten der Spannungsversorgung im Arduino ein einfaches Programm ablaufen, das in zeitlichen Abständen einmalig zwei digitale Ausgänge setzt.

Sollte ja theoretisch klappen, mit SPS und Siemens-Logo wäre das kein Problem für mich, aber bei Arduino bin ich noch ein Newbie.

Kann man diese Funktion (Programmablauf beim anlegen der Spannung ans Adruino) programmieren ?

Brauche ich programmierkenntnisse in C+ oder kann ich das Programm auch mit einem Komfortablen Editor erstellen ?

Sind die Arduinos aus der Bucht für 7 Euro auch funktionsfähig, oder sind es Plagiate ?

Vielen Dank

Gruß Ralf

Hallo und herzlich Willkommen.
Ja, das geht mit dem Arduino und ein wenig C++ sollte schon drauf sein.
Sehr viel kannst du aber aus den Beispielen in der IDE entnehmen.

Die Arduinos aus der Bucht sind zwar Nachbauten aber funktionieren in der Regel problemlos.

Hi

Wenn Du nicht wirklich in C++ einsteigen möchtest: Es gibt auch die Möglichkeit, den Arduino per Graphik zu programmieren.
Kannst Dir ja Mal anschauen:
graphische-programmierumgebungen-ide-fuer-arduino auf lxrobotics.com
IDE: integrated development environment - Integrierte Entwicklungsumgebung

MfG

Schrauber-Jack:
Kann man diese Funktion (Programmablauf beim anlegen der Spannung ans Adruino) programmieren ?

Ja, nennt sich setup.

void setup() {                
  // nach Reset einmalig
  pinMode(led, OUTPUT);     
}

void loop() {
  // Endlosschleife
}

Schau mal in die Beispiele der IDE, da findest Du mehr.

Schrauber-Jack:
Brauche ich programmierkenntnisse in C+

Ja, besser auch in OOP, auch wenn Du selbst nur in C programmierst, da Programmbibliotheken OOP nutzen.

Schrauber-Jack:
Sind die Arduinos aus der Bucht für 7 Euro auch funktionsfähig, oder sind es Plagiate ?

Funktionsfähige Nachbauten, manche legal (Open Source), manche illegal. Meine privaten Projekte erfreuen sich an Nanos für 2 - 3 €. Da mache ich aber nichts sicherheitsrelevantes, nur “Spielzeug”. Ich bin bislang bei aliexpress nur auf ehrliche, freundliche Asiaten gestoßen, andere berichten von negativen Erfahrungen.

Damit willkommen im Forum und viel Spaß beim Umdenken!

Hallo Ralf.

Schaue dir mal das hier an.

Der hat noch weitere Beispiele. mit dem habe ich angefangen. Da kann man die Programme mitschreiben und gleich parallel testen.
Es gibt auf Youtube viele Beispiele die rel. gut erklärts sind.

Franz
Übrigens auch Kommunikationstechniker und die Logo habe ich hier auch zum lernen aufgebaut. War dann auch auf der Suche nach einer Preiswerteren Lösung. :slight_smile:

Hier hat sich einer viel Arbeit gemacht, um eine deutsche Programmieranleitung für den Arduino als PDF zu erstellen.
https://www.arduinoforum.de/referenz.php

Hallo.

Ich habe mir nun mal das erste Video angeschaut, es scheint ja machbar zu sein

Folgendes müsste ich nur machen :

Den Ausgang als Ausgang definieren

Das blink-programm so abändern, daß die blink-routine zu "setup" reinkommt, dann sollte es ja laufen.

Kann ich auch so ein "nano" Modul einsetzen für kleinere Sachen?

Wenn ich kein USB Kabel angesteckt habe, wie mache ich dann die Spannungsversorgung?

Auf jedenfalls mal vielen Dank für die erste Unterstützung

Schrauber-Jack:
Kann ich auch so ein "nano" Modul einsetzen für kleinere Sachen?

Wenn ich kein USB Kabel angesteckt habe, wie mache ich dann die Spannungsversorgung?

Genau das ist das Problem bei den meisten Video-Beiträgen.
Die zeigen selten, meist nie Details.

Immer nur das es gehen kann, selten wie.

Die Spannung (5 Volt) legst du an den 5 Volt Pin an.
7 - 12 Volt an Vin.
Dann kannst du kleine Verbrauchen auch an den 5 Volt Pin anschließen.
Dabei darfst du aber nicht die Verlustleistung des Onboard-Reglers außer Acht lassen.

HotSystems:
Genau das ist das Problem bei den meisten Video-Beiträgen.
Die zeigen selten, meist nie Details.

Immer nur das es gehen kann, selten wie.

Die Spannung (5 Volt) legst du an den 5 Volt Pin an.

Naja, es beanwortete seine Frage wie man Ausgänge einrichten kann. Und es zeigt gleich am Anfang wie mal die 5 Volt an den Uno anlegt. Ich weiße eigentlich schon auf Beiträge hin, die die Frage beantworten. Nur neue Fragen kann ich damit nicht vorraus beantworten, weil mir dazu die Hellseherischen Fähigkeiten fehlen, um zu wissen welche Fragen als nächstes kommen. :slight_smile:

Franz54:
Naja, es beanwortete seine Frage wie man Ausgänge einrichten kann. Und es zeigt gleich am Anfang wie mal die 5 Volt an den Uno anlegt. Ich weiße eigentlich schon auf Beiträge hin, die die Frage beantworten. Nur neue Fragen kann ich damit nicht vorraus beantworten, weil mir dazu die Hellseherischen Fähigkeiten fehlen.

Das sollte auch keine Kritik an deinem Beispiel sein.
Allerdings stelle ich vermehrt fest, dass Einsteiger hier Fragen nach Sichtung eines Videos stellen.

Beispiel:
"Ich habe alles entsprechend dem Video aufgebaut, aber es funktioniert nicht. Warum geht es nicht."

Ein vernünftiger Video-Beitrag sollte schon alles zeigen, auch wie die Spannung angeschlossen wird.
Aus diesem Grund meine Meinung dazu.

Schrauber-Jack:
Hallo.

Ich habe mir nun mal das erste Video angeschaut, es scheint ja machbar zu sein

Folgendes müsste ich nur machen :

Den Ausgang als Ausgang definieren

Das blink-programm so abändern, daß die blink-routine zu "setup" reinkommt, dann sollte es ja laufen.

Gehe anders an deine Themen ran, dann hast du bessere Erfolge. Der Bursche da erklärt Haarklein, welche Befehle du schreiben musst, dass der Arduino genau das macht, was er machen soll. Das ist mal die wichtige Info.

Wenn du dann nicht versuchst das was der geschrieben hat, zu kopieren und zu vergewaltigen, dass es das tut was du willst, sondern du einfach die Info die in dem Beitrag war, als Antwort auf deine Frage zu benutzen, dann hast du schon die halbe Miete. Du musst immer jede Zeile die erklärt wird VERSTEHEN (und der erklärt eigentlich seeeehr gut), auf keinen Fall das nur benutzen, um es für dich Umzubauen. O.K. so habe ich jedenfalls versucht diese Infos zu nutzen. Wenn ich eine Zeile nicht verstanden habe, dann hab ich mir den Streifen soooooo oft angesehen, bis ich es kapiert habe, was jede einzelne Zeile macht.

Sonst bleibst du immer ein Kopierer der keinen Fehler selber finden kann. Dass würde mir nicht helfen.

Die Spannung (5 Volt) legst du an den 5 Volt Pin an.
7 - 12 Volt an Vin.
Dann kannst du kleine Verbrauchen auch an den 5 Volt Pin anschließen.
Dabei darfst du aber nicht die Verlustleistung des Onboard-Reglers außer Acht lassen.

Du kannst die Platine über den USB Stecker mit 5V über ein Stecknetzteil, versorgen, wie das bei den meisten Smartphons gemacht wird.
Grüße Uwe

Hallo.

Ich meine zumindest die Programmierzeilen, die im Video beschrieben sind schon verstanden zu haben.

Habe mal die entsprechende Funktion versucht zu programmieren:

Led wird einige male angesteuert und dann nach einer Stunde nochmal einmal

Meine offenen Fragen im Moment:

  1. Gibt es ein Simulationsprogramm, oder muss man es immer auf einem Arduino testen ?

  2. Kommt aus einem Ausgang immer eine kleine Spannung raus, die ich mit einem Vorwiderstand und einem NPN Transistor an ein Relais mit Freilaufdiode legen kann ?

/*
 
Blinkprogramm
*/

// the setup function wird beim starten einmal asgeführt
void setup() {

    // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);   //definieren des Ausganges 13/LED als Digitital-Out
   
 digitalWrite(LED_BUILTIN, HIGH);   // Led ein
  delay(500);                       // wait for 0,5 second
  digitalWrite(LED_BUILTIN, LOW);    // Led aus
  delay(5000);                       // wait for 5 second
 digitalWrite(LED_BUILTIN, HIGH);   // Led ein
  delay(500);                       // wait for 0,5 second
  digitalWrite(LED_BUILTIN, LOW);    // Led aus
  delay(5000);                       // wait for 5 second
   digitalWrite(LED_BUILTIN, HIGH);   // Led ein
  delay(500);                       // wait for 0,5 second
  digitalWrite(LED_BUILTIN, LOW);    // Led aus
  delay(5000);                       // wait for 5 second
   
}

// the loop function wird fortlaufen ausgeführt
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // led ein
  delay(500);                       // wait for 0,5 second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(3600000);                       // warten 1 Stunde lang
}

Wenn es deinen Erwartungen entspricht, ist es schön und gut so!

Ansonsten, befürchte ich, dass dir die extensive Verwendung von delay() irgendwann auf die Füße fallen wird.
Aber das wird erst die Zukunft zeigen.

Eigentlich möchtest du eine Ablaufsteuerung bauen, einen endlichen Automaten.
(vermute ich mal)
Aber das weißt du noch nicht.

Ja, es soll eine Ablaufstsuerung werden, die beim Anlagen der Versorgungsspannung einfach die Ausgange schaltet.

Die Schaltzeiten sind auch nicht kritisch, es geht um eine automatische Startfunktion für einen CD/DVD Player:

Ich drücke die Play-Taste, der Player schaltet ein und liest die Disc ein, dauert einige sekunden

Danach muss die Play taste nochmal gedrückt werden, damit die Disc losläuft

Damit das auch sicher klappt, wird die Play taste einfach mehrmals gedrückt (habe ich am Gerät schon probiert, mehrmaliges drücken schadet nicht.

Ist die Disc zu ende, soll sie wieder gestartet werden

Zum Potentialfreien entkoppeln würde ich auch ein kleines Relais nehmen.

Kann ich ein Relais mit einem NPN Transistor und Vorwiderstand an jeden beliebigen Ausgang hängen ?

Oder kann ich gar ein Reedrelais mit 500 Ohm und 5 Volt (10mA) direkt an einen Ausgang hängen ?

Danke !

Relais.jpg

Durchaus!
Wie ich sehe, hast du sogar die an die Freilaufdiode gedacht.
Gut!

Hallo.

Eine LED hat ja auch schon 10-20mA, da könnte man ein Relais mit 10mA ja auch direkt ansteuern (mit Freilaufdiode)

Aber als Elektronikbastler habe ich auch noch genügend BC550, Widerstände & Co rumliegen aus meinen aktiven Zeiten (Platinenätzen, Löten usw.)

Aber Arduinos gab es damals noch nicht, auch kein Internet, sondern nur Bücher der 300er-Schaltungs-Serie und Elektor usw.

combie:
Ansonsten, befürchte ich, dass dir die extensive Verwendung von delay() irgendwann auf die Füße fallen wird.
Aber das wird erst die Zukunft zeigen.

Wie ist das mit dem Delay gemeint ?

Bei der SPS gab es Zykluszeiten für den Internen Programmdurchlauf, da waren zeitkritische Befehle manchmal Problematisch.

Aber 5 Sekunden warten, oder gar eine Stunde, sollte doch drin sein, wenn es nicht genau gehen muss.

Danke

Bei der SPS gab es Zykluszeiten für den Internen Programmdurchlauf, da waren zeitkritische Befehle manchmal Problematisch.

Richtig!

Diese, dir aus dem Bereich, schon bekannten Verfahren, solltest du auch auf den Arduinos anwenden.

Aber 5 Sekunden warten, oder gar eine Stunde, sollte doch drin sein, wenn es nicht genau gehen muss.

Solange nichts anderes nebenbei erledigt werden soll, kein Problem.

Aber soll auch nur 1 LED in einem anderen Takt nebenher blinken, oder irgendwas anderes getan werden, dann fällt dir das Delay auf die Füße.

Es ist nicht verboten delay() zu verwenden.
Aber der typische Anfänger lernt so, sich selber, in Bredouille zu begeben.

Schrauber-Jack:
Kann ich ein Relais mit einem NPN Transistor und Vorwiderstand an jeden beliebigen Ausgang hängen ?

Oder kann ich gar ein Reedrelais mit 500 Ohm und 5 Volt (10mA) direkt an einen Ausgang hängen ?

Beides ja ist o.k.

Zu den Delay´s. Wie schon gesagt wird. Die werden dir bei weiteren Arbeiten sehr schnell auf die Füße fallen. Werend der delay Zeit macht die CPU NICHTS. Man will aber meistens werend dieser Zeit andere Aufgaben bearbeiten. Dann ist das nichts. Man kann dazu mit Millis arbeiten. Damit überprüft man ob die Zeit abgelaufen ist, wenn nicht überspringt man den Teil den man erst nach Ablauf ausführen möchte und die CPU ist für andere Aufgaben frei. Aber bei dem Testprogramm das du da jetzt mal machst ist das mit den Delay´s ja noch o.k.

Wenn Du sehr SPS ähnlich programmieren möchtest empfehle ich Dir die PLC-Lib:

hth