» Hallo,
»
» ich bin zu blöd.
»
» Zusammenstricken des Programms bekomme ich irgendwie hin. Aber ich schaffe
» die Befehle nicht.
»
» Wenn ein DIP-Schalter betätigt wird (Schließer), dann sollen ein oder
» mehrere Relais anziehen (habe mir eine Wertetabelle gemacht). Ich bekomme
» die Befehle dafür einfach nicht hin. Könnt ihr mir mit einem einführenden
» Gedanken den Start erleichtern?
»
» Das solls werden:
» Habe 6pol-Mäuseklavier. Damit möchte ich die Relais schalten, die wiederum
» die Widerstände schalten. Alle Widerstände sind in Reihe geschalten (1 Ohm,
» 1 Ohm, 2 Ohm, 4 Ohm, 8 Ohm, 10 Ohm). Die Relais brücken im Ruhezustand
» diese Widerstände, also habe ich theoretisch null Ohm (kommt nicht
» haargenau drauf an). Die Schalter des Mäuseklaviers haben die Werte
» 1-2-4-8-16 und 0,5 (Ohm). Je nachdem, welchen Schalter ich betätige
» (=entsprechende Relais ziehen an und geben Widerstand frei) habe ich meine
» Ohmwerte. Diese sind dann 0,5 Ohm (die beiden 1 Ohm parallel) und dann 1
» Ohm bis 26 Ohm in Ein-Ohm-Schritten. Ich muß immer nur die Werte der
» Schalter addieren.
»
» LG Sel
Kannst du die Schaltung mal skizzieren? Ich kann mir grad nicht vorstellen wie du auf 26 Ohm kommst wenn die beiden 1 Ohm via Relais parallel geschaltet werden. Wäre auch nicht schlecht, wenn du deine Wertetabelle einstellst.
So vom Code her (ich geh mal davon aus, dass du mit dem Arduino die Relais schalten möchtest) könntest du z.B. so etwas machen (vorsicht Pseudocode, und die 0,5 Ohm werden nicht berücksichtigt)
int[] relais_pin = { ... }
int[] widerstand_wert = {1, 2, 4, 8, 10}
int[] schalter_pin = { ... }
int[] schalter_wert = {1, 2, 4, 8, 16}
for (int i=0; i<5; i++) {
if (digitalRead(schalter_pin[i]) == HIGH) {
summe += schalter_wert[i]
}
}
for (int i=4; i>=0; i--) {
if (widerstand_wert[i] <= summe) {
digitalWrite(reails_pin[i], HIGH)
summe -= widerstand_wert[i]
} else {
digitalWrite(reails_pin[i], LOW)
}
}
Nur so als Denkanstoß, das kann man noch schöner machen. Dazu müsste man aber die Schaltung genauer kennen  |