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
Erstellen eines Fake TV´s mit Zimmerlicht. GRÜNSCHNABEL Frage
26.10.2014, 13:33
Beitrag #1
Question Erstellen eines Fake TV´s mit Zimmerlicht. GRÜNSCHNABEL Frage
Hallo, mein Name ist Patrick.
Arbeie als Elektroniker für Betriebstechnik...

Ich bin ein ganz frischer Neuling mit dem Arduino, und möchte mein erstes Projekt erstellen.
Doch leider habe ich ein Problem wo ich nicht so einfach weiter komme, Ich hoffe das mir jemand einen Rat geben kann.

Material liste:

Arduino NANO
RGB LED Strip 12V (Für den FakeTV)
Kalt weiß LED Strip 12V (Für den FakeTV)
Warm weiß LED Strip 12V 2x (Für das Zimmerlicht 1 und 2)
mosfet Transistoren BS170 und 100KOhm Widerständen 6x (zum steuern der LED Strips mit dem Arduino)
Fotowiderstand 10KOhm und 22KOhm Poti ( zum Starten des Programms bei Dämmerung)

So jetzt die Funktion wie ich es mir Vorgestellt hatte:

- Sobald es zum Abend dämmert, soll das erste Zimmerlicht an gehen und für ca. 6 Stunden leuchten.
- ca. 1 Sunde Später oder durch einen anderen Dämmerungspunkt sollte der Fake TV für ca 5 Stunden laufen.
- zwischenzeitlich sollte es sobald das erste Zimmerlicht leuchtet, die ganze Nacht bis zur Morgendämmerung das zweite Zimmerlicht zwischendurch für paar Minuten leuchten.

und dieser Ablauf sollte halt zur jeden Abenddämmerung wiederholt werden.

Mein Problem liegt momentan darin das ich aus dem netz ein fertigen Algorithmus zum FakeTV gefunden habe und ihn verwenden wollte.
Doch leider sind in diesen Algorithmus delay Zeiten verbaut die mein ganzes vorhaben mit dem Lichtsensor stören.

Ich wollte die delay´s gegen millis tauschen aber leider fehlt mir die Erfahrung darin da ich wirklich ein Anfänger darin bin.


Und hier ist das Programm wo ich noch den loop teil erstellen und die delay´s tauschen muss.


Zitat:int sensor = A0;
int blu = 11;
int grn = 10;
int red = 6;
int wht = 5;
int randpwm = 0;
int licht1 = 2;
int licht2 = 3;
int sensortest = 13;



void setup()
{
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(grn, OUTPUT);
pinMode(blu, OUTPUT);
pinMode(wht, OUTPUT);
pinMode(licht1, OUTPUT);
pinMode(licht2, OUTPUT);
pinMode(sensortest, OUTPUT);

}

void loop() {
sensor = analogRead(A0); //Lichtsensor Seiel OUT
Serial.println(sensor);


if (sensor < 120) // Blaue LED zum Lichtsensor einstellen
{digitalWrite(sensortest, HIGH);
}
if (sensor > 120){
digitalWrite(sensortest, LOW);
}


}





void scenen(){
for(int i=0;i<10;i++) //play scene 1 multiple times
{
scene1();
}
if (random(2) == 1) //Possibly call scene 2
{
scene2();
}
if (random(2) == 1) //Possibly call scene 3
{
scene3();
}
if (random(2) == 1) //Possibly call scene 4
{
scene4();
}
if (random(4) == 1) //Possibly do a commercial break
{
commercial();
}
}

void scene1()
// Changes random light levels and linger-times
// of all colors to simulate "normal" TV action
{
randpwm = random(20,255);
analogWrite(red,randpwm);
randpwm = random(20,255);
analogWrite(grn,randpwm);
analogWrite(blu,random(10,225));
analogWrite(wht,random(10,175));
delay(random(500,2000));
}

void scene2()
// Increases intensity of wht,blu (fade-in)
{
delay(1000);
for(int i=2;i<255;i++)
{
analogWrite(blu,i);
analogWrite(wht,i);
delay(20);
}
}

void scene3()
// Flickers wht,blu for a flickeriing scene effect
{
boolean sw = HIGH;
for(int i=0;i<30;i++)
{
digitalWrite(wht,sw);
digitalWrite(blu,sw);
sw = !sw;
delay(random(50,300));
}
}

void scene4()
// Changes red/grn light levels only
// wht/blu are off
{
//don't use wht/blu
digitalWrite(wht,LOW);
digitalWrite(blu,LOW);
for(int i=0;i<12;i++)
{
randpwm = random(20,255);
analogWrite(red,randpwm);
randpwm = random(20,255);
analogWrite(grn,randpwm);
delay(random(200,2000));
}
}
void commercial()
// Simulates a switch to or from a commercial break
{
analogWrite(red,2);
analogWrite(grn,2);
analogWrite(blu,0);
analogWrite(wht,0);
delay(random(1000,2500));
}


Ich entschuldige mich schon jetzt für das alles hier....Confused
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.10.2014, 06:45 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2014 06:52 von RMR.)
Beitrag #2
RE: Erstellen eines Fake TV´s mit Zimmerlicht. GRÜNSCHNABEL Frage
(26.10.2014 13:33)marschewka schrieb:  Arbeie als Elektroniker für Betriebstechnik...
....... Ich hoffe das mir jemand einen Rat geben kann.

Ich wollte die delay´s gegen millis tauschen aber leider fehlt mir die Erfahrung darin da ich wirklich ein Anfänger darin bin.

Hallo Patrik,

dann hast du doch schon erkannt woran dein Problem liegt. Der erste Ansatz zur Lösung.
Da du doch eh noch einiges um die "Fakecode" programmieren musst, und dies alles mit Ablaufzeiten zu tuen hat, wäre es da nicht sinnvoll sich in das Thema millis() einzuarbeiten? Ein Hexenwerk ist das nicht und du hast etwas dazu gelernt.
Ist doch eine schöne Sache. Lies mal hier:blink without delay

Wenn du damit umgehen kannst hast du auch dein Problem gelöst. Angel

Happy scripting.... Ralf aka RMR

PS: Da wäre noch etwas was dich noch ein Stückchen weiter bringt: KLICK
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.10.2014, 09:20
Beitrag #3
RE: Erstellen eines Fake TV´s mit Zimmerlicht. GRÜNSCHNABEL Frage
Hallo Patrick,
da die Abfrage des Sensors nicht besonders Zeitintensiv ist kannst du einfach jedes mal wenn der lineare Prozess mit delay() unterbrochen wird das Einlesen des Sensors in einer Schleife für die Zeit des Delays veranlassen.
Dafür brachst du nur das delay(x); durch SensorReadingDelay(x); in der Funktion scenen() ersetzen und die Funktion z.B. wie folgt deklarieren:
Code:
void SensorReadingDelay(unsigned long Delay){
  unsigned long timestamp = millis();
  while(millis()-timestamp<Delay)){
    digitalWrite(sensortest, (analogRead(A0) < 120));
  }
}
gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP8266 ESP12-E Webserver-Frage Claus_M 8 250 14.11.2016 22:02
Letzter Beitrag: Claus_M
  NRF24L01 Packet / Msg Frage Marc2014 5 123 07.11.2016 18:08
Letzter Beitrag: hotsystems
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 349 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Ansteuern eines Schrittmotors Uwe1475 28 1.015 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 756 16.07.2016 11:43
Letzter Beitrag: Binatone
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 240 26.06.2016 22:11
Letzter Beitrag: hotsystems
  Strings erstellen und vergleichen BennIY 4 392 22.06.2016 10:37
Letzter Beitrag: SkobyMobil
  Frage zu FastLed First Light Wolfgang_2801 1 229 19.06.2016 16:57
Letzter Beitrag: hotsystems
  Zerlegung eines Programmcodes hello_world 5 535 30.04.2016 11:01
Letzter Beitrag: rkuehle
  Frage zu Serial SMoTH 3 463 09.03.2016 18:13
Letzter Beitrag: SMoTH

Gehe zu:


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