• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
problem z przekaznikami zakłócenia
#1
witam .
posidam arduino mega 2560.
A także 2 płytki przekaznikowe po 8 przekazników.
Mój problem jest taki że gdy włączę płytkę i wgram program . to przekazniki zaczynają łapać i puszczać w pozycji wyłączonej jak by dostawały jakies obce sterowanie .
Nie mam pojęcia czy jest to błąd kodu czy bład zasilania bo połaczyłem raczej prawidłowo.

Oto kod programu:

Kod:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x2D };


byte gateway[] = { 192, 168, 0, 3 }; //               <------- PUT YOUR ROUTERS IP Address to which your shield is connected Here
byte subnet[] = { 255, 255, 255, 0 }; //                <------- It will be as it is in most of the cases
IPAddress ip(192,168,0,199);

EthernetServer server(80);

// Pole przekazników 1 sterowane przez wwww
const int  RELAY_CH1 = 22;
const int  RELAY_CH2 = 24;
const int  RELAY_CH3 = 26;
const int  RELAY_CH4 = 28;
const int  RELAY_CH5 = 30;

//Pole przekazników 2 sterowane przez przełączniki
const int  RELAY_CH21 = 23;
const int  RELAY_CH22 = 25;
const int  RELAY_CH23 = 27;
const int  RELAY_CH24 = 29;
const int  RELAY_CH25 = 31;
const int  RELAY_CH26 = 33;
const int  RELAY_CH27 = 35;
const int  RELAY_CH28 = 37;

//Pole przełączników 1
const int SWITCH_CH01 = 13;
const int SWITCH_CH02 = 12;
const int SWITCH_CH03 = 11;
const int SWITCH_CH04 = 10;
const int SWITCH_CH05 = 9;
const int SWITCH_CH06 = 8;
const int SWITCH_CH07 = 7;
const int SWITCH_CH08 = 6;

int buttonState_1 = 0;  
int buttonState_2 = 0;
int buttonState_3 = 0;
int buttonState_4 = 0;
int buttonState_5 = 0;  
int buttonState_6 = 0;
int buttonState_7 = 0;
int buttonState_8 = 0;

String readString;

void setup() {

  // przekazniki wwww
 
        pinMode(RELAY_CH1, OUTPUT);
     digitalWrite(RELAY_CH1, HIGH);  // światło nazewnątrz domu
 
        pinMode(RELAY_CH2, OUTPUT);
     digitalWrite(RELAY_CH2, HIGH);  // światło nazewnątrz garażu
 
        pinMode(RELAY_CH3, OUTPUT);
     digitalWrite(RELAY_CH3, HIGH);  // światło wjazdowe w garażu
 
        pinMode(RELAY_CH4, OUTPUT);
     digitalWrite(RELAY_CH4, HIGH);  // oświetlenie robocze w garażu
 
        pinMode(RELAY_CH5, OUTPUT);
     digitalWrite(RELAY_CH5, HIGH);  // switch on LED5

// przekazmiki sterowane przełącznikami

        pinMode  (RELAY_CH21, OUTPUT);
        digitalWrite(RELAY_CH21, HIGH);
        pinMode  (RELAY_CH22, OUTPUT);
        digitalWrite(RELAY_CH22, HIGH);
        pinMode  (RELAY_CH23, OUTPUT);
        pinMode  (RELAY_CH24, OUTPUT);
        pinMode  (RELAY_CH25, OUTPUT);
        pinMode  (RELAY_CH26, OUTPUT);
        pinMode  (RELAY_CH27, OUTPUT);
        pinMode  (RELAY_CH28, OUTPUT);

//Pole przełączników 1

      pinMode   (SWITCH_CH01, INPUT);
      pinMode   (SWITCH_CH02, INPUT);
      pinMode   (SWITCH_CH03, INPUT);
      pinMode   (SWITCH_CH04, INPUT);
      pinMode   (SWITCH_CH05, INPUT);
      pinMode   (SWITCH_CH06, INPUT);
      pinMode   (SWITCH_CH07, INPUT);
      pinMode   (SWITCH_CH08, INPUT);

 
 
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
 
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
 
}


void loop() {

  // sterowanie przekaznikami z przycisków
buttonState_1 = digitalRead(SWITCH_CH01);

  if (buttonState_1 == LOW) {
    digitalWrite(RELAY_CH21, LOW);
  } else {
    digitalWrite(RELAY_CH21, HIGH);
  }

buttonState_2 = digitalRead(SWITCH_CH02);

  if (buttonState_2 == HIGH) {
    digitalWrite(RELAY_CH22, LOW);
  } else {
    digitalWrite(RELAY_CH22, HIGH);
  }

buttonState_3 = digitalRead(SWITCH_CH03);

  if (buttonState_3 == HIGH) {
    digitalWrite(RELAY_CH23, LOW);
  } else {
    digitalWrite(RELAY_CH23, HIGH);
  }

buttonState_4 = digitalRead(SWITCH_CH04);

  if (buttonState_4 == HIGH) {
    digitalWrite(RELAY_CH24, LOW);
  } else {
    digitalWrite(RELAY_CH24, HIGH);
  }

buttonState_5 = digitalRead(SWITCH_CH05);

  if (buttonState_5 == HIGH) {
    digitalWrite(RELAY_CH25, LOW);
  } else {
    digitalWrite(RELAY_CH25, HIGH);
  }

buttonState_6 = digitalRead(SWITCH_CH06);

  if (buttonState_6 == HIGH) {
    digitalWrite(RELAY_CH26, LOW);
  } else {
    digitalWrite(RELAY_CH26, HIGH);
  }

buttonState_7 = digitalRead(SWITCH_CH07);

  if (buttonState_7 == HIGH) {
    digitalWrite(RELAY_CH27, LOW);
  } else {
    digitalWrite(RELAY_CH27, HIGH);
  }

buttonState_8 = digitalRead(SWITCH_CH08);

  if (buttonState_8 == HIGH) {
    digitalWrite(RELAY_CH28, LOW);
  } else {
    digitalWrite(RELAY_CH28, HIGH);
  }

 
  // listen for incoming clients
  EthernetClient client = server.available();
 
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
           
      if (client.available()) {
        
        char c = client.read();
        
        if (readString.length() < 100) {
          //store characters to string
          readString += c;            //Serial.print(c);
        }
        
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
      client.println("Refresh: 3");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          
          client.println("<HEAD>");
          client.println("<meta name='apple-mobile-web-app-capable' content='yes' charset=iso-8859-2 />");
          client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
          //client.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.digital2u.net/autohome.css\" />");
          client.println("<meta http-equiv=\"refresh\" content=\"5;url=http://192.168.0.199/\"/>" );
          client.println("</HEAD>");
          
          client.println("<body bgcolor=\"#FFFFFF\">");
          //client.println("<hr/>");
          //client.println("<hr/>");
          
          //client.println("<h4><center><img border=\"2\" src=\"https://lh3.googleusercontent.com/-C6BoJrRUFko/UEUFeCwkvdI/AAAAAAAAAOc/E7gcYvPV6r4/s960/Logo.jpg\" /></center></h4>");
          //client.println("<hr/>");
          //client.println("<hr/>");
                   
          client.print("<center> <p> <h1>witaj. Smart home v.1 </h1></p> ");
          //client.println("<br />");
          //client.println("<br />");
          
          
          // Relay Status Display
          client.println("<center>");
          
              client.println("<table border=\"5\">");
              
                  client.println("<tr>");
                      if (!digitalRead(RELAY_CH1))
                      {
                           client.print("<td> <p style=\"font-family:arial;color:black;font-size:26px;\">światło na zewnątrz domu przełącznik 1.</p><p style=\"font-family:arial;color:green;font-size:35px;\">ON</p> </td>");
                      }
                      else
                      {
                           client.print("<td> <p style=\"font-family:arial;color:black;font-size:26px;\">światło na zewnątrz domu przełącznik 1.</p><p style=\"font-family:arial;color:red;font-size:35px;\">OFF</p></td>");
                      }
                      
                                  
                      if (!digitalRead(RELAY_CH2))
                      {   
                           client.print("<td> <p style=\"font-family:arial;color:black;font-size:26px;\">światło nazewnątrz garażu przełącznik 2.</p><p style=\"font-family:arial;color:green;font-size:35px;\">ON</p></td>");
                      }
                      else
                      {  
                          client.print("<td> <p style=\"font-family:arial;color:black;font-size:26px;\">światło nazewnątrz garażu przełącznik 2.</p><p style=\"font-family:arial;color:red;font-size:35px;\">OFF</p></td>");
                      }
                     
                      
                      if (!digitalRead(RELAY_CH3))
                      {
                           client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">światło wjazdowe w garażu rzełącznik 3.</p><p style=\"font-family:arial;color:green;font-size:35px;\">ON</p></td>");
                      }
                      else
                      {
                          client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">światło wjazdowe w garaż przełącznik 3.</p><p style=\"font-family:arial;color:red;font-size:35px;\">OFF</p></td>");
                      }
                     
                     
                      if (!digitalRead(RELAY_CH4))
                      {
                         client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">światło robocze w garażu przełącznik 4.</p><p style=\"font-family:arial;color:green;font-size:35px;\">ON</p></td>");
                      }
                      else
                      {
                          client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">światło robocze w garażu przełącznik 4.</p><p style=\"font-family:arial;color:red;font-size:35px;\">OFF</p></td>");
                      }
                     
                     
                      if (!digitalRead(RELAY_CH5))
                      {
                           client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">Device 5.</p><p style=\"font-family:arial;color:green;font-size:35px;\">ON</p></td>");
                      }
                      else
                      {
                          client.print("<td><p style=\"font-family:arial;color:black;font-size:26px;\">Device 5.</p><p style=\"font-family:arial;color:red;font-size:35px;\">OFF</p></td>");
                      }
                     
                       
                 client.println("</tr>");                   
              client.println("</table>");
              
          client.println("</center>");
          client.println("<br />");

          
          
         /* Relay Control Code  */                
        
          client.println("<a href=\"/?relay1on\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\"; color:red ;>przełącznik 1 ON </font> </button> </a> ");
          client.println("<a href=\"/?relay1off\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 1 OFF </font> </button> </a> <br />");
          client.println("<br />");
          

          client.println("<a href=\"/?relay2on\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 2 ON </font> </button> </a> ");
          client.println("<a href=\"/?relay2off\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 2 OFF </font> </button> </a> <br />");
          client.println("<br />");
          
          
          client.println("<a href=\"/?relay3on\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 3 ON </font> </button> </a> ");
          client.println("<a href=\"/?relay3off\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 3 OFF </font> </button> </a> <br />");
          client.println("<br />");
          

          client.println("<a href=\"/?relay4on\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 4 ON </font> </button> </a> ");
          client.println("<a href=\"/?relay4off\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 4 OFF </font> </button> </a> <br />");
          client.println("<br />");
         
          
          client.println("<a href=\"/?relay5on\"\"> <button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 5 ON </font> </button> </a> ");
          client.println("<a href=\"/?relay5off\"\"><button style=\"width:360px;height:120px\"> <font size=\"7\">przełącznik 5 OFF </font> </button> </a> <br />");
          client.println("<br />");        
          
          // control arduino pin via ethernet Start //

        if(readString.indexOf("?relay1on") >0)//checks for on
        {
            digitalWrite(RELAY_CH1, LOW);    // set pin 4 high
            //Serial.println("Led On");
            
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/on.png' />");
            //client.println("Light 1 Is On");
            client.println("<br />");
    }
        else{
          if(readString.indexOf("?relay1off") >0)//checks for off
          {
            digitalWrite(RELAY_CH1, HIGH);    // set pin 4 low
            //Serial.println("Led Off");
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/off.png' />");

        //client.println("Light 1 Is Off");
            client.println("<br />");
          }
        }
          
          
         if(readString.indexOf("?relay2on") >0)//checks for on
        {
            digitalWrite(RELAY_CH2, LOW);    // set pin 4 high
            //Serial.println("Led On");
            
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/on.png' />");
            //client.println("Light 1 Is On");
            client.println("<br />");
    }
        else{
          if(readString.indexOf("?relay2off") >0)//checks for off
          {
            digitalWrite(RELAY_CH2, HIGH);    // set pin 4 low
            //Serial.println("Led Off");
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/off.png' />");

        //client.println("Light 1 Is Off");
            client.println("<br />");
          }
        }
          
          
          if(readString.indexOf("?relay3on") >0)//checks for on
        {
            digitalWrite(RELAY_CH3, LOW);    // set pin 4 high
            //Serial.println("Led On");
            
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/on.png' />");
            //client.println("Light 1 Is On");
            client.println("<br />");
    }
        else{
          if(readString.indexOf("?relay3off") >0)//checks for off
          {
            digitalWrite(RELAY_CH3, HIGH);    // set pin 4 low
            //Serial.println("Led Off");
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/off.png' />");

        //client.println("Light 1 Is Off");
            client.println("<br />");
          }
        }
        
        if(readString.indexOf("?relay4on") >0)//checks for on
        {
            digitalWrite(RELAY_CH4, LOW);    // set pin 4 high
            //Serial.println("Led On");
            
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/on.png' />");
            //client.println("Light 1 Is On");
            client.println("<br />");
    }
        else{
          if(readString.indexOf("?relay4off") >0)//checks for off
          {
            digitalWrite(RELAY_CH4, HIGH);    // set pin 4 low
            //Serial.println("Led Off");
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/off.png' />");

        //client.println("Light 1 Is Off");
            client.println("<br />");
          }
        }
        
         if(readString.indexOf("?relay5on") >0)//checks for on
        {
            digitalWrite(RELAY_CH5, LOW);    // set pin 4 high
            //Serial.println("Led On");
            
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/on.png' />");
            //client.println("Light 1 Is On");
            client.println("<br />");
    }
        else{
          if(readString.indexOf("?relay5off") >0)//checks for off
          {
            digitalWrite(RELAY_CH5, HIGH);    // set pin 4 low
            //Serial.println("Led Off");
            client.println("<link rel='apple-touch-icon' href='http://chriscosma.co.cc/off.png' />");

        //client.println("Light 1 Is Off");
            client.println("<br />");
          }
        }

                    
        // INPUT
          
          
          // output the value of each analog input pin
          //for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
          //  int sensorReading = analogRead(analogChannel);
          //  client.print("analog input ");
          //  client.print(analogChannel);
          //  client.print(" is ");
          //  client.print(sensorReading);
          //  client.println("<br />");       
          //}
                  
                  
           readString="";
           client.println("</body>");         
           client.println("</html>");
         
          break;
        }// if ( c == \n )
        
        
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
                
      }
    }
    
    // give the web browser time to receive the data   
    delay(1);
    //client.println("<meta http-equiv=\"refresh\" content=\"10;url=http://192.168.0.199/\"/>" );
    
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
    
  }//if(Client)
 
}//Loop

będę wdzięczny za jaką kolwiek pomoc


Używamy "code" bo będę opornych nagradzał
 
Odpowiedź
#2
Jak widzę takie posty to mi sie wszystkiego odechciewa.
1. Programy wklejamy w zancznikach kod.
2. Zastanów się ilu osobom zechce sie analizować cały program.
3. Twierdzisz że dobrze połączyłeś, może i tak ale...
4. Schemat - skąd wiesz że dobrze zaprojektowałeś układ?
Można by pewnie do czegoś się jeszcze przyczepić...

Czy to samo dzieje się jak wytniesz z programu obsługę www?
Problem może wynikać z tego że nie zastosowałeś dla pinów wejściowych 'INPUT_PULLUP'.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
witam.
1. Jestem nowy na forum nie wiedziałem o miejscu na kod programu.
2. Połączyłem masy razem i do GND, Zasilanie płytek do 5v bo są na 5v , piny przekaźników do pinów cyfrowych . a wejscia sterowane są zwarciem do masy.
3. Osobno sterowanie www i sterowanie przełącznikami działa poprawnie dopiero po scaleniu występuje ten problem .
Dziękuję za radę z 'INPUT_PULLUP' jutro sprawdzę.

Mam jeszcze jedno pytanie w jaki sposób najlepiej zasilać arduino i płytki dodatkowe czy można je zasilać z różnych zródeł zasilania oczywiście łącząc masy. Jakim prądem powinien być zasilany układ .
 
Odpowiedź
#4
Przed napisaniem następnego postu zapoznaj się z tym: http://rtfm.killfile.pl/
Zastanów się jak chcesz otrzymać pomoc jeśli nie odpowiadasz na pytania/sugestie.
Jeśli nie masz czasu na ustosunkowanie się do pytań to ok ale nie zadawaj kolejnych pytań jeśli nie odpowiesz na poprzednie bo to, delikatnie mówiąc, nieładnie.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#5
dziekuje wszytskim za pomoc .
Problem usunułem po przez INPUT_PULLUP
temat do zamknięcia
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości