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. :)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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