Go Down

Topic: problem with Ethernet Shield and Access Point (Read 1 time) previous topic - next topic

hi everybody!  :)
i'm creating a project for my school final exam..  :smiley-roll-blue:
i would create a minirobot controlled by pc, on the robot there will be an ip camera..
my arduino and my ipcamera are connected to an access point, connecting my pc to the network i could control the robot with arduino and see the frontal video from the webcam.  8)  :smiley-mr-green:

my problem is using the ethernet shield: my arduino is the server and my pc a client, in java on the pc i've just created a program who sends strings (byte to byte) to arduino and it receive it..
my first communication works: if the character received is 'a' i turn on a led, if the char is 's' i turn it off  :)
then i tried to create another program with many characters for the movements of my robot: 'w','a','s','d','x', and so on... it seems that digitalWrite(...,HIGH) doesn't works..  :(
(all the motor control is already created and it works perfectly!)
i don't know if it's a logic problem.. someone can help me? :)

these are the programs:
Led On Off Program (it works):
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>
#include <stdlib.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 192, 168, 0, 177 };   
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };

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

void setup()
{
  pinMode(2, OUTPUT);
  Serial.begin(9600);
  Ethernet.begin(mac, ip, gateway, subnet);

  server.begin();
}

void loop()
{
  char temp;
  EthernetClient client = server.available();
  if (client == true) {
    temp=client.read();
   
    Serial.println(temp);
    if(temp=='a')
      digitalWrite(2, HIGH);
    else if(temp=='s')
      digitalWrite(2, LOW);

    server.write(temp);
  }   
}


Motor Code (it doesn't work):
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 192, 168, 0, 177 };   
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server = EthernetServer(23);

int motor_left[] = {7, 8};   // pin 15, pin 10 (dell'integrato)
int motor_right[] = {5, 6};  // pin 2, pin 7 (dell'integrato)
int velocita = 9;            // PWM, pin 1,9 (dell'integrato)

void setup()
{
  Ethernet.begin(mac, ip, gateway, subnet);
 
  for(int i = 0; i < 2; i++){
    pinMode(motor_left[i], OUTPUT);
    pinMode(motor_right[i], OUTPUT);
  }
  pinMode(velocita, OUTPUT);
  pinMode(2, OUTPUT);
  Serial.begin(9600);
 
  server.begin();
}

void loop()
{
  char temp;
  EthernetClient client = server.available();
  if (client == true) {
    temp=client.read();
   
    Serial.println(temp);
   
    if(temp=='s')
      motor_stop();
    else if(temp=='w')
      drive_forward();
    else if(temp=='x')
      drive_backward();
    else if(temp=='a')
      turn_left();
    else if(temp=='d')
      turn_right();
    else if(temp=='m')
      analogWrite(velocita, 255);
    else if(temp=='n')
      analogWrite(velocita, 140);

   server.write(temp);
  }
}

void motor_stop(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], LOW);
}

void drive_forward(){
  digitalWrite(motor_left[0], HIGH);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], HIGH);
  digitalWrite(motor_right[1], LOW);
}

void drive_backward(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], HIGH);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], HIGH);
}

void turn_left(){
  digitalWrite(motor_left[0], LOW);
  digitalWrite(motor_left[1], HIGH);
 
  digitalWrite(motor_right[0], HIGH);
  digitalWrite(motor_right[1], LOW);
}

void turn_right(){
  digitalWrite(motor_left[0], HIGH);
  digitalWrite(motor_left[1], LOW);
 
  digitalWrite(motor_right[0], LOW);
  digitalWrite(motor_right[1], HIGH);
}
my project's site: http://bigbrotherrover.altervista.org/

my project's site: http://bigbrotherrover.altervista.org/

SurferTim

What version of the Arduino IDE are you using? The IDE v1.0 would be best.

The Ethernet.begin() parameter format changed in v1.0. This is the new format:

Ethernet.begin(mac);
Ethernet.begin(mac,ip);
Ethernet.begin(mac,ip,dns);
Ethernet.begin(mac,ip,dns,gateway);
Ethernet.begin(mac,ip,dns,gateway,subnet);

Check the basic stuff first.

#3
Jun 14, 2012, 10:37 pm Last Edit: Jun 14, 2012, 10:39 pm by Attalo Reason: 1
the problem was only that i hadn't set the analog out of motors  :smiley-roll: :smiley-mr-green:
if someone is interested there's the video of the project completed!  :)
thank you for the help ;)

http://www.youtube.com/watch?v=rLrAvn2fzsw
my project's site: http://bigbrotherrover.altervista.org/

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy