아두이노를 이용한 미니 웹 서버 만들기 - LED 제어

by Bong Kyu Lee | 2016-01-25 17:37

블루투스 통신을 통해 LED를 제어해 보듯, 컴퓨터에서 직접 웹 사이트에 접속해서 LED를 제어하는 동작을 진행해 보겠습니다. 보드는 다음과 같이 연결되어 있습니다.

그림 1. 이더넷 쉴드에 LED 연결모습

 

그림 2. 이더넷 쉴드에 LED 연결 모습

 

이 프로그램의 소스코드는 이전 스토리에서 본 웹 서버와 큰 틀에서는 비슷한 구조를 가지고 있습니다. 다른 점이 있다면,

 

1. LED 제어를 위해 핀 모드를 설정한 부분

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

2. 클라이언트에서 전달한 주소값 뒤에 있는 GET을 읽고 처리하는 부분

 

에서 차이가 있습니다. 문자는 한 문자 단위로 처리하고 있습니다.

 

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 199);
EthernetServer server(80);
boolean reading = false;
void setup() {
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
void loop() {
 checkForClient();
}
void checkForClient(){
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;
    while (client.connected()) {
      if (client.available()) {
        if(!sentHeader){
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }
        // *주목
        // 클라이언트의 GET을 읽어들인다.
        char c = client.read();
        if(reading && c == ' ') reading = false;
        if(c == '?') reading = true; //found the ?, begin reading the info
        if(reading){
          Serial.print(c);
           switch (c) {
            case '2':
              triggerPin(2, client);
              break;
            case '3':
              triggerPin(3, client);
              break;
            case '4':
              triggerPin(4, client);
              break;
            case '5':
              triggerPin(5, client);
              break;
            case '6':
              triggerPin(6, client);
              break;
            case '7':
              triggerPin(7, client);
              break;
            case '8':
              triggerPin(8, client);
              break;
            case '9':
              triggerPin(9, client);
              break;
          }
        }
        if (c == '\n' && currentLineIsBlank)  
          break;
        if (c == '\n') {
          currentLineIsBlank = true;
        }else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1); 
    client.stop();
  } 
}
void triggerPin(int pin, EthernetClient client){
  client.print("Turning on pin ");
  client.println(pin);
  client.print("<br>");
  digitalWrite(pin, HIGH);
  delay(100);
  digitalWrite(pin, LOW);
  delay(100);
}

코드 1. 웹서버에 LED를 제어하는 소스코드

 

아래의 동영상은 실제 실행 영상입니다. 주소 뒤에 출력하고자 하는 LED의 번호를 입력하면 LED가 빛이 나고 있습니다.

 

이더넷으로도 아두이노에게 명령을 내릴 수 있는 방법을 알아봤습니다. 이 이야기는 여기까지입니다. 다음번에는 더 재밌는 메이커를 만들어보겠습니다. ㅇㅅㅇ/

[출처] http://www.makewith.co/page/project/350/story/705/

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
23 [아두이노 arduino] Run a Virtual Factory with Arduino! : 아두이노로 가상 공장을 운영해보세요! file 졸리운_곰 2024.12.28 116
22 [아두이노 arduino] Arduino – base64 encode and decode file 졸리운_곰 2024.03.11 207
21 [아두이노 arduino] Simple encryption using XOR operator 졸리운_곰 2024.03.11 214
20 [아두이노 arduino] 아두이노 json 암호화: Crypt json content file 졸리운_곰 2024.03.11 218
19 C#으로 아두이노의 LED 제어하기 - C# 프로그래밍 file 졸리운_곰 2024.02.25 269
18 Top 20 Arduino-based Health Projects file 졸리운_곰 2020.06.07 252
17 Get started with machine learning on Arduino file 졸리운_곰 2019.11.12 270
16 아두이노 운영체제 : 4 Operating Systems for the Arduino file 졸리운_곰 2019.11.04 315
15 아두이노 프로토쉴드(ProtoShield) 조립 가이드 file 졸리운_곰 2019.10.31 307
14 아두이노 우노 를 이용한 부트로더 굽기 ATMEGA328 file 졸리운_곰 2018.01.04 475
13 아두이노 부트로더 굽기(Arduino boorloader burning) file 졸리운_곰 2018.01.04 526
» 아두이노를 이용한 미니 웹 서버 만들기 - LED 제어 file 졸리운_곰 2017.08.03 494
11 아두이노를 이용한 미니 웹 서버 만들기 - 예제 분석 file 졸리운_곰 2017.08.03 596
10 아두이노를 이용한 미니 웹 서버 만들기 - 시작하기 file 졸리운_곰 2017.08.03 431
9 CSEduino : 아두이노 호환 : PCB 주문하여 납땜 조립가능 소형 보드 file 졸리운_곰 2017.08.02 441
8 회로 시뮬레이션 및 아두이노 시뮬레이터 Autodesk의 123D Circuits file 졸리운_곰 2017.06.10 794
7 브레드보드 위에 아두이노 만들기- Arduino Breadboard DIY file 졸리운_곰 2016.11.20 671
6 아두이노 UNO 회로도, Arduino UNO Schemetic file 졸리운_곰 2015.07.04 2222
5 Intel® Edison Boards, rcad* Schematic Design File file 졸리운_곰 2015.07.04 312
4 아두이노 부트로더 굽기 2 file 졸리운_곰 2015.07.04 670
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED