How to read if a pin is high or low

Hi,
I have a code that works fine (see below). It's a code that turns relays on and off from my smartphone. I really like it. I have it for a speaker switch in my house. But now I need a code that is doing this (to indicate if any of my speakers are on):

If digital pin 2 or 3 or 4 or 5 or 6 are high then lit led on pin 11 else set pin 11 to low.

Easy huh :wink:


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

int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6; //ger led6 pinne 6 på kortet
int led11 = 11;
int val = 0; // laddar 0 på status för led

int pos = 0;
byte mac[] = { xxxxxxxxxxxxxx}; // Mac-adress
byte ip[] = { xxxxxxxx }; // Mitt valda IP
byte gateway[] = { xxxxxx}; // Router-gateway
byte subnet[] = { xxxxxxx }; // subnet mask
EthernetServer server(80); // server port
String readString;

void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led11, OUTPUT);

Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());

}

void loop() {
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
Serial.println(readString);

client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/css;");
client.println("Content-Type: charset=utf-8;");
client.println();
client.println("");
client.println("");
client.println("");
client.println("");
client.println("xxxxxxxxxxxxx");
client.println("");

client.println("


");

client.println("

Vardagsrum

");
client.println("<a href="/?button2on"">PÃ…");
client.println("  ");
client.println("<a href="/?button2off"">AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("

Garage

");
client.println("<a href="/?button3on""> PÃ… ");
client.println("  ");
client.println("<a href="/?button3off""> AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("

Framsidesaltan

");
client.println("<a href="/?button4on""> PÃ… ");
client.println("  ");
client.println("<a href="/?button4off""> AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("

Baksidans trapp

");
client.println("<a href="/?button5on""> PÃ… ");
client.println("  ");
client.println("<a href="/?button5off""> AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("

Trädet

");
client.println("<a href="/?button7on""> PÃ… ");
client.println("  ");
client.println("<a href="/?button7off""> AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("
");
client.println("

Partyläge = Alla högtalare

");
client.println("<a href="/?button6on""> PÃ… ");
client.println("  ");
client.println("<a href="/?button6off""> AV
");
client.println("
");
client.println("
");
client.println("
");

client.println("");
client.println("");

delay(1);

client.stop();

//////// 1 /////

if (readString.indexOf("?button2on") >0){
digitalWrite(led2, HIGH);

}
if (readString.indexOf("?button2off") >0){
digitalWrite(led2, LOW);
}

///////// 2 ///////

if (readString.indexOf("?button3on") >0){
digitalWrite(led3, HIGH);
}
if (readString.indexOf("?button3off") >0){
digitalWrite(led3, LOW);
}

///////// 3 ///////

if (readString.indexOf("?button4on") >0){
digitalWrite(led4, HIGH);
}
if (readString.indexOf("?button4off") >0){
digitalWrite(led4, LOW);
}

///////// 4 ///////

if (readString.indexOf("?button5on") >0){
digitalWrite(led5, HIGH);
}
if (readString.indexOf("?button5off") >0){
digitalWrite(led5, LOW);
}

///////// 6 ///////

if (readString.indexOf("?button7on") >0){
digitalWrite(led6, HIGH);
}
if (readString.indexOf("?button7off") >0){
digitalWrite(led6, LOW);
}

///////// 5 - Reset ///////

if (readString.indexOf("?button6on") >0){
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
}

if (readString.indexOf("?button6off") >0){
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
}

readString="";

}
}
}
}
}

digitalRead

Why this indenting?

  pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
       pinMode(led4, OUTPUT);
          pinMode(led5, OUTPUT);
             pinMode(led6, OUTPUT);
                pinMode(led11, OUTPUT);

To post:

  1. Use CTRL-T in the Arduino IDE to autoformat your code.
  2. Paste the autoformatted code between code tags (the </> button)
    so that we can easily see and deal with your code.

Before posting again, you should read the three locked topics at the top of the Programming Questions forum, and any links to which these posts point.

Good Luck!

Here is an abbreviated example (not tested):

  if (digitalRead(2)==HIGH || digitalRead(3)==HIGH) {
    digitalWrite(11,HIGH) ;
    } else {
    digitalWrite(11,LOW) ;
    }

It is left as an exercise to Nossanoj to extend this to additional digital input pins.

As Delta_G wrote, Nossanoj needs to learn about digitalRead().
I would add that Nossanoj also needs to learn about digitalWrite(), if, else, the operator ==, and the operator ||.

You can make only 2 functions. 1 for on and 1 for off. And store the number and status in any string use if else to call functions (on or off).
That will make this code simpler.
For button6 why dont use "for loop" instead of 5 lines.

Hi again,
Thanks all for good advice. You can all see that I'm a rookie in coding. I often get my codes to work fine but it never look so pretty. Often long codes :frowning: From now I will post my coeds in the code field. :slight_smile:

Now my code look like this but the led still won't lit when i turn led2 or 3 or 5 or 6 on. What can be wrong?

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

int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led11 = 11;

int pos = 0;
byte mac[] = { xxxxxxx };   // Mac-adress
byte ip[] = { xxxxxxx };                      // Mitt valda IP
byte gateway[] = {xxxxx };                   // Router-gateway
byte subnet[] = { 255, 255, 255, 0 };                  // subnet mask
EthernetServer server(80);                             // server port
String readString;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led11, OUTPUT);

  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());

}

void loop() {
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 100) {
          readString += c;
        }
        if (c == '\n') {
          Serial.println(readString);

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/css;");
          client.println("Content-Type: charset=utf-8;");
          client.println();
          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<link rel='stylesheet' type='text/css' href='xxxxxxx/xx.css' />");
          client.println("<link href='xxxxxxx/icon.png' rel='apple-touch-icon' size='57x57' />");
          client.println("<TITLE>xxxxxxxx</TITLE>");
          client.println("</HEAD>");

          client.println("<hr color='gray'>");

          client.println("<H1>Vardagsrum</H1>");
          client.println("<a href=\"/?button2on\"\">PÅ</a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button2off\"\">AV</a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("<H1>Garage</H1>");
          client.println("<a href=\"/?button3on\"\"> PÅ </a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button3off\"\"> AV </a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("<H1>Framsidesaltan</H1>");
          client.println("<a href=\"/?button4on\"\"> PÅ </a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button4off\"\"> AV </a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("<H1>Baksidans trapp</H1>");
          client.println("<a href=\"/?button5on\"\"> PÅ </a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button5off\"\"> AV </a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("<H1>Trädet</H1>");
          client.println("<a href=\"/?button7on\"\"> PÅ </a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button7off\"\"> AV </a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("
");
          client.println("<H1>Partyläge = Alla högtalare</H1>");
          client.println("<a href=\"/?button6on\"\"> PÅ </a>");
          client.println("&nbsp;&nbsp;");
          client.println("<a href=\"/?button6off\"\"> AV </a>
");
          client.println("
");
          client.println("
");
          client.println("<hr color='gray'>");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);

          client.stop();

          //////// 1 /////

          if (readString.indexOf("?button2on") > 0) {
            digitalWrite(led2, HIGH);

          }
          if (readString.indexOf("?button2off") > 0) {
            digitalWrite(led2, LOW);
          }

          ///////// 2 ///////

          if (readString.indexOf("?button3on") > 0) {
            digitalWrite(led3, HIGH);
          }
          if (readString.indexOf("?button3off") > 0) {
            digitalWrite(led3, LOW);
          }

          ///////// 3 ///////

          if (readString.indexOf("?button4on") > 0) {
            digitalWrite(led4, HIGH);
          }
          if (readString.indexOf("?button4off") > 0) {
            digitalWrite(led4, LOW);
          }

          ///////// 4 ///////

          if (readString.indexOf("?button5on") > 0) {
            digitalWrite(led5, HIGH);
          }
          if (readString.indexOf("?button5off") > 0) {
            digitalWrite(led5, LOW);
          }

          ///////// 6 ///////

          if (readString.indexOf("?button7on") > 0) {
            digitalWrite(led6, HIGH);
          }
          if (readString.indexOf("?button7off") > 0) {
            digitalWrite(led6, LOW);
          }


          ///////// 5 - Reset ///////

          if (readString.indexOf("?button6on") > 0) {
            digitalWrite(led2, HIGH);
            digitalWrite(led3, HIGH);
            digitalWrite(led4, HIGH);
            digitalWrite(led5, HIGH);
            digitalWrite(led6, HIGH);
          }

          if (readString.indexOf("?button6off") > 0) {
            digitalWrite(led2, LOW);
            digitalWrite(led3, LOW);
            digitalWrite(led4, LOW);
            digitalWrite(led5, LOW);
            digitalWrite(led6, LOW);
          }

          ///// kollar status på switscharna och tänder led  ///////

          if (digitalRead(led2) == HIGH || digitalRead(led3) == HIGH || digitalRead(led4) == HIGH || digitalRead(led5) == HIGH || digitalRead(led6) == HIGH) {
            digitalWrite(led11, HIGH) ;
          } else {
            digitalWrite(led11, LOW) ;
          }



          readString = "";

        }
      }
    }
  }
}

All code works fine except the code I use for a fysical led to turn on if any of the digital pins 2-6 is in state HIGH.

          if (digitalRead(led2) == HIGH || digitalRead(led3) == HIGH || digitalRead(led4) == HIGH || digitalRead(led5) == HIGH || digitalRead(led6) == HIGH) {
            digitalWrite(led11, HIGH) ;
          } else {
            digitalWrite(led11, LOW) ;
          }

This code looks correct:

          if (digitalRead(led2) == HIGH || digitalRead(led3) == HIGH || digitalRead(led4) == HIGH || digitalRead(led5) == HIGH || digitalRead(led6) == HIGH) {
            digitalWrite(led11, HIGH) ;
          } else {
            digitalWrite(led11, LOW) ;
          }

Good work!
Are you saying that if led4 is on, then led11 is on, but otherwise led11 is off?
Or did you intend to say that led11 is never on, in which case I would suspect the wiring of led11 and would suggest that a test program for led2, led3, led4, led5, led6, and led11 is in order.
Are all of the LEDs wired the same? What is the wiring?

Thanks,
Maybe I have to take a Look att the wiring. Yes, if any of 2 to 6 is in high state the 11 should be high. The led should only be off of all of 2 to 6 is off. The function is to see if any of the relays is on.

11 is wired to a resistor 220 ohm to a led connected to ground. I have tried it just connected to pin 5. It worked fine.

Can it be because of 11 is set to output? If I don't set 2-6 as output the relays won't go high when I press my buttons.

Ideas?

if (digitalRead(led2) == HIGH || digitalRead(led3) == HIGH || digitalRead(led4) == HIGH || digitalRead(led5) == HIGH || digitalRead(led6) == HIGH) 
{
  digitalWrite(led11, HIGH);
  Serial.println(F("Led 11 ON"));
} 
else 
{
  digitalWrite(led11, LOW);
  Serial.println(F("Led 11 OFF"));
}

What happens when you put a Serial.print() debug statements in there?

If I don't set 2-6 as output the relays won't go high when I press my buttons.

Relays? What relays? Now I REALLY need a schematic or wiring diagram.

It works!!

I used BullDog Lowells code "Serial.print()" and also changed from pin 11 to pin 8, maybe some hardware bug with my 11.

1000 thanks to all of you :slight_smile:

Boom!