Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Hilfe bei einem Code Teil

Hilfe bei einem Code Teil 29 Mär 2018 15:46 #397

  • littlekenny
  • littlekennys Avatar
  • Offline
  • New Member
  • Beiträge: 2
  • Karma: 0
Hallo zusammen,

vorweg, ich bin Anfänger was die Programmierung eines NodeMCU-Boards angeht!

Ich habe folgenden Code, welcher auch bereits super funktioniert!
#include <RCSwitch.h>

int led = 5;     // LED pin (D1)
int button = 16; // push button is connected (D0)
int temp = 0;    // temporary variable for reading the button pin status

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);   // declare LED as output
  pinMode(button, INPUT); // declare push button as input
  mySwitch.enableTransmit(0); //Daten PIN D3 für das Sender Modul
  // Optional set protocol (default is 1, will work for most outlets)
  mySwitch.setProtocol(1);

  // Optional set pulse length.
  mySwitch.setPulseLength(759);
}

void loop() {
  temp = digitalRead(button);
     
     if (temp == LOW) {
        digitalWrite(led, LOW);
        Serial.println("bereit zum senden!");
        delay(1000);
     }
     if (temp == HIGH) {   
        digitalWrite(led, HIGH);
        /* Binärcode für die Klingel (433MHZ) */
        mySwitch.send("010010010100000101000001");
        Serial.println("Signal wurde gesendet");
        delay(500);
       }
}

Jetzt würde ich gerne wenn das Signal von einem zweiten Taster an einem anderen Pin gesendet wird, einen anderen Binärcode senden!

Hab also 2 Taster, welche jeweils einen anderen Binärcode senden sollen!

Hoffe ihr könnt mir helfen.

Vielen Dank.

Lieben Gruß, littlekenny
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hilfe bei einem Code Teil 29 Mär 2018 20:05 #398

  • supporter
  • supporters Avatar
  • Offline
  • Premium Member
  • Beiträge: 95
  • Dank erhalten: 6
  • Karma: 0
Hallo littlekenny,

herzlich Willkommen im Forum.

Deine Lösung ist doch sehr einfach:

void loop() {
temp = digitalRead(button);
bool temp2=digitalRead(buttonNr2);

if (temp == LOW && temp2==0) {
digitalWrite(led, LOW);
Serial.println("bereit zum senden!");
delay(1000);
}
if (temp == HIGH || temp2==1) {
digitalWrite(led, HIGH);
/* Binärcode für die Klingel (433MHZ) */
if (temp==1){mySwitch.send("010010010100000101000001");
Serial.println("Signal 1 wurde gesendet");
}
if (temp2==1){mySwitch.send("11111111111111111111oderso");
Serial.println("Signal 1 wurde gesendet");
}
delay(500);
}

}

ABER:
1. Diese Lösung ist ungeprüft ;-)
2. delay(); -> raus damit und durch Programmierbeispiel "Blink without delay" ersetzen
Letzte Änderung: 29 Mär 2018 20:07 von supporter.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hilfe bei einem Code Teil 29 Mär 2018 21:25 #399

  • littlekenny
  • littlekennys Avatar
  • Offline
  • New Member
  • Beiträge: 2
  • Karma: 0
Vielen Dank.

Werde es nachher auch mal durchtesten.

Habe es jetzt wie folgt gelöst und direkt noch deinen Rat mit eingebaut!
#include <RCSwitch.h>

int led = 5;     // LED pin (D1)
int button = 16; // push button is connected (D0)
int button_2 = 13;  // push button is connected (D7)
int temp = 0;    // temporary variable for reading the button pin status
int temp2 = 0;   // temporary variable for reading the button 2 pin status
RCSwitch mySwitch = RCSwitch();

unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);   // declare LED as output
  pinMode(button, INPUT); // declare push button as input
  pinMode(button_2, INPUT); // declare push button 2 as input
  mySwitch.enableTransmit(0); //Daten PIN D3 für das Sender Modul
  // Optional set protocol (default is 1, will work for most outlets)
  mySwitch.setProtocol(1);

  // Optional set pulse length.
  mySwitch.setPulseLength(759);
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;
    
  temp = digitalRead(button);
     
     if (temp == LOW) {
        digitalWrite(led, LOW);
        Serial.println("bereit zum senden!");
     }
     if (temp == HIGH) {   
        digitalWrite(led, HIGH);
        /* Binärcode für die Klingel (433MHZ) */
        mySwitch.send("000000000");
        Serial.println("Signal wurde gesendet");
       }
  
  temp2 = digitalRead(button_2);

  if (temp2 == LOW) {
    digitalWrite(led, LOW);
    Serial.println("bereit zu senden über Button 2!");
  }
  if (temp2 == HIGH) {
    digitalWrite(led, HIGH);
    /*Binärcode für die Klingel 2 (433MHZ) */
    mySwitch.send("0000000000");
    Serial.println("Signal 2 wurde gesendet");
   }
  }
}

Wäre es so OK?

Vielen Dank.

Gruß, littlekenny
Der Administrator hat öffentliche Schreibrechte deaktiviert.