Turn the Arduino Into a "Fake TV"

This project enables the Arduino to emulate the "Fake TV". It simulates what the real Fake TV does -

http://www.faketv.com/

I have a "real" Fake TV (I know, an oxymoron if there ever was one) in a bedroom and it works well. It actually looks like a person is watching a TV if you are looking at the window outside at night. I decided to make one with the Arduino.

The wiring is very simple - simply wire LEDs to the PWM pins with resistors as documented in the program. I used 560 ohm resistors for the white and blue, and 150 ohm resistors for the red/green. I used a safe lower resistance for the red/green to brighten them up. The white/blue LED I used are very bright as-is.

It looks surprisingly good at night with just the 6 LEDs on-board. A better version would have more scenes and more LEDs.
This would be a good project to hard-wire and use in a room. If the LEDs are too harsh near the window simply add a piece of vellum paper over the board to diffuse the light.

Or, just fire it up in your project room when you go to bed (if it can be set by a window).

If you have any ideas for improvement please chime in.

Modeller

/*

 An Arduino "Fake TV"
 This is an Arduino simulation of the product called "Fake TV" 
 It simulates the action of a TV being viewd by a person at night.
 The purpose is to fool burglars into thinking someone is at home watching a TV at night.
 Place it near a window behind blinds or curtains so as to not directly show the LEDs.
 You only want the aggragate effect of all the LEDs to be seen.
 
 I used 2 green, 2 red, one bright white and one bright blue.
 I neede more red/green because the apparent brightness of the white and blue is greater than the red/greens
 Use a diffuser over the board such as vellum papar to help scene quality.
 Of course all these parameters can be changed to suit your needs.
 Check at night near a window and adjust to suit your preferences.
 Free to modify, the possible scene algorithms are endless.
 
 */

int blu = 11;
int red2 = 9;
int grn1 = 10;
int grn2 = 3;
int red1 = 6;
int wht = 5;
int randpwm = 0;

void setup() 
{   
  pinMode(red1, OUTPUT);     
  pinMode(red2, OUTPUT);       
  pinMode(grn1, OUTPUT);     
  pinMode(grn2, OUTPUT);     
  pinMode(blu, OUTPUT); 
  pinMode(wht, OUTPUT); 
}

void loop() 
{
  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();
  }
}

/*
These are the main scene algorithms
 */

void scene1()
// Changes random light levels and linger-times 
// of all colors to simulate "normal" TV action
{
  randpwm = random(20,255);
  analogWrite(red1,randpwm); 
  analogWrite(red2,randpwm); 
  randpwm = random(20,255);
  analogWrite(grn1,randpwm); 
  analogWrite(grn2,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(red1,randpwm); 
    analogWrite(red2,randpwm); 
    randpwm = random(20,255);
    analogWrite(grn1,randpwm); 
    analogWrite(grn2,randpwm); 
    delay(random(200,2000));
  }
}

void commercial()
// Simulates a switch to or from a commercial break 
{
  analogWrite(red1,2); 
  analogWrite(red2,2); 
  analogWrite(grn1,2);
  analogWrite(grn2,2);
  analogWrite(blu,0);
  analogWrite(wht,0);
  delay(random(1000,2500));
}

I've just done something similar with the following modification.

To be able to leave this in place while away from home you want it to only come on at night. You probably also only want it to be on for a limited time rather than all night.

So what I've done is add a Light Dependent Resistor (LDR) to check the current light level and only switch on the LEDs when the light level is below a certain level - the check is only done every 15 minutes as long as the light level is bright enough.

Once it is dark enough a cycle of LED 'scenes' is run before checking the light level again. As long as it remains dark enough this will repeat for a limited amount of time - eg 3 hours (with perhaps a random addition of up to 20 minutes). When the light level gets bright enough everything is reset ready for the next night.

Wayne

I was roaming through projects and found this thread, nice job.

I had done this once too but attached to my Vera home automation controller and wirelessly integrated with the MySensors.org arduino library for vera and RPI.

PhoneyTV for Vera.