Forum

Einloggen | Registrieren | RSS  

olit(R)

E-Mail

Berlin,
11.04.2021,
12:35
(editiert von olit
am 11.04.2021 um 13:09)
 

CCBASIC for...next ? (Computertechnik)

Mein Sohn meckert mit mir rum, Weil ich den Befehl so verwendet habe.


Warten ist eine Sprungmarke
#warten
...
...

for z=o to 255
if port off then warten
next


Nun wird gesagt,
"Jede FOR-Schleife darf im Verlauf des Programms nur über ihre eigene NEXT-Anweisung laufen.
Die schleife wird in dem Fall zwar nicht über next beendet weil ich ja bei erfüllung der Bedingung raus springe.
Aber sie wied ja nicht über ein NEXT einer anderen schleife beendet.
Außerdem verwende ich den Befehl so, in zwei Programmen problemlos.

Auch sowas sollte funktionieren.
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
If Strahl=off then warten
Next
next
next
next
next

Das soetwas verboten ist, ist klar
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
For z1=0 to 255
If Strahl=off then blabla '
Next
next
next
next
#Blabal
next
next

olit(R)

E-Mail

Berlin,
14.04.2021,
10:01
(editiert von olit
am 14.04.2021 um 10:19)


@ bigdie

CCBASIC for...next ?

» Wie gesagt, ist für meinen Geschmack einfacher, dann kann man in einer
» Schleife Eingänge z.B Taster abfragen ohne das man die länger drücken muss.
» Solche Zeitgeschichten kommen in eine andere Schleife. Da kann man dann
» auch mal 1s warten ohne eine Eingabe zu verpassen. Früher hat man eilige
» Sachen mit Interrupts gemacht, wenn ich mich an Assembler mit dem Z80
» Erinnere. Geht heute wohl auch noch, Vermutlich macht das die Picaxe
» Software unter der Oberfläche auch auf diese Art. Für mich ist das
» jedenfalls so einfacher und besser strukturierbar. Aber ich bin da auch nur
» blutiger Anfänger.
»
» Aber ich glaube so was wie die Schildkrötenfarm hätte ich wahrscheinlich
» eher mit einer Siemens Logo oder anderer SPS gemacht. Das programmiert sich
» für mich deutlich einfacher und man kann auch besser simulieren und auch
» live im Betrieb gut am Rechner sehen was passiert und das alles ohne Code
» sondern grafisch.
» Wenn Siemens mal eine Logo Nano bauen würde Formfaktor wie Arduino Nano
» aber mit Logosoft programmierbar, dann würde ich mich mit solchem Code Kram
» sicher nicht mehr beschäftigen.;-) Wobei so einfache Zeitgeschichten mit
» so einem 8-Beiner Picaxe als Ersatz für einen 555 mit ein paar zusätzlichen
» Funktionen ist schon nicht übel. Aber oft hat man dann auch wieder
» zusätzlichen Aufwand bei der Spannungsversorgung. Den 555 kann man z.B.
» direkt an 12V Kfz Bordspannung benutzen. für den Picaxe brauchst du 5V oder
» weniger und das auch an allen Eingängen.

Der Achtbeiner hat kein Interrupt.
Die Spannungsversorgung ist in diesem Fall sowieso etwas heikel. Die Schaltung wird über das Stromstoßrelais versorgt. Und für den Schaltimpuls werden die beiden Adern kurzgeschlossen. In der Zeit muss die Schaltung vom Ladeelko versorgt werden.

Man kann das Problem auch Hartware mäßig lösen.
http://www.elektronik-kompendium.de/forum/forum_entry.php?id=249942&page=0&order=time&descasc=desc&category=all

olit(R)

E-Mail

Berlin,
14.04.2021,
09:54

@ Itzlbritzl

CCBASIC for...next ?

» »
» » Und um einen 100ms Steuerimpuls für ein Stromstoßrelais zu kreieren,
» ohne
» » die Sensoren aus den Augen zu lassen, musste ich ein 555 Monoflopp
» » außerhalb des µC installieren.
» »
»
» Bau dir die Software als kooperatives System. Also jede Aufgabe benötigt
» nur eine definierte Zeit und dann gibt sie an die nächste Aufgabe ab. Etwa
» so:
»
» Warte bis neue Millisekunde
»
» 'task 1
» If Steuerimpuls > 0 then
» Relais = an
» Steuerimpuls = Steuerimpuls - 1
» Else
» Relais = aus
» End
»
» 'task 2
» If anything do
» Something
» End
»
» Die 1ms kannst du auch weiter runter teilen in Aufgaben, die nur alle x MS
» laufen sollen.
»
» Musst halt sicherstellen, dass kein Task zu lange dauert. Sonst über einen
» Zustandsautomaten aufteilen.
»
» Etwa so:
»
» 'task 1a
» If task = 1 then
» Blabla
» End
»
» If task = 2 then
» Blubblub
» End
»
» Task = task + 1
» If task > 2 then task = 1

Die beiden Fototransistoren sind 10mm auseinander.
Ich muss aber die Reihenfolge der Unterbrechung auswerten. Da ist mit warten nichts zu machen. Der Weitbefehl des kleinen µC hat ein 20ms Takt.

bigdie(R)

14.04.2021,
03:07

@ olit

CCBASIC for...next ?

Wie gesagt, ist für meinen Geschmack einfacher, dann kann man in einer Schleife Eingänge z.B Taster abfragen ohne das man die länger drücken muss. Solche Zeitgeschichten kommen in eine andere Schleife. Da kann man dann auch mal 1s warten ohne eine Eingabe zu verpassen. Früher hat man eilige Sachen mit Interrupts gemacht, wenn ich mich an Assembler mit dem Z80 Erinnere. Geht heute wohl auch noch, Vermutlich macht das die Picaxe Software unter der Oberfläche auch auf diese Art. Für mich ist das jedenfalls so einfacher und besser strukturierbar. Aber ich bin da auch nur blutiger Anfänger.

Aber ich glaube so was wie die Schildkrötenfarm hätte ich wahrscheinlich eher mit einer Siemens Logo oder anderer SPS gemacht. Das programmiert sich für mich deutlich einfacher und man kann auch besser simulieren und auch live im Betrieb gut am Rechner sehen was passiert und das alles ohne Code sondern grafisch.
Wenn Siemens mal eine Logo Nano bauen würde Formfaktor wie Arduino Nano aber mit Logosoft programmierbar, dann würde ich mich mit solchem Code Kram sicher nicht mehr beschäftigen.;-) Wobei so einfache Zeitgeschichten mit so einem 8-Beiner Picaxe als Ersatz für einen 555 mit ein paar zusätzlichen Funktionen ist schon nicht übel. Aber oft hat man dann auch wieder zusätzlichen Aufwand bei der Spannungsversorgung. Den 555 kann man z.B. direkt an 12V Kfz Bordspannung benutzen. für den Picaxe brauchst du 5V oder weniger und das auch an allen Eingängen.

Itzlbritzl(R)

13.04.2021,
22:16

@ olit

CCBASIC for...next ?

»
» Und um einen 100ms Steuerimpuls für ein Stromstoßrelais zu kreieren, ohne
» die Sensoren aus den Augen zu lassen, musste ich ein 555 Monoflopp
» außerhalb des µC installieren.
»

Bau dir die Software als kooperatives System. Also jede Aufgabe benötigt nur eine definierte Zeit und dann gibt sie an die nächste Aufgabe ab. Etwa so:

Warte bis neue Millisekunde

'task 1
If Steuerimpuls > 0 then
Relais = an
Steuerimpuls = Steuerimpuls - 1
Else
Relais = aus
End

'task 2
If anything do
Something
End

Die 1ms kannst du auch weiter runter teilen in Aufgaben, die nur alle x MS laufen sollen.

Musst halt sicherstellen, dass kein Task zu lange dauert. Sonst über einen Zustandsautomaten aufteilen.

Etwa so:

'task 1a
If task = 1 then
Blabla
End

If task = 2 then
Blubblub
End

Task = task + 1
If task > 2 then task = 1

Lupus

13.04.2021,
16:31

@ Lupus

OT Bilder

» » Hallo Olit,
» »
» » Sehr interessantes Projekt. Mein Respekt an Dich und Deinen Sohn!
» » Nur eine Kritik muss ich loswerden.
» » Die Fotos gehören dazu und sind keineswegs OT! :ok: :cool:
»
»
» Kann ich mich da nur anschließen - Hut ab!

olit(R)

E-Mail

Berlin,
13.04.2021,
15:27
(editiert von olit
am 13.04.2021 um 16:12)


@ bigdie

CCBASIC for...next ?

» » Ich habe bisher nur den kleinen Achtbeiner Programmiert (Unit-Micro)
» » Mit meinem Sohn haben wir zwei größere Projekte realisiert. Da war ich
» aber
» » nur der Hartware Fritze.

» Ich versuche mich auch mit solchem Kram. Hab schon immer mal probiert, aber
» meist nach der blinkenden LED wieder in die Ecke geworfen.
» Was mir entgegen kommt, ist so eine Art Multitaskingfähigkeit. Man kann
» also je nach Prozessor z.B. 8 Programmschleifen parallel ablaufen lassen.

Die Dinger die ich einsetze sind leider nicht Multitaskingfähig.
Da stieß ich auf das Problem, dass ich eine Zeitverzögerung benötigte aber gleichzeitig zwei Fotosensoren der Schranke im Auge behalten musste.

#Abwarten ' rund 0,6s Abwarten ob es nur eine kurze Freigabe zwischen den Beinen war, bzw. die Person zurückging.
For z=0 to 255
If Strahl=off then warten
next ' Da z nur ein Byte hat, muss die For-Next Schleife 6*255=1530 mal durchlaufen werden
For z=0 to 255
If Strahl=off then warten
next
For z=0 to 255
If Strahl=off then warten
next
For z=0 to 255
If Strahl=off then warten
next
For z=0 to 255
If Strahl=off then warten
next
For z=0 to 255
If Strahl=off then warten
Next
………….

Aber das ist eben nicht korrekt.
Eine saubere Lösung würde so aussehen.

#Abwarten 'rund 0,6s Abwarten ob es nur eine kurze Freigabe zwischen den Beinen war, bzw. die Person zurückging.
z1=0 : z2=0
#Wiederholen
z1=z1+1
if Strahl=off then warten
if Z1<255 then wiederholen '1. Wiederholungsschleife 255 mal
z1=0: Z2=z2+1
if z2<6 then wiederholen '2. Wiederholungsschleife 6 mal
………….

Eine andere nicht korrekte Lösung würde so aussehen.

#Abwarten
for z1=0 to 255
for z1=0 to 255
for z1=0 to 255
for z1=0 to 255
for z1=0 to 255
for z1=0 to 255
If Strahl=off then warten ' Raus springen verboten :-(
next
next
next
next
next
next
……………

Und um einen 100ms Steuerimpuls für ein Stromstoßrelais zu kreieren, ohne die Sensoren aus den Augen zu lassen, musste ich ein 555 Monoflopp außerhalb des µC installieren.

Schaltung mit Programm:
http://www.elektronik-kompendium.de/forum/forum_entry.php?id=249947
Schaltung Sendediode:
http://www.elektronik-kompendium.de/forum/forum_entry.php?id=226716&page=0&category=all&order=time

Lupus

12.04.2021,
21:27

@ schaerer

OT Bilder

» Hallo Olit,
»
» Sehr interessantes Projekt. Mein Respekt an Dich und Deinen Sohn!
» Nur eine Kritik muss ich loswerden.
» Die Fotos gehören dazu und sind keineswegs OT! :ok: :cool:


Kann ich mich da nur anschließen - Haut ab!

bigdie(R)

12.04.2021,
20:33

@ olit

CCBASIC for...next ?

» Ich habe bisher nur den kleinen Achtbeiner Programmiert (Unit-Micro)
» Mit meinem Sohn haben wir zwei größere Projekte realisiert. Da war ich aber
» nur der Hartware Fritze.
Ich versuche mich auch mit solchem Kram. Hab schon immer mal probiert, aber meist nach der blinkenden LED wieder in die Ecke geworfen. Zur Zeit bin ich beim Picaxe angelangt. Da sind zwar die ICs etwas teurer, aber dafür ist die Software umsonst Auch finde ich die Anbindung an die Schaltung nicht übel. Die haben 2 Programmierkabel eins für den Com Port und eins mit USB und intergrierten USB-Com Wandler. Am anderen Ende ist nur ein 3,5mm Stereo Klinkenstecker. Auf einer selbst gebauten Platine braucht man also nur Klinkenbuchse und 2 Widerstände zur Anbindung an den Microrechner. Programmiert wird ebenfalls in einem Basic Dialekt. Viele Sachen sind da auch schon integriert. z.B. Temperaturfühler mit 1-Wire Bus oder PWM mit einem Befehl oder auch Modellbau Servos steuern.
Was mir entgegen kommt, ist so eine Art Multitaskingfähigkeit. Man kann also je nach Prozessor z.B. 8 Programmschleifen parallel ablaufen lassen. Leider ist es wie bei den anderen das gleiche Problem. Eine ausführliche Beschreibung aller Befehle mit Beispielen wie man sie im Programm einsetzt, gibt es nur in Englisch. Dafür, das ich in der Schule nur Russisch hatte, kann ich schon viele Brocken Englisch, aber in Deutsch wäre mir das allemal lieber. Das gleiche ist mit der Software. Gibt zwar eine halbwegs lesbare deutsche Oberfläche, aber Fehlermeldungen kommen dann in Engl. Ist aber in Bascom auch genauso blöd.

olit(R)

E-Mail

Berlin,
12.04.2021,
18:47

@ schaerer

OT Bilder

» Hallo Olit,
»
» Sehr interessantes Projekt. Mein Respekt an Dich und Deinen Sohn!
» Nur eine Kritik muss ich loswerden.
» Die Fotos gehören dazu und sind keineswegs OT! :ok: :cool:
»
Okay. :-)
Ich ging davon aus, dass die Bilder wenig mit CCBASIC zu tun haben.

schaerer(R)

Homepage E-Mail

Kanton Zürich (Schweiz),
12.04.2021,
18:31

@ olit

OT Bilder

Hallo Olit,

Sehr interessantes Projekt. Mein Respekt an Dich und Deinen Sohn!
Nur eine Kritik muss ich loswerden.
Die Fotos gehören dazu und sind keineswegs OT! :ok: :cool:

» » » In der hütte
» » »
» » »
» » » Gatter
» » »
» » »
» » » Kröten
» » »
» »
» » Top!
» »
» » Hast Du keine Angst, daß die Schildkröte mal an den Leitungen zieht?
» » :waving:
»
» Die sind zu hoch für die Kröten.
» Das Schwarze Kabel auf dem Boden ist nur eine Verlängerungsschnur für einen
» Laptop.
» Sohnimatz hatte noch eine kleine Programmänderung vor Ort vorgenommen.
»
»
»

--
Gruss
Thomas

Buch von Patrick Schnabel und mir zum Timer-IC NE555 und LMC555:
https://tinyurl.com/zjshz4h9
Mein Buch zum Operations- u. Instrumentationsverstärker:
https://tinyurl.com/fumtu5z9

olit(R)

E-Mail

Berlin,
12.04.2021,
17:12
(editiert von olit
am 12.04.2021 um 17:15)


@ Lupus

OT Bilder

» » In der hütte
» »
» »
» » Gatter
» »
» »
» » Kröten
» »
»
» Top!
»
» Hast Du keine Angst, daß die Schildkröte mal an den Leitungen zieht?
» :waving:

Die sind zu hoch für die Kröten.
Das Schwarze Kabel auf dem Boden ist nur eine Verlängerungsschnur für einen Laptop.
Sohnimatz hatte noch eine kleine Programmänderung vor Ort vorgenommen.


Lupus

12.04.2021,
15:53

@ olit

OT Bilder

» In der hütte
»
»
» Gatter
»
»
» Kröten
»

Top!

Hast Du keine Angst, daß die Schildkröte mal an den Leitungen zieht? :waving:

olit(R)

E-Mail

Berlin,
12.04.2021,
15:27

@ olit

OT Bilder

In der hütte


Gatter


Kröten

olit(R)

E-Mail

Berlin,
12.04.2021,
11:27
(editiert von olit
am 12.04.2021 um 11:33)


@ schaerer

CCBASIC for...next ?

» Hallo Olit,
»
» Freut mich, von Dir zu lesen. :-D
»
» Helfen kann ich Dir da zwar nicht. Aber was anderes. Was ist CC-Basic? Ist
» das spziell für Windows konzipiert? Von früher kenne ich noch das
» Power-Basic. Aber das war noch in der Vor-Windows-Ära... :lookaround:
»
» Mit Basic, genauer GFA-Basic 3.0, programmierte ich noch auf dem
» ATARI-ST-Mega4. Meine Güte waren das noch Zeiten... :-D
»
» TURBO-C benutzte ich manchmal auch, war aber nie so richtig Fan davon. :-|

Conrad brachte vier verschiedene µC auf den Markt.
Diese werden mit CCBASIC programmiert



Ich habe bisher nur den kleinen Achtbeiner Programmiert (Unit-Micro)
Mit meinem Sohn haben wir zwei größere Projekte realisiert. Da war ich aber nur der Hartware Fritze.
Zum Beispiel eine vollautomatische Klimasteuerung für Landschildkröten.
Mit Auswertung der Außentemperatur, Innentemperatur der Hütte, Wärmeleistung der Sonnenstrahlen. Damit wurde Lüfter Heizstrahler und oder Heizung gesteuert.
Mit Uhrzeit und dem Dämmerungsschalter wurde auf Tag und Nacht umgeschaltet
Mit der integrierten Funkuhr wurde automatisch auf Winter- oder Sommerbetrieb umgeschaltet.

schaerer(R)

Homepage E-Mail

Kanton Zürich (Schweiz),
12.04.2021,
08:36

@ Hartwig

CCBASIC for...next ?

Hallo Hartwig,

» Hier ist das beschrieben:
» https://de.m.wikipedia.org/wiki/C-Control
» Zum ccbasic findest Du Infos unter “Programmierung“.

Besten Dank für die Info.
Ich staune immer wieder mit welcher Gründlichkeit an Information Wiki arbeitet. :ok:

--
Gruss
Thomas

Buch von Patrick Schnabel und mir zum Timer-IC NE555 und LMC555:
https://tinyurl.com/zjshz4h9
Mein Buch zum Operations- u. Instrumentationsverstärker:
https://tinyurl.com/fumtu5z9