HTML및 아두이노 프로그래밍에 전혀 모르는 채로 여기저기서 주워온 코드를 응용하여 만들다보니
1번 버튼을 누르면 연결된 릴레이 제어는 가능하지만,2번 버튼을 누르면 2번이 아닌 1번 릴레이가 작동하는 상황입니다.
2번 릴레이와 연결된 핀헤더를 정의 해주고 웹서버상의 2번 버튼과 연동하면 될듯한데 프로그래밍을 하나도 몰라서 어찌해야할지 모르겠습니다.
도움주시면 감사하겠습니다.
/*
PUMP CONTROL SYSTEM
*/
#include <SPI.h>
#include <Ethernet.h>
int led = 4;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 66 }; // ip in lan (that's what you need to use in your browser. ("192.168.1.178")
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
pinMode(led, OUTPUT);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
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("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />");
client.println("<TITLE>PUMP CONTROL SYSTEM</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>PUMP CONTROL SYSTEM</H1>");
client.println("<hr />");
client.println("<br />");
client.println("<H2>169-1</H2>");
client.println("<br />");
client.println("<a href=\"/?button1on\"\">Turn OFF PUMP1</a>");
client.println("<a href=\"/?button1off\"\">Turn ON PUMP1</a><br />");
client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?button2on\"\">Turn OFF PUMP2</a>");
client.println("<a href=\"/?button2off\"\">Turn ON PUMP2</a><br />");
client.println("<p>-</p>");
client.println("<br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
//controls the Arduino if you press the buttons
if (readString.indexOf("?button1on") >0){
digitalWrite(led, HIGH);
}
if (readString.indexOf("?button1off") >0){
digitalWrite(led, LOW);
}
if (readString.indexOf("?button2on") >0){
digitalWrite(led, HIGH);
}
if (readString.indexOf("?button2off") >0){
digitalWrite(led, LOW);
}
//clearing string for next read
readString="";
}
}
}
}
}
LED 4 가 .. 4번 핀에 릴레이 1번이 연결 되어있는거 같습니다?
맞나요?
그럼
int led2 = 5 해서 .. 5번에 릴레이 2번 연결 하시고
pinMode(led, OUTPUT);
아래쪽에
pinMode(led2, OUTPUT);
그리고 아래쪽에 이부분을
if (readString.indexOf("?button2on") >0){
digitalWrite(led, HIGH);
}
if (readString.indexOf("?button2off") >0){
digitalWrite(led, LOW);
}
led -> led2로 변경 해주시면 될것 같네요.
if (readString.indexOf("?button2on") >0){
digitalWrite(led2, HIGH);
}
if (readString.indexOf("?button2off") >0){
digitalWrite(led2, LOW);
}
이런쪽을 공부해보려면 어떻게 해야할까요?
오늘 도서관가서 책을 잠시 보고왔는데 너무나 광범위한 내용을 겉핥기 식으로 다루는듯해서 대여하려다 말았습니다.
구글링이 최고일까요?
일단 보기편한 서적 한두개 골라서 읽으시고 ... 센서 종류라던지 .. 전자 부품에대한 이해도를 높히는게
좋아 보이긴 합니다.. 콘덴서가 뭐하는건지 .. 여태 모릅니다 ㅋ..
어쨋든.. 저번에 질문 올리신거 같은데 벌써 바로 실행 하시는 부분이 참 부럽습니다..
전 성격이 그렇지 않아서 .. 추진력 강하신분 보면 부럽습니다.. 열심히 하셔서 좋은 결과 있으시길 바랄게요.
저는 제가 좋아하고 필요한 부분만 파는 안좋은 버릇(?)이 있어요 ....ㅋㅋㅋ
일단 책을 1권이라도 구매해서 베이스로 깔고 그외의 것들은 구글링을 통해 적당히 응용하며 배워봐야겠습니다...ㅎㅎ
아두이노 1권, HTML1권 구매해야할거같아요~ㅋㅋ