Forum: Mikrocontroller und Digitale Elektronik Arduino: Invertieren und Zwischenspeichern


von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Habe mit "if" das Signal "a" invertiert.
Das Resultat ist "B".

Leider kann ich mit B nur weiterarbeiten wenn ich
B auf einen Pin lege. Das ist nicht gut weil ich
noch fünf weitere Signale invertieren muß..

Wie macht man das richtig?
Und wie invertiert man a mit dem "!"

001.ino angehängt.

LG
old.

von VerstehtKeiner (Gast)


Lesenswert?

Also was du da machen willst, versteht keiner.

Beschreibe doch mal genau, was du willst.

von oldeurope O. (Gast)


Lesenswert?

Digitales Signal invertieren und weiterverarbeiten.

von Rainer U. (r-u)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Wie macht man das richtig?

Mit einer Variablen

Jetzthabensieihn I. schrieb:
> Und wie invertiert man a mit dem "!"

a ist in Deinem Programm eine Variable mit dem Wert 2.

Was Du wahrscheinlich willst / brauchst, ist hier beispielhaft 
beschrieben

https://www.arduino.cc/en/Reference/BooleanVariables

von Dirk B. (dirkb2)


Lesenswert?

Das kommt darauf an, ob du binäre oder boolsche Werte hast.
Das wäre der ~ Operator oder der ! Operator.

von Dirk B. (dirkb2)


Lesenswert?

Wie sind denn HIGH und LOW definiert.

Und du willst auch nicht den Wert von a invertieren, sondern den vom 
"Port a"

von oldeurope O. (Gast)


Lesenswert?

Rainer U. schrieb:
> Mit einer Variablen

Du hast die .ino, zeige es mir bitte daran.
Zwei if..else  und eine && Funktion, wobei eine
wegfällt wenn man invertieren kann, sind ja kein Riesending.

LG
old.

von Dirk B. (dirkb2)


Lesenswert?

Wenn du weißt wie es geht, dann mach doch.

von oldeurope O. (Gast)


Lesenswert?

Dirk B. schrieb:
> Wenn

Ich probiere noch herum.
Leider sind in den Beispielen die Operatoren
in if eingebunden.
https://www.arduino.cc/en/Reference/Boolean
Wie man jetzt ohne diese Einbindung invertiert,
habe ich noch nicht herausgefunden. Bei UND &&
habe ich es hinbekommen, wie man in der 001.ino sieht.


LG
old.

von Rainer U. (r-u)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Du hast die .ino, zeige es mir bitte daran.

Du lernst mehr, wemm Du besser verstehst, was Du programmierst.

Also ich meinte, Du kannst schreiben statt

if (digitalRead(a) == HIGH)

in mehreren Schritten

bVar = digitalRead(a)
bVar = !bvar
digitalWrite(AusgabePin, bVar) // welchen Ausgabepin weißt Du

von Rainer U. (r-u)


Lesenswert?

.. und diese Variable bVar natürlich am Anfang deklarieren:

boolean bVar = false; // Startwert

von Dirk B. (dirkb2)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Bei UND &&
> habe ich es hinbekommen, wie man in der 001.ino sieht.

Weißt du, was das digitalRead() macht und was die Werte bedeuten, die du 
übergibst und zurück bekommst?

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Dirk B. schrieb:
> Wenn du weißt wie es geht, dann mach doch.

Nach etwas Gartenarbeit noch mal rumprobiert.
Ich denke, ich habe jetzt raus wie die Struktur
aussehen muss. Mit einem NAND kann ich dann alle
logischen Funktionen realisieren. :-)

In meinen Augen sind das grundlegende Dinge
und ich wundere mich sehr über die Antworten hier.

LG
old.

von Dirk B. (dirkb2)


Lesenswert?

Jetzthabensieihn I. schrieb:
> In meinen Augen sind das grundlegende Dinge

Ja, ja das sind sie.

> und ich wundere mich sehr über die Antworten hier.

Darüber, das wir dir diese Dinge erklären?
Oder darüber, dass wir nicht deine Arbeit machen?

Wenn du Probleme hast dann frag gezielt nach.

von VerstehtKeiner (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> In meinen Augen sind das grundlegende Dinge
> und ich wundere mich sehr über die Antworten hier.
Genau...und daher solltest du das auch wissen.

von oldeurope O. (Gast)


Lesenswert?

Dirk B. schrieb:
> Wie sind denn HIGH und LOW definiert.

Siehe hier:
http://www.ov-meschede.de/workshop/Arduino%20Programmierhandbuch.pdf
Seite 11.

LG
old.

von Einer K. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> In meinen Augen sind das grundlegende Dinge
> und ich wundere mich sehr über die Antworten hier.
Mich wundert es nicht.


---


Jetzthabensieihn I. schrieb:
> Mit einem NAND kann ich dann alle
> logischen Funktionen realisieren. :-)

In einer anderen Situation könnte diese Erleichtung zielführend sein, 
evtl. sogar Bahnbrechend.


---

Nur, in Sachen C/C++ bzw. AVR, nicht wirklich.
Denn diese kennen kein NAND.

Klar kannst du ein NAND aus den vorhandenen Operatoren bauen, und dann 
z.B. ein XOR aus ein paar NAND.

Nur leider ist diese Idee ausgesprochen dumm, denn XOR ist schließlich 
schon nativ vorhanden.

Alle logischen Operatoren, welche man je brauchen könnte, sind schon 
längst vorhanden.


--


Schlussendlich, wundere ich mich eher nicht über die Antworten, sondern 
mehr über deine Erleuchtungen.

von oldeurope O. (Gast)


Lesenswert?

Arduino F. schrieb:
> XOR ist schließlich
> schon nativ vorhanden.
>
> Alle logischen Operatoren, welche man je brauchen könnte, sind schon
> längst vorhanden.

Noch habe ich das xor nicht benötigt.
Laut Referenzliste ist xor übrigens nicht vorhanden:
https://www.arduino.cc/en/Reference/Boolean
Wenn ich herausfinde wie man es macht,
lasse ich es Euch wissen.

LG
old.

von Einer K. (Gast)


Lesenswert?

Gähn...

Dann versuchs mal mit dem binären XOR.
Wenn du das auf bool Values anwendest, tut es genau das erwartete.

von Wolfgang (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Wenn ich herausfinde wie man es macht,
> lasse ich es Euch wissen.

Probiere es einfach mal mit dem (bitweise) XOR-Operator (^).
https://en.wikibooks.org/wiki/C_Programming/Reference_Tables#Table_of_Operators

Bitweise Operationen bieten sich evtl. sowie an, wenn du mehrere Signale 
verarbeiten musst.

von oldeurope O. (Gast)


Lesenswert?

Habe eine gute Erklärung dazu gefunden:

http://www.willemer.de/informatik/cpp/boolexpr.htm

> Und dann gibt es noch praktische Ansätze,
> einen XOR-Operator zu simulieren.
> Als boolescher Operator bietet sich der
> Ungleich-Operator != an. Alternativ kann
> der binäre Operator ^ verwendet werden.
> Da die booleschen Ausdrücke mit Zahlen
> kompatibel ist, funktioniert dieser auch
> wie ein boolescher Operator bei der Verknüpfung
> boolescher Ausdrücke.

LG
old.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.