Für diese Projekt setzen wir voraus, dass eine C Entwicklungsumgebung eingerichtet ist und ein grundsätzliches Verständnis der C Programmiersprache vorhanden ist.
Falls dies nicht der Fall ist sollte hier begonnen werden. Informationen über die Tinkerforge API sind dann hier zu finden.
Wir setzen weiterhin voraus, dass die Fernbedienung mit einem Industrial Quad Relay Bricklet verbunden wurde wie hier beschrieben.
Das Ziel dieses kleinen Projekts ist es, eine Vorstellung darüber zu vermitteln wie die Relais des Industrial Quad Relay Bricklets geschaltet werden müssen, damit die Funksteckdosen an- und ausgeschaltet werden können.
Der folgende Quelltext benutzt industrial_quad_relay_set_monoflop
um eine Knopfdruck
auf der Fernbedienung auszulösen. Ein Monoflop setzt einen neuen Zustand
(Relais offen oder geschlossen) und hält diesen für eine bestimmte Zeit
(1,5s im Beispielquelltext). Nach dieser Zeit wird der vorheriger Zustand
wiederhergestellt. Dieses Ansatz simuliert einen Knopfdruck der für 1,5s
(1500ms) anhält.
Gemäße der Hardware-Aufbau Beschreibung ist die Fernbedienung wie folgt mit den Relais verbunden:
Signal | Relais |
---|---|
A | 0 |
B | 1 |
ON | 2 |
OFF | 3 |
Um "A ON" auf der Fernbedienung auszulösen müssen also die Relais 0 und 2
des Industrial Quad Relay Bricklets geschlossen werden. Dies wird durch die
Bitmaske (1 << 0) | (1 << 2)
repräsentiert.
Die Monoflop-Funktion kann also mit dieser Bitmaske und einer Zeit von 1500ms aufgerufen werden um einen Knopfdruck von "A ON" zu simulieren. Im Folgenden wird dies in einem minimalen Beispielquelltext dargestellt.
#include <stdio.h>
#include "ip_connection.h"
#include "bricklet_industrial_quad_relay.h"
#define HOST "localhost"
#define PORT 4223
#define UID "XYZ" // Change to your UID
#define VALUE_A_ON ((1 << 0) | (1 << 2)) // Pin 0 and 2 high
#define VALUE_A_OFF ((1 << 0) | (1 << 3)) // Pin 0 and 3 high
#define VALUE_B_ON ((1 << 1) | (1 << 2)) // Pin 1 and 2 high
#define VALUE_B_OFF ((1 << 1) | (1 << 3)) // Pin 1 and 3 high
int main(void) {
// Create IP connection
IPConnection ipcon;
ipcon_create(&ipcon);
// Create device object
IndustrialQuadRelay iqr;
industrial_quad_relay_create(&iqr, UID, &ipcon);
// Connect to brickd
if(ipcon_connect(&ipcon, HOST, PORT) < 0) {
fprintf(stderr, "Could not connect\n");
return 1;
}
// Don't use device before ipcon is connected
// Set pins to high for 1.5 seconds
industrial_quad_relay_set_monoflop(&iqr, VALUE_A_ON, 15, 1500);
ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally
return 0;
}