Go Down

Topic: Ethernet Shield - Verbinding blijft wegvallen. (Read 1 time) previous topic - next topic

TheDigitalToaster

Voor mijn eindwerk maak ik een autotje die je met de computer draadloos kan besturen. Ik gebruik een ethernet shield en een router op mijn robot.
Ik gebruik VB.Net om de robot aan te sturen. Maar de verbinding valt weg waardoor mijn robot vast blijft zitten in een positie of niets doet.

Hier een foto van de seriele monitor:
http://gyazo.com/c91025a1ab322f3d552b33e19ed01056
Hier is mijn aruidno source code:

Code: [Select]
//*************************************************************************************************************************************
// Declarations
//*************************************************************************************************************************************
#include <SPI.h>
#include <Ethernet.h>

//*************************************************************************************************************************************
// Wired configuration parameters
//*************************************************************************************************************************************
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
unsigned char local_ip[] = {192,168,1,5}; // IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1}; // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network
int E1 = 8; 
int M1 = 9;
int E2 = 6;                     
int M2 = 7; 
const int trigPin = 2;
const int echoPin = 3;

EthernetServer server(80);

String buffer = "";

void setup()
{
  pinMode(M1,OUTPUT);
  pinMode(M2,OUTPUT);
  Ethernet.begin(mac, local_ip);
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
 
}

void loop()
{
  char c;
  long duration,cm;
  Serial.println("Aan het wachten op een verbinding ...");
  EthernetClient client = server.available();
if (client)
  {
    Serial.println("Verbonden met client");
    boolean currentLineIsBlank = true;
    while (client.connected())
    {
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        duration = pulseIn(echoPin, HIGH);
        cm = microsecondsToCentimeters(duration);
        Serial.print("gemeten afstand");
        Serial.print(cm);
        Serial.println();
      if (client.available())
      {
        c = client.read();
        Serial.print("Commando:");
        Serial.println(c);
        switch (c) {
          case 'v':
                  if (cm < 10) niet_rijden();
                  else
  { 
  digitalWrite(M1,HIGH); 
  digitalWrite(M2, HIGH);       
  analogWrite(E1, 255);   //PWM Speed Control
  analogWrite(E2, 255);   //PWM Speed Control
                  } 
                  break;   
          case 'a':
                  digitalWrite(M1,LOW); 
                  digitalWrite(M2, LOW);       
                  analogWrite(E1, 255);   //PWM Speed Control
                  analogWrite(E2, 255);   //PWM Speed Control 
                  break;
          case 'r':
                  digitalWrite(M1,LOW); 
                  digitalWrite(M2, HIGH);       
                  analogWrite(E1, 255);   //PWM Speed Control
                  analogWrite(E2, 255);   //PWM Speed Control 
                  break;
          case 'l':
                  digitalWrite(M1,HIGH); 
                  digitalWrite(M2, LOW);       
                  analogWrite(E1, 255);   //PWM Speed Control
                  analogWrite(E2, 255);   //PWM Speed Control   
                  break;
          case 's':
                  analogWrite(E1, 0);   //PWM Speed Control
                  analogWrite(E2, 0);   //PWM Speed Control 
                  break;       
        }
      }
              else
        {
            Serial.println("Niet beschikbaar");
      if( c = 'v' && cm < 10) niet_rijden();

    }
  }
}     


long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return (microseconds / 29) / 2;
}

void niet_rijden()
{
       analogWrite(E1, 0);   //PWM Speed Control
       analogWrite(E2, 0);   //PWM Speed Control 
}


Go Up