Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Das ist mein Code.. Komischerweise sehe ich ja alles mit Wireshark.. Warum muss ich die Ziel-Macadresse mit angeben bzw. wie mache ich das? Bin leider neu in dem Gebiet..
//edit: Anscheinend ist das ein Bug von EtherCard.h... Habe einen ENC28J60 als Netzwerkschnittstelle...
Code:
// benoetigte Bibliotheken
#include <EtherCard.h>
#include <EthernetUdp.h>
// UDP Port zum Datenempfang Lox MS -> Arduino
unsigned int ARDUPORT = 65001;
// Netzwerk Einstellungen
static byte mymac[6] = { 0x4C,0x61,0x65,0x73,0x15,0x45 };
static byte myip[4] = { 192,168,0,199 };
static byte gwip[4] = { 192,168,0,1 };
// IP Lox MS
static byte MSIP[4] = { 192,168,0,150 };
// UDP Port zum Datenversand Arduino -> Lox MS
unsigned int MSPORT = 65000;
// Daten-Buffer
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
byte Ethernet::buffer[200];
BufferFiller bfill;
// Pin fure HC SR04 festlegen
#define echoPin 8 // Echo Pin
#define trigPin 9 // Trigger Pin
// Konstanten
int maxReichweite = 300; // Maximum Reichweite der Messung
int minReichweite = 0; // Minimum Recihweite der Messung
// Variablen
long dauer;
float distanz;
char chardistanz[10];
void setup() {
Serial.begin(9600);
// Init Ethernet
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
{
Serial.println(F("Failed to access Ethernet controller"));
return;
}
ether.staticSetup(myip, gwip);
EthernetUDP Udp;
Udp.begin(ARDUPORT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Distanz lesen
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
dauer = pulseIn(echoPin, HIGH);
ether.packetLoop(ether.packetReceive());
//Distanz in cm umrechnen
distanz = dauer / 58.2;
// min max auswerten, wenn in der Range wird gesendet
if (distanz >= maxReichweite || distanz <= minReichweite) {
Serial.println("Messung fehlerhaft!");
}
else {
Serial.print(distanz), Serial.println(" cm");
dtostrf(distanz, 4, 1, chardistanz); //Distanz fuer UDP Versand umwandeln (1 steht fue r Nachkommastellen)
ether.sendUdp(chardistanz, sizeof chardistanz, ARDUPORT, MSIP, MSPORT );
}
delay(5000); // Wartet x Sekunden bis zur naechsten Messung, z.B. 5000 = 5 Sekunden
}
// min max auswerten, wenn in der Range wird gesendet
if (distanz >= maxReichweite || distanz <= minReichweite) {
Serial.println("Messung fehlerhaft!");
}
else {
Serial.print(distanz), Serial.println(" cm");
dtostrf(distanz, 4, 1, chardistanz); //Distanz fuer UDP Versand umwandeln (1 steht fue r Nachkommastellen)
//ether.sendUdp(chardistanz, sizeof chardistanz, ARDUPORT, MSIP, MSPORT );
Udp.beginPacket(RecipientIP, RecipientPort);
Udp.write(chardistanz);
Udp.endPacket();
Serial.println("UDP Paket gesendet");
}
delay(5000); // Wartet x Sekunden bis zur naechsten Messung, z.B. 5000 = 5 Sekunden
}
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar