MasT3r-A Geschrieben June 16, 2015 at 12:28 Geschrieben June 16, 2015 at 12:28 Hallo TinkerUnity! Besteht die Möglichkeit das IO-4 Bricklet so zu nutzen das zwei Pins als EINGÄNGE und 1 (oder auch zwei) Pins als AUSGÄNGE genutzt werden können?! Ich nutze PIN 0 und 1 als Eingänge und würde gerne PIN 3 bzw. 4 als Ausgang nutzen.. Ich programmiere in C#. Im Moment hab ich nur io4.SetInterrupt(3 << 0); um den Interrupt zu aktivieren für die PINs 0 und 1. Würde mich über Antworten freuen. Vielen Dank im Voraus Grüße Artur Zitieren
MasT3r-A Geschrieben June 16, 2015 at 12:52 Autor Geschrieben June 16, 2015 at 12:52 ich muss noch dazu sagen das an den PINs 0 und 1 zwei Endschalter hängen. Ich überprüfe die Values und den Status des Motors. Funktionieren tut dies soweit ganz gut .. nur wenn ich den Pin 2 des IO-4 als OUTPUT setze dann ändert sich ja mein valueBinary.. =( private void InterruptCB(BrickletIO4 sender, byte interruptMask, byte valueMask) { if (io4 != null) { string interruptBinary = System.Convert.ToString(interruptMask, 2); string valueBinary = System.Convert.ToString(valueMask, 2); SetTextBoxRef0(interruptBinary); SetTextBoxRef1(valueBinary); if ( ((valueBinary == "1110") || (valueBinary == "1100")) && ((y_new_state == "BESCHLEUNIGUNG")||(y_new_state == "FAHREN")) )//Endschalter (Y-Achse) { Y_Achse.Stop(); y_stop_nach_endschalter = true; } if (((valueBinary == "1101") || (valueBinary == "1100")) && ((x_new_state == "BESCHLEUNIGUNG") || (x_new_state == "FAHREN"))) //Endschalter (X-Achse) { X_Achse.Stop(); x_stop_nach_endschalter = true; } if (x_stop_nach_endschalter == true && y_stop_nach_endschalter == true) { Interrupt(); } } } Ich würde aber gerne diese Funktion behalten und nur einen Pin als Ausgang nutzen.. der aber komplett unabhängig vom anderen sein soll.. oder soll ich lieber einen zweiten io-4 anbringen und den dann für meinen Ausgang nutzen?! Zitieren
Masder Geschrieben June 16, 2015 at 15:20 Geschrieben June 16, 2015 at 15:20 hallo MasT3r-A, Ja es geht. Vorab ich mach alles in Java kann dir daher nicht versprechen das es auch in C# genau so geht. deine abfragen: "(valueBinary == "1110")" Fragen immer alle 4 Pins gleichzeitig ab. diese müssen dann genau das Ergebnis liefern was du abfragst. besser ist es jeden Pin einzeln abzufragen, also jede stelle alleine. Folgende Lösung habe ich dafür: "if ((i&1)==0)" "if ((i&1)==1)" Hier frage ich Pin 1 auf den zustand 0 und 1 ab. ich hoffe das hilft dir weiter. Gruß Masder Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.