Galera eu tenho dois codigos distintos, o primeiro e uma codigo para display 7 segmentos com 8 dígitos, e o segundo e um código de reciver da biblioteca ir remote...
o problema é o seguinte, quando eu upo somente o código da ir remote e decodifico o controle eu recebo dados consistentes ex:
tecla 1 do controle -> saída na serial: 1 ou 10001
tecla 2 do controle -> saída na serial: 2 ou 10002
entretanto depois de eu ter colocado ela junta com a do display, os dados do ir vem aleatórios,
ex: 401928912909
638734892833
378573909398
e não consigo achar o problema, segue o código a seguir, se alguém puder me ajudar.
os códigos com ///************************************************** são os da biblioteca ir.
#include <IRremote.h>
const int clock = 7; //SCK
const int latch = 5; //RCK
const int data = 6; //DIOint nposicao=0;
int i;int RECV_PIN = 11; ///**************************************************
IRrecv irrecv(RECV_PIN); ///**************************************************
decode_results results; ///**************************************************
byte value[] ={ B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B10010000, // 9
B11000000, // 0
B11111111};// display nothingbyte digit[] ={ B00000001, // left segment
B00000010,
B00000100,
B00001000,
B00010000,
B00100000,
B01000000,
B10000000}; // right segmentbyte ii = 0;
int n1,n2,n3,n4,n5,n6,n7,n8;
byte v0, v1,v2,v3,v4,v5,v6,v7;
byte vvalue = value[0];void setup() {
i=1;
irrecv.enableIRIn(); ///**************************************************
Serial.begin(9600);
Serial.write("Serial Iniciada");
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(data, OUTPUT);cli();//stop interrupts
//set timer0 interrupt at 980Hz
TCCR0A = 0;// set entire TCCR0A register to 0
TCCR0B = 0;// same for TCCR0B
TCNT0 = 0;//initialize counter value to 0
OCR0A = 255;//(must be 16000000 / (prescaler*255) = 980 Hz
TCCR0A |= (1 WGM01);
TCCR0B |= (1 CS01) | (1 CS00); //prescaler = 64
TIMSK0 |= (1 OCIE0A);
sei();//allow interruptsv0=v1=v2=v3=v4=v5=v6=v7=10; // default: show nothing
}ISR(TIMER0_COMPA_vect){
ii++;
if (ii==8) ii=0;if (ii==0) { vvalue = v0; }
else if (ii==1) { vvalue = v1; }
else if (ii==2) { vvalue = v2; }
else if (ii==3) { vvalue = v3; }
else if (ii==4) { vvalue = v4; }
else if (ii==5) { vvalue = v5; }
else if (ii==6) { vvalue = v6; }
else if (ii==7) { vvalue = v7; }digitalWrite(latch,LOW);
shiftOut(data,clock,MSBFIRST,B11111111);
shiftOut(data,clock,MSBFIRST,B11111111);
digitalWrite(latch,HIGH);digitalWrite(latch,LOW);
shiftOut(data,clock,MSBFIRST,digit[ii]);
shiftOut(data,clock,MSBFIRST,value[vvalue]);
digitalWrite(latch,HIGH);
}int a, b,t,d;
void loop() {
//comparar os codigos, se codigo igual a x significa 1, ou dois, e escreve no display.
if (irrecv.decode(&results)) { ///**************************************************
Serial.println(results.value, DEC); ///**************************************************
irrecv.resume(); ///**************************************************
}}
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por