INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Frage zu goto
23.12.2018, 12:19
Beitrag #1
Frage zu goto
Hallo Zusammen, ich bin neu hier und hab mir schon einiges durchgelesen.
Der Arduino ist für mich ebenfalls neu, aber erscheint mir aufgrund der Kosten und Möglichkeiten sehr geeignet kleinere Projekte damit zu realisieren.
Gleich vorweg, von c++ habe ich nur wenig Ahnung. Früher hatte ich SPS programmiert und dann vor Jahren ein paar Dinge mit einer CCOntrol von Conrad gemacht. Gartenbewässerung, Poolsteuerung usw.
Dann habe ich noch eine Steuerung für ein Stromagregat gemacht um automatisch zu starten und stoppen und genau darum geht es mir jetzt. Ich möchte diese Steuerung nochmal neu mit einem Arduino machen. Eignetlich ist mir auch alles klar wie ich das umsetzen kann, dann habe ich hier einiges gelesen über die Programmierung und Goto's und das man diese wohl nicht mehr so anwendet.
Im Moment habe ich aber keine Idee wie ich die goto's ersetzen kann, würde es aber gerne gleich von Anfang an richtig machen.
Deshalb hier meine Frage, wie kann ich die Goto's im folgenden ccbasic Programmcode ersetzen.

Code:
'
' C-Control1/BASIC       aggregat.bas
'
' Systemvoraussetzungen:
'
' - serielle Verbindung zum PC
'
' Start Stop Automatik für ein Strom Aggregat
'
'********************************************************************

'Eingänge
define start_key       port[1] 'taster
define stop_key        port[2] 'taster
define oeldruck        port[3] 'Öldruckschalter
define strom           port[4] 'Aggregat liefert Strom
define auto_start      port[5] 'Relais vom ASP

'Ausgänge
define start_relais port[9]
define stop_relais  port[10]

'bits
define start_bit   bit[1]
define stop_bit    bit[2]
define strom_bit   bit[3]
define strom_aus   bit[4]
define asp_bit     bit[5]
define asp_aus     bit[6]

'****** Programm ******

#loop


if not start_key or not auto_start then gosub start else start_bit = off
if not stop_key or not oeldruck or strom_aus or asp_aus = on then gosub stop else stop_bit = off
if  not strom = on then strom_bit = on
if not strom = off and strom_bit = on then strom_aus = on
if not auto_start = on then asp_bit = on
if not auto_start = off and asp_bit = on then asp_aus = on

goto loop

'****** Programm Ende ******

'Unterroutinen
#start
  if not strom = on then return
  if start_bit = ON then return
  start_bit = on
  start_relais = ON :  pause 150
  start_relais = off
return

#stop
  strom_aus = off :   strom_bit = off : asp_bit = off
  if stop_bit = ON then return
  stop_bit = on
  stop_relais = ON :  pause 500 '2sec = 100 * 20 ms
  stop_relais = off
  asp_aus = off
return
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2018, 12:31
Beitrag #2
RE: Frage zu goto
Das Basic-Programm als Grundlage wird Dich wohl meist in die Irre führen.
Du solltest als erstes die Grundlagen der Arduino-Programmierung in C/C++ lernen.
Dazu gibt es viele gute Beiträge in der Rubrik Tutorials und Literatur.

Der einfachste Einstig erfolgt mit einem Starterkit (z.B. von hier oder von wo anders, nur möglichst nicht von Franzis).
Dabei wirst Du merken, dass Du goto loop nicht brauchst, weil Du bereits einen Loop hast.
Gosub sind in C/C++ Funktionen.

Über diesen Weg wirst Du Deine Probleme sicher lösen können. Wenn Du dabei konkrete Fragen hast, kannst Du die gern hier stellen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2018, 12:58
Beitrag #3
RE: Frage zu goto
Hey vielen Dank,
ich hab mir auch schon einige Programmbeispiele angeschaut und verstehe diese auch weitestgehend.
Ich hab nur noch nichts konkretes gefunden wie man in eine Unterroutine springen kann.
Ich finde das eigentlich sehr übersichtlich, ein paar Zeilen Hauptprogramm und den Start und den Stop in eine Unterroutine zu schreiben.
Klar den gotoLoop brauche ich nicht weil er schon da ist.
Mir geht es um die goto Unterroutine, da sehe ich im Moment die Lösung nicht um das ohne goto zu lösen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2018, 13:28 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2018 13:29 von hotsystems.)
Beitrag #4
RE: Frage zu goto
(23.12.2018 12:58)uweausbaden schrieb:  .....
Mir geht es um die goto Unterroutine, da sehe ich im Moment die Lösung nicht um das ohne goto zu lösen.

Auch das ist nicht kompliziert:

Beispiel:
Code:
//deine loop
void loop()
{
deine_funktion()  //aufruf deiner Funktion (Unterroutine)
}

// deine Funktion
void deine_funktion()
{
//hier stehen deine Anweisungen
}

Am Ende der Funktion geht es automatisch zurück, von wo aus die Funktion aufgerufen wurde.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2018, 13:32
Beitrag #5
RE: Frage zu goto
ahhh ok, also ich rufe eine Funktion auf anstatt mit einem goto hin zu springen.
OK verstanden.
Merci vielmals.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2018, 13:56
Beitrag #6
RE: Frage zu goto
(23.12.2018 13:32)uweausbaden schrieb:  ahhh ok, also ich rufe eine Funktion auf anstatt mit einem goto hin zu springen.
OK verstanden.
Merci vielmals.

Ja, genau....gerne.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Frage zur <Adafruit_PWMServoDriver.h> Christian_Moba-Arduino 7 347 16.10.2020 12:32
Letzter Beitrag: Tommy56
  Generelle Frage zum Schlafen legen DO3GE 3 289 02.10.2020 10:56
Letzter Beitrag: Tommy56
  Frage zu Speicherplatzverbrauch Retian 3 482 04.08.2020 19:11
Letzter Beitrag: Tommy56
  Eine Frage zu einer neuen ino Datei Elly 22 1.612 01.06.2020 19:59
Letzter Beitrag: Elly
Smile Frage zu Font und Auswahl Sulawesi 5 763 25.05.2020 12:12
Letzter Beitrag: hotsystems
Sad Frage zu Daten die vom Nextion kommen Lampe 2 757 26.04.2020 12:53
Letzter Beitrag: Lampe
  Frage zu "void" Lampe 7 889 14.04.2020 18:06
Letzter Beitrag: Lampe
  Frage zum richtigen verwenden einer Funktion Gerdchen03 3 756 10.04.2020 19:37
Letzter Beitrag: Tommy56
  allgemeine Frage zum Programmaufbau MKnet83 2 667 09.04.2020 12:31
Letzter Beitrag: db91595
  Frage zu Uhrzeit auf Display (schneller laufen lassen) ThorstenP 3 718 07.04.2020 14:52
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste