Zitat:
aber schleifen habe ich nie kapiert, da bin ich immer ausgestiegen, zB for I = ......
Verschiedenen Schleifen und IF-Abfragen machen aber doch gerade wenn man noch nicht so richtig gut programmieren kann das halbe Programm aus. Die würde ich mir schon mal genauer ansehen.
Zitat:
und so gesehen hilft mir dummie auch kein roland walter weiter, ich hoffe, das kann jemand verstehen.
alleine schon die frage: wieso immer "I"?
Das I hat sich als Zählervariable einfach so eingebürgert, genauso wie man im Koordinatensystem die Achsen meist mit X und Y bezeichnet.
Du kannst aber statt I auch jede andere Variable verwenden. Bei verschachtelten Schleifen macht man das ja auch oft, z.B.:
Code:
For I = 1 to 10
For J = 1 to 10
.......
Next J
Next I
Das I, bzw. J hinter dem Next kannst du in Bascom glaube ich auch weglassen.
Die Funktion der Schleife ist eigentlich ganz einfach. Die Schleife fängt bei For an und hört bei Next auf. In jedem Durchlauf wird I um 1 hochgezählt. D.h. bei For I = 1 to 10 wird die Schleife 10 mal durchlaufen.
Oft wird die Zählervariable dann auch noch innerhalb der Schleife verwendet. Z.B. sollte dir der folgende Code die Zahlen 1 bis 10 ausgeben:
Code:
For k = 1 to 10
Print k
Next k
Zitat:
oder würde es reichen, wenn ich das mit left/right und byte*2 einfach kapiere und abhake?
Irgendwas einfach kapieren ist eigentlich immer gut ;-)
Mir persönlich gelingt es nur leider oft nicht so einfach.
Aber das mit dem Left/Right ist eigentlich recht einleuchtend, wenn man sich die passenden Werte im Binärsystem mal als Tabelle aufschreibt:
Code:
&B00000000 = 0 = 0 = 0
&B00000001 = 2^0 = 1 = 1
&B00000010 = 2^1 = 2 = 2
&B00000100 = 2^2 = 4 = 2*2
&B00001000 = 2^3 = 8 = 2*2*2
&B00010000 = 2^4 = 16 = 2*2*2*2
&B00100000 = 2^5 = 32 = 2*2*2*2*2
&B01000000 = 2^6 = 64 = 2*2*2*2*2*2
&B10000000 = 2^7 = 128 = 2*2*2*2*2*2*2
-----------------------------------------------------------
&B11111111 = 255
Eine Multiplikation mit 2 bedeutet, dass das Bit im Binärsystem eins nach links geschoben wird, bzw. das verschieben eines Bits nach links bedeutet eine Multiplikation mit 2, das verschieben nach rechts eine Division durch 2.
Ich glaube allerdings dein Beispiel mit dem Lauflicht ist keine besonders typische Anwendung. Bei manchen Ports sind gar nicht alle 8 Pins verfügbar und viele Pins haben Sonderfunktionen, z.B. PWM, Interrupt, Counter usw.
Ausserdem brauchen die meisten Dinge die man anschliesst, z.B. Motoren, Sensoren, Taster, LEDs usw. nur einzelne Pins und das teilweise als Eingang, teilweise als Ausgang.
Einen kompletten Port auf einmal zu schalten mag zwar programmiertechnisch eleganter sein, aber übersichtlicher ist es bestimmt nicht, wenn man in einem Befehl mehrere eigentlich völlig unabhängige Dinge, z.B. verschiedene Motoren, Sensoren usw. schaltet.
Ich würde da lieber die Möglichkeit von Bascom nutzen verschiedene Routinen und Funktionen für Motoren, Sensoren, zu definieren und in diesen Routinen die Pins so wie du es gleich zu Anfang gemacht hast einzeln über Portx.x ansprechen.
Dann ist meiner Meinung nach die Gefahr, das z.B. nach einer Änderung an der Motorsteuerung plötzlich alle Sensoren die am selben Port hängen
verrückt spielen wesentlich geringer.
Ich würde den Quellcode einfach so schreiben, wie du ihn selber am besten verstehst. Irgendwelche trickreichen Konstrukte die den Quelltext abkürzen bringen wenig, wenn man sie ein paar Wochen später selber nicht mehr durchschaut.
Ausserdem bedeutet ein kürzerer Quelltext ja auch nicht unbedingt, dass der Code den Bascom daraus kompiliert kürzer ist.
Zitat:
lange rede, kurzer sinn: ich bin ein schwieriger fall
aber sollte ich diese hürde nehmen, bin ich euch eine party schuldig!
knacki
Wie darf man sich so eine Party denn vorstellen? Schellack Platten, Kamillentee, Weichgebäck und als
Stimmungsmacher nen Klosterfrau Melissengeist? ;-)
(dann komme ich - bin nämlich genauso ein alter Knacker wie du ;-) )