#include <TVout.h>
#include "disturbance1.h";
#include "disturbance2.h";
#include "a.h";
#include "e.h";
#include "o.h";
#include "m.h";
#include "u.h";
#include "font6x8.h";
#include <IRremote.h>
#include "dance1.h";
#include "dance2.h";
#include "dance3.h";
#include "dance4.h";
TVout tv;
IRrecv receiver(2);
int tv_state = 0;
int last_tv_state = 0;
// initially off
void setup() {
Serial.begin(9600);
enable_receiver();
// tv.begin(PAL);
tv.select_font(font6x8);
// tv.clear_screen();
// delay(100);
// starting_anime();
// tv.clear_screen();
// delay(100);
// speaking_anime(35,0);
// tv.clear_screen();
// delay(100);
}
void loop() {
// check inr signal recieved
if (receiver.decode()){
int response = receiver.decodedIRData.command;
if (response == 162)tv_state = !tv_state; // flip the state
television(response);
receiver.resume();
}
}
void starting_anime(){
for(int i= 0;i<15;i++){
tv.bitmap(20,16,d1);
delay(70);
tv.bitmap(20,16,d2);
delay(70);
}
tv.clear_screen();
}
void speaking_anime(int x,int y){
char message[] ="Robot World Newzz";
tv.print(25,80,message);
for(int i = 0; i<5;i++){
tv.bitmap(x,y,a);
delay(100);
tv.bitmap(x,y,e);
delay(100);
tv.bitmap(x,y,m);
delay(100);
tv.bitmap(x,y,o);
delay(100);
tv.bitmap(x,y,u);
delay(100);
}
}
// enable_receiver() : enables the receiver and disables the display on the TV by calling tv.end()
void disable_receiver(){
receiver.disableIRIn(); // disable receiver
tv.begin(PAL); //enable tv
}
// disable_receiver() : disables the receiver and enables the display on the TV by calling tv.begin()
void enable_receiver(){
tv.end(); // disable tv
receiver.enableIRIn(); // enable receiver
}
void television(int code){
disable_receiver();
// tv is on
if(tv_state){
if(last_tv_state == 0){
starting_anime();
select_channel();
last_tv_state = tv_state;
}
else if(last_tv_state == 1){
if(code == 104){
news_channel();
}
else if(code == 48){
dance_channel(30,0);
}
}
}
// tv is off
else{
tv.clear_screen();
tv.delay(100);
last_tv_state = tv_state;
}
enable_receiver();
}
void select_channel(){
tv.clear_screen();
tv.println(30,40,"Select Chhanel");
tv.println(45,50,"0: NEWS");
tv.println(45,60,"1: DANCE");
tv.delay_frame(3);
}
void news_channel(){
speaking_anime(30,0);
select_channel();
}
void dance_channel(int x,int y){
for(int i=0; i<20; i++){
int frame = random(0,4);
if(frame == 0){
tv.bitmap(x,y,dance1);
}
else if(frame == 1){
tv.bitmap(x,y,dance2);
}
else if(frame == 2){
tv.bitmap(x,y,dance3);
}
else if(frame == 3){
tv.bitmap(x,y,dance4);
}
tv.delay_frame(5);
}
tv.clear_screen();
tv.delay(100);
select_channel();
}