Mehrere Magnetkontakte / LED

Hallo liebe Gemeinde,

wer kann mir hier helfen ich erhalte eine Fehlermeldung.
Über zwei Magnestsensoren sollen zwei LEDs zum Leuchten gebracht werden.

//Sensor 1
const int switchPin1 = 1;
const int ledPin11 = 11;
//Sensor 2
const int switchPin2 = 2;
const int ledPin12 = 12;

void setup() {

pinMode(switchPin1, INPUT);

pinMode(12, OUTPUT);

digitalWrite(switchPin1, HIGH);

}

void loop() {

// Sensor 1
if(digitalRead(switchPin1) == HIGH){

digitalWrite(ledPin11, LOW);

if(digitalRead(switchPin1) == HIGH){

digitalWrite(ledPin11, LOW);

// Sensor 2

if(digitalRead(switchPin2) == HIGH){

digitalWrite(ledPin12, LOW);

if(digitalRead(switchPin2) == HIGH){

digitalWrite(ledPin12, LOW);

}

else{

digitalWrite(ledPin12, HIGH);
digitalWrite(ledPin11, HIGH);

}

Danke und Liebe Grüsse

C3PO

Hi!

Leider kann ich die Fehlermeldung nicht übersetzen.

Sicher, dass Pin 1 frei ist?

1 Like

Die wie lautet?
Wenn Du STRG-T drückst wirst Du merken, das Dir ein Haufen schliessende Klammern fehlen.
Mir fehlt noch die Angabe, auf was für einem Board Du das baust.

1 Like

Generell gilt :
Di anzahl der offenen Klammern muß gleich groß sein wie die schließenden Klammern.

In Deinem Sketch zähle ich:
{ : 7
} : 3

Wieso wiederholst Du die Ifs?

Wieso initialisierst Du die Pins für den ersten Sensor/LED aber nciht fü den zweiten?

Grüße Uwe

1 Like

Danke für die Fragen, jetzt laufen sogar schon drei kontakte :slight_smile:
jetzt habe ich ein weiteres Problem, ich versuche die libary "#include "SparkFunHTU21D.h"" ein zu binden. tatsache ist, ich finde die bei github, doch nirgends eine zip version?
wie müsste ich da vorgehen damit ich einbinden kann?

läuft jetzt über 11,12,13, darf ich den pin eins nicht nutzen?
da müssen noch eine menge sensoren an den arduiono, wäre es besser ich nutze mehrere arduinos oder wie erhalte ich mehrere pins? danke.

1 Like

Dankeschön, hatte keinen Account, jetzt habe ich einen.

Um die ZIP Datei herunterladen braucht man kein Account.
Zu finden ist die unter CODE ganz unten Download ZIP.

1 Like

Zukünftig in der IDE: SKETCH - BIBLIOTHEK EINBINDEN - BIBLIOTHEK VERWALTEN
Dann sieht das so aus:

1 Like

Jetzt hänge ihc hier fest

//Sensor 1
const int switchPin2 = 2;
const int ledPin11 = 11;

//Sensor 2
const int switchPin3 = 3;
const int ledPin12 = 12;

//Sensor 3
const int switchPin4 = 4;
const int ledPin13 = 13;

#include <Wire.h>
#include "SparkFunHTU21D.h"

HTU21D sht21; //Objekt instanzieren

void setup() {
  // Sensor 1
  pinMode(switchPin2, INPUT);

  pinMode(11, OUTPUT);

  digitalWrite(switchPin2, LOW);

  //Sensor 2
  pinMode(switchPin2, INPUT);

  pinMode(11, OUTPUT);

  digitalWrite(switchPin2, LOW);

  //Sensor 3
  pinMode(switchPin4, INPUT);

  pinMode(13, OUTPUT);

  digitalWrite(switchPin4, LOW);

  Serial.begin(9600); //Begin der seriellen Kommunikation mit 9600 baud
  //eine einfache Ausgabe auf dem seriellen Monitor.
  Serial.println("Temperatur & Luftfeuchtigkeitssensor SHT21");
  Serial.println("******************************************");

  sht21.begin(); //Beginn der kommunikation mit dem Sensor.
}

void loop() {

  // Sensor 1

  if (digitalRead(switchPin2) == HIGH)

    digitalWrite(ledPin11, HIGH);


  // Sensor 2

  if (digitalRead(switchPin3) == HIGH)

    digitalWrite(ledPin12, HIGH);

  // Sensor 3

  if (digitalRead(switchPin4) == HIGH)

    digitalWrite(ledPin13, HIGH);

  // Sensor SHT21



  else

  digitalWrite(ledPin11, LOW);
  digitalWrite(ledPin12, LOW);
  digitalWrite(ledPin13, LOW);
}

Fehlermeldung lautet
exit status 1
'else' without a previous 'if'

Drück mal STRG-T das erhellt dann schon den Codeaufbau.

Habe nicht geschaut ;), ZIP runterladen, einbinden geht schneller als die Wartezeit bis die IDE alle Lib durch ist.

1 Like

Die Meldung ist glaubwürdig!

Wie man es mit dem if else richtig macht, findet sich in jedem C++ Grundlagen Buch.

1 Like

Mach mall folgendes in der IDE auf bearbeiten danach Für Forum Kopieren klicken und hier mit Strg+ V einfügen oder rechte Maustaste und Einfügen.
Du darfst , kannst deinen Post editieren :wink:

1 Like

Ich will das er mir die daten vom sensor in der ide anzeigt,brauche ich dafür die IF/ELSe überhaupt?

Nö.

//Sensor 1
const int switchPin2 = 2;
const int ledPin11 = 11;

//Sensor 2
const int switchPin3 = 3;
const int ledPin12 = 12;

//Sensor 3
const int switchPin4 = 4;
const int ledPin13 = 13;

#include <Wire.h>
#include "SparkFunHTU21D.h"

HTU21D sht21; //Objekt instanzieren

void setup()
{
  // Sensor 1
  pinMode(switchPin2, INPUT);
  pinMode(11, OUTPUT);
  digitalWrite(switchPin2, LOW);
  //Sensor 2
  pinMode(switchPin2, INPUT);
  pinMode(11, OUTPUT);
  digitalWrite(switchPin2, LOW);
  //Sensor 3
  pinMode(switchPin4, INPUT);
  pinMode(13, OUTPUT);
  digitalWrite(switchPin4, LOW);
  Serial.begin(9600); //Begin der seriellen Kommunikation mit 9600 baud
  //eine einfache Ausgabe auf dem seriellen Monitor.
  Serial.println("Temperatur & Luftfeuchtigkeitssensor SHT21");
  Serial.println("******************************************");
  sht21.begin(); //Beginn der kommunikation mit dem Sensor.
}

void loop()
{
  digitalWrite(ledPin11, digitalRead(switchPin2));
  digitalWrite(ledPin12, digitalRead(switchPin3));
  digitalWrite(ledPin13, digitalRead(switchPin4));
  Serial.print("Temperatur:");
  Serial.print(sht21.readTemperature(), 1); //Ausgabe der Temperatur in Grad Celsius
  Serial.print("°C");
  Serial.print("\tLuftfeuchtigkeit:");
  Serial.print(sht21.readHumidity(), 1); //Ausgabe der Luftfeuchtigkeit
  Serial.println("%");
  delay(1000); //kleine Pause von 1 sek.
}

Kommt drauf an, wo und was wie passieren soll.

Die Magnet kontakte sollen so bleiben, die laufen. Jetzt will ich einen zusätzlichen SHT21 aschliesen damit ich die Raumtemparatur angezeigt bekomme.

Das sind die 3 switchPins?
Wie soll das Bild aussehen?
Ich hab das nicht ganz verstanden.
Wenn Kontakt 1 auslöst, LED 1 auslösen und wenn Kontakt 1 nicht ausgelöst, LED 1 wieder löschen - ODER:
Wenn Kontakt 1 auslöst LED 1 setzen
Wenn Kontakt 2 auslöst LED 2 setzen
Wenn Kontakt 3 auslöst LED 3 setzen
Wenn delay(1000) um, alle LED löschen?

ist für den sht21 gedacht, damit er nach einer sekunde misst,

wenn der kreis unterbrochen wird, sollen die led leuchten, je nach kontakt dann das enstprechende LED