Je nach dem in welscher Hand halte den Hammer
Nimm doch einfach Relais! Grove - 4-Channel SPDT Relay - Seeed Wiki
Wurden schon vorgeschlagen, bin der Meinung, das für drei Relais ist es einfacher drei Pins nehmen als sich mit Wire herumschlagen, gerade für Anfänger.
Wie kommst Du auf Wire?
Der in #23 vorgeschlagene wird mit I2C angesteuert.
Ah, ok danke.
Das mit Wire ist nicht das Problem, sondern der Sketch zum Steuern der Relais.
Aber auch dafür gibt es bestimmt gute Libraries:
Wo muss man sich einlesen und verstehen was die wollen, ist nicht für jedermann so einfach. Ich bin ach noch Anfänger un weis was das bedeutet, vor allem nicht jeden packt der arduino Virus, Projekt geschafft das was.
Wire mag ein Problem für Leute sein, welche das erste mal mit Arduino Kontakt haben.
Wer das allerdings nicht lernen möchte, hat auf lange Sicht, sich selber zur Frustration verurteilt. Evtl. gar zur Aufgabe des Hobbys.
Was allerdings garantiert falsch ist:
Den "Anfänger" versuchen Angst vor der Komplexität zu machen.
Ihn, oder sie, in der Entwicklung einschränken zu wollen.
Lernen ist: "Jeden Augenblick, die eigenen Grenzen/Beschränkungen weiter setzen."
Das geht eben nur, wenn man Neuland betritt.
Es ist der Wille, welcher zählt, nicht die Zeit, der Weg, oder das spezielle "Objekt der Begierde", z.B. Wire.
Jeder hat dazu eigne Meinung, und nicht jeder versteht alles auf Anhieb bei nicht technischen Berufen.
Ja, auf Anhieb vielleicht nicht. Es kann auch mal länger dauern. Um so größer ist die Freude wenn man, trotz aller Schwierigkeiten, ein Projekt umgesetzt hat.
Wieso?
Den gibt es unter dem Link oben fix und fertig. Incl. passenden Lib GitHub - Seeed-Studio/Multi_Channel_Relay_Arduino_Library: This is the Arduino library for Seeed Grove module 4 and 8 channel rely.
Sag ich doch.
Schön und fein
Example --> four_channel_relay_control
#include <multi_channel_relay.h>
/**
channle: 4 3 2 1
state: 0b0000 -> 0x00 (all off)
state: 0b1111 -> 0x0f (all on)
*/
Multi_Channel_Relay relay;
void setup() {
DEBUG_PRINT.begin(9600);
while (!DEBUG_PRINT);
// Set I2C address and start relay
relay.begin(0x11);
/* Begin Controlling Relay */
DEBUG_PRINT.println("Channel 1 on");
relay.turn_on_channel(1);
delay(500);
DEBUG_PRINT.println("Channel 2 on");
relay.turn_off_channel(1);
relay.turn_on_channel(2);
delay(500);
DEBUG_PRINT.println("Channel 3 on");
relay.turn_off_channel(2);
relay.turn_on_channel(3);
delay(500);
DEBUG_PRINT.println("Channel 4 on");
relay.turn_off_channel(3);
relay.turn_on_channel(4);
delay(500);
relay.turn_off_channel(4);
relay.channelCtrl(CHANNLE1_BIT |
CHANNLE2_BIT |
CHANNLE3_BIT |
CHANNLE4_BIT);
DEBUG_PRINT.print("Turn all channels on, State: ");
DEBUG_PRINT.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(CHANNLE1_BIT |
CHANNLE3_BIT);
DEBUG_PRINT.print("Turn 1 3 channels on, State: ");
DEBUG_PRINT.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(CHANNLE2_BIT |
CHANNLE4_BIT);
DEBUG_PRINT.print("Turn 2 4 channels on, State: ");
DEBUG_PRINT.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(0);
DEBUG_PRINT.print("Turn off all channels, State: ");
DEBUG_PRINT.println(relay.getChannelState(), BIN);
delay(2000);
}
void loop() {
}
Frist 580 Bytes (28%) Speicher bei UNO also schonend ist das nicht für 1Draht Ersparnis, deshalb bin der Meinung "deine" Relais aus #11 sind einfacher und verständlicher zu Programmieren für Anfänger als das Gedöst mit I2C, wobei wenn man schon I2C benutzt kann man nachdenken ob man die Parr € mehr investiert, und alles umbaut, Da sehe ich aber die große Augen bei Anfänger
Der Sketch verwendet 4428 Bytes (13%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 580 Bytes (28%) des dynamischen Speichers, 1468 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Naja, wenn allein die Seriallen Ausgaben wie sonst auch mit dem F() bearbeitet werden, sind es schon:
Der Sketch verwendet 4480 Bytes (13%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 408 Bytes (19%) des dynamischen Speichers, 1640 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Aber ja, wegen dem einen Pin würde ich nicht so einen Handstand machen wollen.
Muss zugeben war Faul alle Debug's auskommentieren.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.