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
  Hilfe bei Formulierung der Frage Matt 3 304 23.02.2019 12:45
Letzter Beitrag: Tommy56
  Frage zur Datei "preferences.txt" daja64 5 306 17.02.2019 21:00
Letzter Beitrag: amithlon
  Guren Morgen, Frage zu SD BanditBandeh 2 370 05.12.2018 10:19
Letzter Beitrag: Tommy56
  define Frage Zerebrator 5 606 22.08.2018 08:22
Letzter Beitrag: amithlon
  Frage zur Programierung ????? potmc 7 670 18.08.2018 11:34
Letzter Beitrag: Hilgi
Exclamation Frage zur I2C zwischen Master und Slave saberlucien 6 1.218 27.02.2018 15:49
Letzter Beitrag: Tommy56
  [Frage] Unterschied zwischen &=~ und ^= beim Bit ändern auf dem Port? avoid 13 1.828 11.01.2018 00:53
Letzter Beitrag: avoid
  Frage zu casting Bode1979 3 777 11.11.2017 19:28
Letzter Beitrag: Bode1979
  Frage zu einer Lichtschrankenmessung - Nullwertabgleich Stargazer 12 3.456 03.11.2017 19:10
Letzter Beitrag: Binary1
  Frage zur Adressierung von Variablen ardu_arne 14 2.394 28.10.2017 11:16
Letzter Beitrag: ardu_arne

Gehe zu:


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