Go Down

Topic: Nach Zustandswechsel nur 1 mal senden (Read 1 time) previous topic - next topic

Marc2012

Hallo Leute,
Ich hab eine Frage zum Programmablauf...


Ich habe einen LDR am Analogeingang des Arduino Uno.
Dann noch 3 Leds am Digitalport 3,4,5.

Je nach Lichtstärke werden die Leds geschaltet.
Das heist : Led dunkel  port 3
                Led mittel  port 4
                Led hell port 5

Mit case 0, case 1, case 2, werden jeweils die leds dementsprechend geschaltet.
Ich habe aber noch zusätzlich die rc switch libarie für funksteckdosen mit im programm.
Soll bedeuten wenn die "led dunkel" eingeschaltet wird hab ich danach die Anweisung im Programm für die funksteckdose  dass diese eingeschaltet werden soll.
Das ganze funktioniert auch mit den leds und der funksteckdose einwandfrei!

Mein eigentliches Problem ist das der 433 mhz sender dauerhaft sendet solang das programm die dunkelkeit erkennt ich wollte gern das es jedoch nur nach Änderung der helligkeit 1 mal kurz sendet und die leds umschalter und nicht dauerhaft im loop sendet.

Wie mach ich das am einfachsten?
Gruß Marc

finthugo


pylon

Quote
Wie mach ich das am einfachsten?


Poste Deinen Code, dann können wir Dir vielleicht helfen. Ohne Code wird das wohl nichts werden.

Legriano

Also ohne programm code ist das natürlich schwer zu beurteilen aber versuchs mal mit einer while schleife die du nur einmal durchlaufen lässt.

Marc2012

Vielen Dank,
ok hier der code (bin Anfänger  :)  )

Code: [Select]

// Lichterkennung (Helligkeit) je nach Helligkeit werden 3 Ausgänge geschaltet und über die serielle Schnittstelle ausgegeben.
// + Schalten der Funksteckdosen bei Helligkeitsänderung.



const int sensorMin =200;     
const int sensorMax = 800;   
#define Leddark 5             // Led dunkel
#define Ledmedium 4          // Led mittel
#define Ledbright 3         // Led hell

// Sender ist am Arduino Pin #10 angeschlossen 


#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();



void setup() {
 
  Serial.begin(9600); 
  pinMode(Leddark, OUTPUT);
  pinMode(Ledmedium, OUTPUT);
  pinMode(Ledbright, OUTPUT);
  mySwitch.enableTransmit(10);
}

void loop() {
 
  int sensorReading = analogRead(A0);    // Sensor am analog port 0 lesen
 
 
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3); // Umwandeln in 4 Bereiche

  switch (range) {                              // Bereich erkennen
     
  case 0:                                   // es ist dunkel
 
    Serial.println("Es ist dunkel!");
    mySwitch.switchOn("11001", 2);
    digitalWrite(Leddark, HIGH);
    digitalWrite(Ledmedium, LOW);
    digitalWrite(Ledbright, LOW);
    delay(60000);
    break;
   
   
  case 1:           
                                             // zwischenwert ohne Angabe
    digitalWrite(Leddark, LOW);
    digitalWrite(Ledmedium, LOW);
    digitalWrite(Ledbright, LOW);
    break;
   
  case 2:                                   // es ist mittel
    Serial.println("Es ist mittel!");
    mySwitch.switchOff("11001", 2);
    digitalWrite(Ledmedium, HIGH);
    digitalWrite(Leddark, LOW);
    digitalWrite(Ledbright, LOW);
    delay(60000);
    break;
   
   
  case 3:                                   // es ist hell
   
    Serial.println("Es ist hell!");
    mySwitch.switchOff("11001", 2);
    digitalWrite(Ledbright, HIGH);
    digitalWrite(Leddark, LOW);
    digitalWrite(Ledmedium, LOW);
    delay(60000);
    break;
   


 
  }

     }
     















Go Up