Go Down

Topic: Problema entre duas bibliotecas com timer (Read 1 time) previous topic - next topic

Luizin_pl

Galera é o seguinte, estou tentando desenvolver um projeto de um menu com arduino na tv usando infravermelho através
destas duas bibliotecas
http://code.google.com/p/arduino-tvout/
https://github.com/shirriff/Arduino-IRremote
porém quando eu declaro a biblioteca IRremote.h a biblioteca TVout para de funcionar
estou achando que o problema é no timer por ambas usarem o msm timer, talvez o 2
mas não tenho certeza, será que alguém poderia me ajudar?
meu codigo
#define NumItens 9
#include <TVout.h>
#include <fontALL.h>
#include "menu.h"
//#include <IRremote.h>
int RECV_PIN = 11;
int x, y, item;
int local = 1;
char recebe_serial;
int a = 1;
char* menu1[] = {
"Variaveis", "Entradas", "Acionamentos", "Tempo", "Grafico", "Relogio", "Alarme"}
;
TVout TV;
//IRrecv irrecv(RECV_PIN);
//decode_results results;
void setup() {
TV.begin(PAL,120,120);
TV.select_font(font6x8);
TV.select_font(font8x8);
TV.print(0,10,"Menu Arduino");
//TV.delay(2000);
TV.clear_screen();
//irrecv.enableIRIn(); // Start the receiver

}
void loop(){
monta_menu1();
monta_rolagem();
item = 4;
pisca_item(item);
}
void monta_menu1() {
TV.select_font(font8x8);
TV.print(5,10,"Menu Arduino");


y = 20;
for (x = 0;x < NumItens; x++){
TV.draw_rect(0,y,100,10,WHITE);//desenha cada retangulo do menu
y = y + 14;
}


y = 23;
TV.select_font(font4x6);
for (x = 0;x < NumItens; x++){
TV.print(2,y,menu1
  • );//Escreve itens do menu
    y = y + 14;
    }
    }

    void monta_rolagem(){
    TV.draw_rect(104,20,6,92,WHITE);//Barra de rolagem
    TV.draw_rect(104,106,6,6,WHITE);//Quadra e setas da barra de rolagem de baixo
    TV.set_pixel(105,109,WHITE);
    TV.set_pixel(106,110,WHITE);
    TV.set_pixel(107,111,WHITE);
    TV.set_pixel(108,110,WHITE);
    TV.set_pixel(109,109,WHITE);
    TV.set_pixel(107,109,WHITE);
    TV.set_pixel(107,108,WHITE);
    TV.set_pixel(107,107,WHITE);
    TV.draw_rect(104,20,6,6,WHITE);//Quadra e setas da barra de rolagem de cima
    TV.set_pixel(105,23,WHITE);
    TV.set_pixel(106,22,WHITE);
    TV.set_pixel(107,21,WHITE);
    TV.set_pixel(108,22,WHITE);
    TV.set_pixel(109,23,WHITE);
    TV.set_pixel(107,23,WHITE);
    TV.set_pixel(107,24,WHITE);
    TV.set_pixel(107,25,WHITE);
    }
    void pisca_item(int item){
    for (a = 1; a < 3; a++){

    for (x = 1;x < 10; x++){
    TV.draw_row(item*14 + x + 6,1,100,2);//inverte quadrado selecionado
    }
    delay(1000);
    }
    }

bubulindo

Se não precisares de usar o millis e se as bibliotecas não usam os pinos de PWM do timer 2 (mesmo assim podes sempre mudar o esquema), podes tentar alterar a biblioteca para usar o timer0.

No entanto, eu reparei que a IR bloqueia interrupções (com a função cli()) e a de tvout funciona com interrupções. Logo está-me a parecer que não vai ser simples de colocar ambas a funcionar em conjunto.

Podes sempre re-escrever a biblioteca de IR. :)
This... is a hobby.

iyahdub

Mesmo problema, eu explico a solucao aqui !
http://lusorobotica.com/index.php?topic=5010.0
10 LET Loop=Infinite
20 GO TO 10

Go Up