bangnaga

Arduino Servo + Ethernet Shield

Jan 18th, 2013
148
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Code ini menggunakan ARDUINO 1.0
  2. // Code by : Bang Naga & Mr. Black
  3. // Contol servo Via Ethernet Shield
  4.  
  5. #include <Ethernet.h>
  6. #include <SPI.h>
  7. #include <Servo.h>
  8. #define PINSERVO 2                                      // Set Pin Servo pada pin 2 Analog Arduino
  9.  
  10. boolean reading = false;
  11. IPAddress ip(192,168,10,212);                           // IP Address Ethernet Shield
  12. byte mac[] = {   0x90, 0xa2, 0xda, 0x00, 0xa6, 0x62 };  // Mac Addreess
  13. EthernetServer server = EthernetServer(80);             //Set port 80 agar bisa diakses via HTTP
  14. Servo servo1;
  15.  
  16. void setup(){
  17.   Serial.begin(115200);
  18.   pinMode(PINSERVO, OUTPUT);
  19.   servo1.attach(PINSERVO);
  20.   Ethernet.begin(mac, ip);
  21.   server.begin();
  22.   Serial.print("IP Address Micro: ");
  23.   Serial.println(Ethernet.localIP());
  24. }
  25.  
  26. void loop(){
  27.   checkForClient();
  28. }
  29.  
  30. void checkForClient(){
  31.   static int val = 0;
  32.   EthernetClient client = server.available();
  33.   if (client) {
  34.     boolean currentLineIsBlank = true;
  35.     boolean sentHeader = false;
  36.     while(client.connected()) {
  37.       if (client.available()) {
  38.         if(!sentHeader){
  39.           client.println("HTTP/1.1");
  40.           client.println("Content-Type: text/html");
  41.           client.println();
  42.           sentHeader = true;
  43.         }
  44.         char data = client.read();
  45.         if(reading && data == ' ') reading = false;
  46.         if(data == '?') reading = true; //Jika ditemukan karakter ?, Mulai baca data
  47.         if(reading){
  48.           Serial.print(data);
  49.            switch (data) {
  50.             case '0'...'9':
  51.                val = val * 10 + data - '0';
  52.               break;
  53.              case 'd':                  // Akhir baca data
  54.               servo1.write(val);
  55.               client.println(val, DEC);
  56.               val = 0;
  57.               break;
  58.             default:
  59.               break;  
  60.           }
  61.         }
  62.         if (data == '\n' && currentLineIsBlank)  break;
  63.         if (data == '\n') {
  64.           currentLineIsBlank = true;
  65.         }else if (data != '\r') {
  66.           currentLineIsBlank = false;
  67.         }
  68.       }
  69.     }
  70.     delay(1); // Set Delay
  71.     client.stop(); // Tutup Koneksi
  72.   }
  73. }
RAW Paste Data