Offline
Newbie
Karma: 0
Posts: 4
|
 |
« on: June 30, 2012, 02:45:12 am » |
Hi,
I want to start a project on Arduino. I m actually a newbie to the arduino. Now getting into the project , i want to give a pan and tilt movement to a webcam through internet or intranet. i googled it and found that i need to the arduino board and arduino ethernet shield to get into action. I bought all the parts , started doing the project. I got strucked with the code. I actually want control the servos by clicking a pushbutton in the webpage. i want to use two servos for the pan & tilt movement. Please help me on code .. please do the needful .
Thankz in advance, Prawin.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 22
www.buildinginternetofthings.com
|
 |
« Reply #1 on: June 30, 2012, 10:44:56 am » |
Hi, Are you hosting the web server on the Arduino itself? In such case you need to parse the data from the client (web browser). The web page buttons shall post some variables to the server, and the server shall parse the incoming data from the client and move the servos. Check this http://www.instructables.com/id/ServDuino-Arduino-Webserver/Also, the following code will probably work for you: #include <SPI.h> #include <Ethernet.h> #include <Servo.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address byte ip[] = { 192, 168, 1, 102 }; byte gateway[] = { 192, 168, 1, 1 }; byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(84); //server port
String readString, servo1, servo2;
Servo myservo1;
void setup(){
//start Ethernet Ethernet.begin(mac, ip, gateway, subnet); server.begin();
//enable serial data print Serial.begin(9600); myservo1.attach(7);
}
void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read();
//read char by char HTTP request if (readString.length() < 100) {
//store characters to string readString += c; }
//if HTTP request has ended if (c == '\n') { Serial.println(readString);
//readString looks like "GET /?-1500 HTTP/1.1"
if (readString.length() >0) { Serial.println(readString); servo1 = readString.substring(7, 11); Serial.println(servo1); int n1; char carray1[6]; servo1.toCharArray(carray1, sizeof(carray1)); n1 = atoi(carray1); myservo1.writeMicroseconds(n1); readString=""; } client.stop();
readString="";
} } } } }s
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
UK
Offline
Brattain Member
Karma: 138
Posts: 19067
I don't think you connected the grounds, Dave.
|
 |
« Reply #2 on: June 30, 2012, 02:16:08 pm » |
Please help me on code You need to post the code you're having problems with, otherwise it is difficult to help you.
|
|
|
|
|
Logged
|
Pete, it's a fool looks for logic in the chambers of the human heart.
|
|
|
|
0
Offline
Tesla Member
Karma: 50
Posts: 6549
Arduino rocks
|
 |
« Reply #3 on: July 02, 2012, 06:46:52 pm » |
Some web based control code. //zoomkat 4-1-12 //simple button GET for servo and pin 5 //for use with IDE 1.0 //open serial monitor to see what the arduino receives //use the \ slash to escape the " in the html, or use ' instead of " //address will look like http://192.168.1.102:84 when submited //for use with W5100 based ethernet shields
#include <SPI.h> #include <Ethernet.h>
#include <Servo.h> Servo myservo; // create servo object to control a servo
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address byte ip[] = { 192, 168, 1, 102 }; // ip in lan byte gateway[] = { 192, 168, 1, 1 }; // internet access via router byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(84); //server port
String readString;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip, gateway, subnet); server.begin();
myservo.write(90); //set initial servo position if desired myservo.attach(7); //the pin for the servo control //enable serial data print Serial.begin(9600); Serial.println("server servo/pin 5 test 1.0"); // so I can keep track of what is loaded }
void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read();
//read char by char HTTP request if (readString.length() < 100) {
//store characters to string readString += c; //Serial.print(c); }
//if HTTP request has ended if (c == '\n') {
/////////////// Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println();
client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Arduino GET test page</TITLE>"); client.println("</HEAD>"); client.println("<BODY>");
client.println("<H1>Zoomkat's simple Arduino button</H1>"); client.println("<a href=\"/?on\"\">ON</a>"); client.println("<a href=\"/?off\"\">OFF</a>");
client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop();
///////////////////// control arduino pin if(readString.indexOf("on") >0)//checks for on { myservo.write(40); digitalWrite(5, HIGH); // set pin 4 high Serial.println("Led On"); } if(readString.indexOf("off") >0)//checks for off { myservo.write(140); digitalWrite(5, LOW); // set pin 4 low Serial.println("Led Off"); } //clearing string for next read readString="";
} } } } }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 4
|
 |
« Reply #4 on: July 03, 2012, 10:59:21 am » |
Hey thankz for the code ...it really worked for my for my project with very little manipulations....it is very much helpful to me..  But i m not satisfied with the web interface that i look at .... if anyone can help me to use some push-buttons to give the control to servo to move, it could be helpful to run my project as i wish .... Thankz once again to charalamposdoukas & zoomkat ..  i attached my code ,which was working 100% for my project... #include <SPI.h> #include <Ethernet.h>
#include <Servo.h> Servo myservo1; // create servo object to control a servo1 Servo myservo2; // create servo object to control a servo2
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address byte ip[] = { 192, 168, 1, 102 }; // ip in lan byte gateway[] = { 192, 168, 1, 1 }; // internet access via router byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(84); //server port
String readString;
//////////////////////
void setup(){
Ethernet.begin(mac, ip, gateway, subnet); server.begin();
myservo1.write(90); //set initial servo1 position if desired myservo2.write(90); //set initial servo2 position if desired myservo1.attach(9); //the pin for the servo1 control myservo2.attach(8); //the pin for the servo2 control //enable serial data print Serial.begin(9600); Serial.println("server servo/pin 9,8 test 1.0"); // so I can keep track of what is loaded }
void loop() { // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read();
//read char by char HTTP request if (readString.length() < 100) {
//store characters to string readString += c; //Serial.print(c); }
//if HTTP request has ended if (c == '\n') {
/////////////// Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println();
client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Arduino GET test page</TITLE>"); client.println("</HEAD>"); client.println("<BODY>");
client.println("<H1>Arduino </H1>"); //Servo1 movement client.println("<a href=\"/?right\"\">RIGHT</a>"); client.println("<a href=\"/?center\"\">CENTER</a>"); client.println("<a href=\"/?left\"\">LEFT</a>"); //servo2 movement client.println("<a href=\"/?up\"\">UP</a>"); client.println("<a href=\"/?mid\"\">MIDDLE</a>"); client.println("<a href=\"/?down\"\">DOWN</a>");
client.println("</BODY>"); client.println("</HTML>"); delay(100); //stopping client client.stop();
///////////////////// control arduino pin
if(readString.indexOf("left") >0) { myservo1.write(135); delay (50); Serial.println(" Turn to Left"); } if(readString.indexOf("center") >0) { myservo1.write(90); delay (50); Serial.println(" Turn to Center"); } if(readString.indexOf("right") >0) { myservo1.write(45); delay (50); Serial.println(" Turn to Right"); } if(readString.indexOf("up") >0) { myservo2.write(135); delay (50); Serial.println(" Move Upwards "); } if(readString.indexOf("mid") >0) { myservo2.write(90); delay (50); Serial.println(" Move to Center"); } if(readString.indexOf("down") >0) { myservo2.write(45); delay (50); Serial.println(" Move downwards "); } //clearing string for next read readString="";
} } } } }
|
|
|
|
« Last Edit: July 03, 2012, 11:03:57 am by Jackhobbiest »
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 50
Posts: 6549
Arduino rocks
|
 |
« Reply #5 on: July 03, 2012, 01:28:15 pm » |
You can find lots of html tutorials with various buttons. below is code with mousedown activated buttons. //zoomkat 3-17-12 //simple button GET server code to control servo and arduino pin 5 //for use with IDE 1.0 //open serial monitor to see what the arduino receives //use the \ slash to escape the " in the html //address will look like http://192.168.1.102:84 when submited //for use with W5100 based ethernet shields //Powering a servo from the arduino usually DOES NOT WORK. //note that the below bug fix may be required // http://code.google.com/p/arduino/issues/detail?id=605
#include <SPI.h> #include <Ethernet.h>
#include <Servo.h> Servo myservo; // create servo object to control a servo
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address byte ip[] = { 192, 168, 1, 102 }; // ip in lan byte gateway[] = { 192, 168, 1, 1 }; // internet access via router byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(84); //server port
String readString;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip, gateway, subnet); server.begin();
myservo.write(90); //set initial servo position if desired myservo.attach(7); //the pin for the servo co //enable serial data print Serial.begin(9600); Serial.println("server LED test 1.0"); // so I can keep track of what is loaded }
void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read();
//read char by char HTTP request if (readString.length() < 100) {
//store characters to string readString += c; //Serial.print(c); }
//if HTTP request has ended if (c == '\n') {
/////////////// Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println();
client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Arduino GET test page</TITLE>"); client.println("</HEAD>"); client.println("<BODY>");
client.println("<H1>Zoomkat's simple Arduino button</H1>"); // DIY buttons client.println("<a href=\"/?on\"\">ON</a>"); client.println("<a href=\"/?off\"\">OFF</a><br />");
// mousedown buttons client.println("<br><input type=\"button\" value=\"ON\" onmousedown=\"location.href ('/?on');\"/>"); client.println("<input type=\"button\" value=\"OFF\" onmousedown=\"location.href ('/?off');\"/>"); // mousedown radio buttons client.println("<br><br><input type=\"radio\" value=\"ON\" onmousedown=\"location.href ('/?on');\"\">ON</>"); client.println("<input type=\"radio\" value=\"OFF\" onmousedown=\"location.href ('/?off');\"\">OFF</>"); client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop();
///////////////////// control arduino pin if(readString.indexOf("on") >0)//checks for on { myservo.write(40); digitalWrite(5, HIGH); // set pin 5 high Serial.println("Led On"); } if(readString.indexOf("off") >0)//checks for off { myservo.write(140); digitalWrite(5, LOW); // set pin 5 low Serial.println("Led Off"); } //clearing string for next read readString="";
} } } } }
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 34
|
 |
« Reply #7 on: May 15, 2013, 03:57:46 am » |
@jackhobbiest, as a part of my project i need to control servo motor via ethernet , so can you please provide the circuit of your project that is working .... thank you
|
|
|
|
|
Logged
|
|
|
|
|
|