INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino mit der Außenwelt kommunizieren lassen
22.03.2015, 19:50
Beitrag #1
Arduino mit der Außenwelt kommunizieren lassen
Hey Leute,


ich habe hier ein Arduino Mega Board mit dem Ethernet Shield liegen und möchte Analogausgänge abfragen und Digitalausgänge schalten. Das ganze soll aber möglichst in einer Art Chatlösung laufen. Den auf Dauer soll kein Mensch sondern eine Software auf meinem Laptop die Kommunikation übernehmen und das ganze optisch schön Aufbereitet werden.

Ich wollte als "Chatserver" gerne den Arduino nehmen. Ich habe es mal versucht mit dem "Beispielcode" mit leichter modifikation genommen, nur leider kommt da nicht das Ergebnis hin.

Also ich hab den Code vom "Advanced Chat Server" genommen. Es soll am Ende so laufen, "Digital1,1" bzw "Digital1,0" bzw. "Analog1," in allen Fällen soll mein Heimserver vom Arduino eine Rückmeldung bekommen, wenn Befehl angekommen ist.

Im ganzen soll das so aussehen "Programm auf dem Laptop" <- beidseitige Kommunikation -> "Arduino"

Kann mir da jemand helfen?

Hier meine Modifizierter Code:
Code:
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network.
// gateway and subnet are optional:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0, 177);
IPAddress gateway(192,168,0, 1);
IPAddress subnet(255, 255, 255, 0);


// telnet defaults to port 23
EthernetServer server(23);

EthernetClient clients[4];

void setup() {
  pinMode(13, OUTPUT);
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);
  // start listening for clients
  server.begin();
// Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // wait for a new client:
  EthernetClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {

    boolean newClient = true;
    for (byte i=0;i<4;i++) {
      //check whether this client refers to the same socket as one of the existing instances:
      if (clients[i]==client) {
        newClient = false;
        break;
      }
    }

    if (newClient) {
      //check which of the existing clients can be overridden:
      for (byte i=0;i<4;i++) {
        if (!clients[i] && clients[i]!=client) {
          clients[i] = client;
          // clead out the input buffer:
          client.flush();
          Serial.println("We have a new client");
          client.print("Hello, client number: ");
          client.print(i);
          client.println();
          break;
        }
      }
    }

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      char thisChar = client.read();
      // echo the bytes back to all other connected clients:
      for (byte i=0;i<4;i++) {
        if (clients[i] && (clients[i]!=client)) {
          clients[i].write(thisChar);
        }
      }
      // echo the bytes to the server as well:
      Serial.write(thisChar);
      
      if (thisChar == 1) {
          digitalWrite(13,HIGH);
      }
      if (thisChar == 2) {
          digitalWrite(13,LOW);
      }
      
    }
  }
  for (byte i=0;i<4;i++) {
    if (!(clients[i].connected())) {
      // client.stop() invalidates the internal socket-descriptor, so next use of == will allways return false;
      clients[i].stop();
    }
  }
}

Mir würde auch schon helfen, wenn mir jemand sagen wie ich die Empfange "Information" in eine Variable schreiben kann und dann vom Server einfach eine Art "Boradcastmeldung" schicke. So bekommt zwar jeder die Rückmeldung aber wenn das einfacher ist als direkter Weg, dann würde das reichen.

Ich habe es versucht mit dem "thisChar", nur leider war das Ergebnis nicht das was ich wollte.



Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  tip für Qellcode nur 1mal ablaufen lassen himbeersirup 4 348 19.05.2016 11:51
Letzter Beitrag: himbeersirup
  Programme lassen sich nicht auf das Gemma Board downloaden! Jack Sparrow 13 563 08.04.2016 10:01
Letzter Beitrag: hotsystems
  Lampe mit Key leuchten lassen FCraftLP 1 466 05.03.2016 11:44
Letzter Beitrag: hotsystems
  Leds blinken lassen mit if-Abfrage und millis ferdi 11 1.507 24.10.2015 08:54
Letzter Beitrag: Bitklopfer
  Counter rückwärts laufen lassen???? Haustechno 6 910 10.08.2015 18:26
Letzter Beitrag: Haustechno
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 1.105 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  mehrere funksteckdosen über arduino laufen lassen. purzele06 12 1.935 28.03.2015 02:03
Letzter Beitrag: Homer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 3.129 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf
  LED Blinken lassen ohne delay und mit einem Ende EddyErdmann 3 2.992 26.10.2014 19:33
Letzter Beitrag: Thorsten Pferdekämper
  led blinken lassen sascha_k 2 1.332 17.10.2014 18:18
Letzter Beitrag: sascha_k

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste