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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy