INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
PIR- High - Low - Wechsel und void
18.03.2015, 16:15 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2015 16:18 von MaHa1976.)
Beitrag #9
RE: PIR- High - Low - Wechsel und void
aktuell blenden due LEDs langsam hoch, sobald eine Bewegung erkannt wird. Bewegt sich nichts sollen die LEDs langsam wieder ausblenden. Wie lang die LEDs dazwischen aber an sind möchte ich flexibel gestalten.

Ich habe inzwischen meine ganze Wohnung auf LED umgebaut, die Hauptleuchten als RGB.....

die Szenarien werden von der Zentrale abhängig von Uhrzeit, Wochentag und Kalender vorgegeben.

So sollen z.b. alle LEDs nachts nur sehr dunkel leuchten und relativ schnell ausgehen.

Die Grubdbeleuchtung im Bad morgens hell und lang, am Spiegel auch hell, aber nicht ganz so lang... abends soll dafür die Grundbeleuchtung weniger hell sein, kann aber lange anbleiben, die am Spiegel nur kurz hell....

die RGBs sollen morgens bläuchlich starten, können aber schnell audgehen, abends aber warm leuchten und teils 30min ohne Bewegung an bleiben.... bis das Nachtszenario beginnt, dann wird der Sonnenuntwrgang eingeleitet....

entschuldige die Rechtschreibfehler, so eine Handytastatur hat echt Schwächen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 16:38
Beitrag #10
RE: PIR- High - Low - Wechsel und void
(18.03.2015 16:15)MaHa1976 schrieb:  Ich habe inzwischen meine ganze Wohnung auf LED umgebaut, die Hauptleuchten als RGB.....
Interessant. Koenntest Du Dir mal meinen LED-Thread (http://www.arduinoforum.de/arduino-Threa...eleuchtung) anschauen? Haettest Du da einen Rat?

Zitat:aktuell blenden due LEDs langsam hoch, sobald eine Bewegung erkannt wird. Bewegt sich nichts sollen die LEDs langsam wieder ausblenden. Wie lang die LEDs dazwischen aber an sind möchte ich flexibel gestalten.
Du machst das in etwa folgendermassen: Wenn das HIGH-Signal kommt und das ganze vorher auf LOW war, dann rufst Du die entsprechende Szene-Funktion auf. Das ganze Dimmen selbst laesst Du immer laufen.
Immer wenn ein HIGH-Signal anliegt setzt Du ausserdem eine Zeit-Variable auf millis(). Das ist sozusagen die Zeit, wann das letzte Mal HIGH gemessen wurde.
Bei LOW schaust Du nach, wann das letzte Mal HIGH gemessen wurde. Wenn das schon lange genug her ist, dann setzt Du Szene0.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 18:17
Beitrag #11
RE: PIR- High - Low - Wechsel und void
soooooo....... jetzt hab ich aber echt geknobelt und geschwitzt.... jetzt funktioniert das hoch und wieder runter faden...

aber bei der "holdtime" brauche ich echt Hilfe.... Blush

Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Time.h>        //http://www.arduino.cc/playground/Code/Time
#include <TimeAlarms.h>

// nRF24L01(+) radio attached using Getting Started board
RF24 radio(9,10);

// Network uses that radio
RF24Network network(radio);

// Address of our node
const uint16_t this_node = 0;

// Address of the other node
const uint16_t other_node = 1;

// Structure of our payload
struct payload_t
{
  unsigned long ms;
  unsigned long counter;
};

int Scene = 1;
const int sensorPin = 2;  // sensor pin
int sensorState = 0;
int ledrot = 3;    // output (LED) pin 1
int ledblau = 5;    // output (LED) pin 2
int ledgruen = 6;    // output (LED) pin 3
int fadeAmount = 1;
int brightnessrot = 175;
int brightnessblau = 175;
int brightnessgruen = 175;
int brightnessrotneu = 0;
int brightnessblauneu = 0;
int brightnessgruenneu = 0;
int stepup = 15; //ms pro Helligkeitswert heller
int stepdown = 20; //ms pro Helligkeitswert dunkler
int holdtime = 10000; //ms Haltezeit

void setup(void)
{
  Serial.begin(57600);
  Serial.println("Empfange Szenario");

  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 90, /*node address*/ this_node);
  
  pinMode(sensorPin, INPUT);  
  pinMode(ledrot, OUTPUT);
  pinMode(ledblau, OUTPUT);
  pinMode(ledgruen, OUTPUT);
}

void loop(void)
{
  
analogWrite(ledrot, brightnessrotneu);
analogWrite(ledgruen, brightnessgruenneu);
analogWrite(ledblau, brightnessblauneu);

if (brightnessrotneu < brightnessrot)
   {
    brightnessrotneu++ ;
    delay(stepup);
   }  
else if (brightnessrotneu > brightnessrot)
   {
    brightnessrotneu-- ;
   delay(stepdown);
   }
else
   {
     brightnessrotneu = brightnessrot;
   }

if (brightnessgruenneu < brightnessgruen)
   {
    brightnessgruenneu++ ;
    delay(stepup);
   }  
else if (brightnessgruenneu > brightnessgruen)
   {
    brightnessgruenneu-- ;
   delay(stepdown);
   }
else
   {
     brightnessgruenneu = brightnessgruen;
   }
  
if (brightnessblauneu < brightnessblau)
   {
    brightnessblauneu++ ;
    delay(stepup);
   }  
else if (brightnessblauneu > brightnessblau)
   {
    brightnessblauneu-- ;
   delay(stepdown);
   }
else
   {
     brightnessblauneu = brightnessblau;
   }


Serial.print(sensorState);
Serial.print(" - ");
Serial.print(brightnessrotneu);
Serial.print(" - ");
Serial.print(brightnessblauneu);
Serial.print(" - ");
Serial.println(brightnessgruenneu);

  
  // Pump the network regularly
  network.update();

  // Is there anything ready for us?
  while ( network.available() )
  {
    // If so, grab it and print it out
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));
    Serial.print("Szenario- Vorgabe: ");
    Serial.println(payload.counter);
    Scene = payload.counter;
    //Serial.print(" at ");
    //Serial.println(payload.ms);
    //if (Scene =! 0)
  }

sensorState = digitalRead(sensorPin);

if (sensorState == LOW)
{
  Szene0();
}

if (sensorState == HIGH)
{

    switch (Scene)
    {
      case 0:
      Szene0();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1();
         Serial.println("Scene 1");
      break;
      
      case 2:
      Szene2();
         Serial.println("Scene 2");
      break;
      
      case 3:
      Szene3();
         Serial.println("Scene 3");
      break;
      
      case 4:
      Szene4();
         Serial.println("Scene 4");
      break;
      
      case 5:
      Szene5();
         Serial.println("Scene 5");
      break;
      
      case 6:
      Szene6();
         Serial.println("Scene 6");
      break;
      
      case 7:
      Szene7();
         Serial.println("Scene 7");
      break;
      
      case 8:
      Szene8();
         Serial.println("Scene 8");
      break;
      
      case 9:
      Szene9();
         Serial.println("Scene 9");
      break;
      
      case 10:
      Szene10();
         Serial.println("Scene 10");
      break;
      
      case 11:
      Szene11();
         Serial.println("Scene 11");
      break;
      
      case 12:
      Szene12();
         Serial.println("Scene 12");
      break;
      
      case 13:
      Szene13();
         Serial.println("Scene 13");
      break;
      
      case 14:
      Szene14();
         Serial.println("Scene 14");
      break;
            
      case 15:
      Szene15();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
      }  
    }
  }


void Szene0()
{
  brightnessrot = 0;
  brightnessgruen = 0;
  brightnessblau = 0;
  stepup = 15;
  stepdown = 30;
  holdtime = 2000;
}

void Szene1()
{
  brightnessrot = 35;
  brightnessgruen = 35;
  brightnessblau = 35;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene2()
{
  brightnessrot = 255;
  brightnessgruen = 255;
  brightnessblau = 255;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene3()
{
  brightnessrot = 15;
  brightnessgruen = 15;
  brightnessblau = 15;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene4()
{
  brightnessrot = 80;
  brightnessgruen = 80;
  brightnessblau = 80;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene5()
{
  brightnessrot = 10;
  brightnessgruen = 10;
  brightnessblau = 10;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene6()
{
  brightnessrot = 255;
  brightnessgruen = 255;
  brightnessblau = 255;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene7()
{
  brightnessrot = 200;
  brightnessgruen = 200;
  brightnessblau = 200;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene8()
{
  brightnessrot = 100;
  brightnessgruen = 100;
  brightnessblau = 100;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene9()
{
  brightnessrot = 30;
  brightnessgruen = 30;
  brightnessblau = 30;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene10()
{
  brightnessrot = 1;
  brightnessgruen = 1;
  brightnessblau = 1;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene11()
{
  brightnessrot = 55;
  brightnessgruen = 55;
  brightnessblau = 255;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene12()
{
  brightnessrot = 55;
  brightnessgruen = 255;
  brightnessblau = 55;
  stepup = 10;
  stepdown = 20;
  holdtime = 20000;
}

void Szene13()
{
  brightnessrot = 255;
  brightnessgruen = 55;
  brightnessblau = 55;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene14()
{
  brightnessrot = 255;
  brightnessgruen = 255;
  brightnessblau = 255;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene15()
{
  brightnessrot = 255;
  brightnessgruen = 255;
  brightnessblau = 255;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene16()
{
  brightnessrot = 200;
  brightnessgruen = 200;
  brightnessblau = 200;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

void Szene17()
{
  brightnessrot = 100;
  brightnessgruen = 100;
  brightnessblau = 100;
  stepup = 15;
  stepdown = 30;
  holdtime = 20000;
}

// vim:ai:cin:sts=2 sw=2 ft=cpp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 18:51
Beitrag #12
RE: PIR- High - Low - Wechsel und void
Hi,
"holdtime":
Code:
void loop(void)
{

   static unsigned long lastHigh = 0;  //  <<< INSERT
   static int lastSensorState = LOW;  // <<< INSERT

analogWrite(ledrot, brightnessrotneu);
...und weiter unten...
Code:
sensorState = digitalRead(sensorPin);
unsigned long now = millis();   // <<< INSERT

//  if (sensorState == LOW)   // <<< DELETE
if (sensorState == LOW && now - lastHigh > holdtime)   // <<< INSERT
{
  Szene0();
}

if (sensorState == HIGH)
   lastHigh = now;     // <<< INSERT

if (sensorState == HIGH && lastSensorState == LOW)  // <<< INSERT
{

   switch (Scene)
...und am Ende von loop:
Code:
lastSensorState = sensorState;   // <<< INSERT
}
Ohne Gewaehr.
Die holdtime sollte dann die Zeit fuer's Hochdimmen mit einschliessen.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 19:18 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2015 20:15 von MaHa1976.)
Beitrag #13
RE: PIR- High - Low - Wechsel und void
ah.... cool... danke - ich werde dass später mal probieren....

OK..... das funktioniert.... eeeeecht cooooooooooooool.... danke schön
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2015, 19:26
Beitrag #14
RE: PIR- High - Low - Wechsel und void
Noch eine ergänzende Frage: Wenn ich über die Zentrale auch die Möglichkeiten haben möchte alle Lampen ohne PIR an oder aus- zu schalten, setze ich eine 2. switch-Abfrage mit nur den betreffenden Szenen vor die PIR- Abfrage, oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2015, 19:30 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2015 19:31 von Thorsten Pferdekämper.)
Beitrag #15
RE: PIR- High - Low - Wechsel und void
Hi,
ich glaube, es ist einfacher, Du versuchst es einfach. Ich verstehe nicht so ganz, was Du sagen willst.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2015, 19:44
Beitrag #16
RE: PIR- High - Low - Wechsel und void
Naja, ich will Szenario 0 und 17 manuell aufrufen können... 0 bis 11 werden aktuell mit PIR aktiviert... 0 und 17 sollen den PIR ignorieren- und einfach angehen, so bald von der Zentrale 0 oder 17 empfangen wird...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 331 29.02.2016 00:00
Letzter Beitrag: hotsystems
  EMP setzt Input-PIN kurzzeitig auf HIGH holo 6 449 24.02.2016 19:25
Letzter Beitrag: Carlo
  OUTPUT bleibt HIGH und timer stopt nicht. Atwist 4 532 08.01.2016 11:02
Letzter Beitrag: Atwist
  Ir Signal bei High gronph 7 803 01.11.2015 18:49
Letzter Beitrag: gronph
  mit #ifdef Taster high-aktiv / low-aktiv ?? DL1AKP 11 1.353 24.06.2015 12:50
Letzter Beitrag: HaWe
  auslagern von Funktion aus der void loop? MaHaI976 19 2.880 22.06.2015 20:38
Letzter Beitrag: MaHaI976
  HIGH statt LOW bergfrei 26 4.922 27.05.2015 15:32
Letzter Beitrag: HaWe
  void Setup startet nicht skyfly71 2 889 15.11.2014 20:51
Letzter Beitrag: JoeDorm
  Stop Befehl während einer Void - Loop lezz89 13 12.708 17.01.2014 19:40
Letzter Beitrag: demokrit
  Lüfter mit LM35 über HIGH & LOW statt PWM Problem bhvfotos 0 1.178 09.11.2013 12:53
Letzter Beitrag: bhvfotos

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste