- 전체
- 안드로이드 플랫폼
- 아두이노
- 라즈베리 파이
- 안드로이드 ADK
- Embedded HardWare
- Embedded FirmWare
- Embedded Platform
- Embedded SoftWare
- 임베디드 리눅스
- Hobby Electronics
- 임베디드기사 - 국가기술자격
- VHDL 디지털설계
- M2M_IoT_사물지능통신
- 아마추어 로봇
- EDA - Electronic CAD
- 로봇공학
- 국가기술자격 로봇 제작 개발 자격증
- IoT (임베디드 인터넷)
아두이노 아두이노를 이용한 미니 웹 서버 만들기 - LED 제어
2017.08.03 22:44
아두이노를 이용한 미니 웹 서버 만들기 - LED 제어
by Bong Kyu Lee | 2016-01-25 17:37
블루투스 통신을 통해 LED를 제어해 보듯, 컴퓨터에서 직접 웹 사이트에 접속해서 LED를 제어하는 동작을 진행해 보겠습니다. 보드는 다음과 같이 연결되어 있습니다.
그림 1. 이더넷 쉴드에 LED 연결모습
그림 2. 이더넷 쉴드에 LED 연결 모습
이 프로그램의 소스코드는 이전 스토리에서 본 웹 서버와 큰 틀에서는 비슷한 구조를 가지고 있습니다. 다른 점이 있다면,
1. LED 제어를 위해 핀 모드를 설정한 부분
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/
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 1 |
국가 기술자격 [로봇소프트웨어개발기사] 로봇소프트웨어개발기사 자격증 알아보기
| 졸리운_곰 | 2021.01.07 | 333 |



