아두이노 소스코드 질문이에요.

이희주   
   조회 3789   추천 0    

 

소스코드는 아래와 같은 상황입니다. 구글링을 통해 웹서버-아두이노 제어까지는 가능한 상황입니다.
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="";  

           

         }

       }

    }

}

}

짧은글 일수록 신중하게.
김제연 2019-11
int led = 4;

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);

          }
     
이희주 2019-11
감사합니다 시도해보겠습니다!
     
이희주 2019-11
와..바로 해결되었습니다!

이런쪽을 공부해보려면 어떻게 해야할까요?

오늘 도서관가서 책을 잠시 보고왔는데 너무나 광범위한 내용을 겉핥기 식으로 다루는듯해서 대여하려다 말았습니다.

구글링이 최고일까요?
          
김제연 2019-11
저도 관심있는데 시간이 없어서 따로 공부를 해보진 못해서요 .. 책은 있는데 읽어보지도 않았구요 ..
일단 보기편한 서적 한두개 골라서 읽으시고 ... 센서 종류라던지 .. 전자 부품에대한 이해도를 높히는게
좋아 보이긴 합니다.. 콘덴서가 뭐하는건지 .. 여태 모릅니다 ㅋ..
어쨋든.. 저번에 질문 올리신거 같은데 벌써 바로 실행 하시는 부분이 참 부럽습니다..
전 성격이 그렇지 않아서 .. 추진력 강하신분 보면 부럽습니다.. 열심히 하셔서 좋은 결과 있으시길 바랄게요.
               
이희주 2019-11
감사합니다. ㅎㅎ

저는 제가 좋아하고 필요한 부분만 파는 안좋은 버릇(?)이 있어요 ....ㅋㅋㅋ

일단 책을 1권이라도 구매해서 베이스로 깔고 그외의 것들은 구글링을 통해 적당히 응용하며 배워봐야겠습니다...ㅎㅎ

아두이노 1권, HTML1권 구매해야할거같아요~ㅋㅋ
gmltj 2019-11
아두이노는 굉장히 쉬운편인데.... 예제 몇개 보시면 감이 오실겁니다.
     
이희주 2019-11
웹서버 관련 예제를 일부 응용하려고 하면 HTML에서 막힙니다..털썩ㅠㅋㅋ


QnA
제목Page 1303/5708
2015-12   1674477   백메가
2014-05   5139869   정은준1
2017-12   3626   하셀호프
2020-11   3626   나라뜨
2017-03   3626   Balance
2017-07   3626   dotlee
2016-07   3626   지실루
2015-04   3626   김건우
2016-09   3626   라이젠
2020-01   3626   사랑하라
2018-01   3626   블루영상
2017-04   3626   scm123
2015-07   3626   전설속의미…
2014-04   3626   nolf
2015-07   3626   슬루프
2015-12   3626   초보IT
2018-01   3626   마통
2017-07   3626   무아
2018-11   3626   아주큰버드…
2018-08   3627   행복하세
2022-02   3627   잡식
2015-06   3627   monan