#include <TVout.h>
#include "a.h"
#include "u.h"
#include "o.h"
#include "m.h"
#include "e.h"
#include "dance1.h"
#include "dance2.h"
#include "dance3.h"
#include "dance4.h"
#include "disturbance1.h"
#include "disturbance2.h"
#include "disturbance3.h"
#include "font6x8.h"
#include <IRremote.h>
TVout tv;
IRrecv receiver(2);
int tv_state = 0, last_tv_state = 0; // initially off
void starting_animation() {
for (int i = 1; i <= 5; i++) {
Serial.println("Iteration");
tv.bitmap(20, 16, d1);
tv.delay_frame(3); // i frame = 20ms (PAL tv)
tv.bitmap(20, 16, d2);
tv.delay_frame(3);
tv.bitmap(20, 16, d3);
tv.delay_frame(3);
}
tv.clear_screen();
tv.delay(100);
}
void disable_receiver() {
receiver.disableIRIn();
tv.begin(PAL);
}
void enable_receiver() {
tv.end();
receiver.enableIRIn();
}
void speaking_animation(int x, int y) {
char message [] = "Robot World News";
tv.print(30, tv.vres() - 10, message);
for (int i = 0; i < 20; i++) {
int frame = random(0, 5);
if (frame == 0)tv.bitmap(x, y, a);
else if (frame == 1)tv.bitmap(x, y, u);
else if (frame == 2)tv.bitmap(x, y, o);
else if (frame == 3)tv.bitmap(x, y, m);
else if (frame == 4)tv.bitmap(x, y, e);
tv.delay_frame(5);
}
tv.clear_screen();
tv.delay(100);
}
void setup() {
Serial.begin(9600);
tv.select_font(font6x8);
enable_receiver();
receiver.blink13(true);
// tv.begin(PAL);
// tv.clear_screen();
// tv.delay(100);
// starting_animation();
// tv.clear_screen();
// tv.delay(100);
// speaking_animation(35,0);
// tv.clear_screen();
}
void loop() {
if (receiver.decode()) {
int response = receiver.decodedIRData.command;
Serial.println(response);
if (response == 162) tv_state = !tv_state;
television(response);
receiver.resume();
}
}
void television(int code) {
disable_receiver();
if (tv_state == 1) {
if (last_tv_state == 0) {
Serial.println("Switching on");
starting_animation();
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);
}
}
else {
tv.clear_screen();
tv.delay(50);
last_tv_state = tv_state;
}
enable_receiver();
}
void select_channel() {
tv.println(30, 40, "SELECT A CHANNEL");
tv.println(45, 50, "0 : NEWS");
tv.println(45, 60, "1 : DANCE");
tv.delay_frame(3);
}
void news_channel() {
speaking_animation(30, 0);
select_channel();
}
void dance_channel(int x, int y) {
for (int i = 0; i < 20; i++) {
int frame = random(0, 5);
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();
}