Hoje vamos falar como controlar o seu Arduino por controle remoto :
Voce vai precisar de :
1-Arduino
1-Protoboard
1-Receptor de infra-vermelho
1- controle
Jumpers
Voce encontra todos esses componentes pelo melhor preço AQUI .
Segundo o datasheet encontrado aqui , a pinagem correspondente ao receptor de infra vermelho é como na imagem ao lado .
A ligação ao arduino é feita da seguinte forma
Pino da esquerda , é ligado a porta digital numero 2 , o pino central ao GND e o pino da direita ligado ao +5v
Cada controle , envia um pulso de luz contendo um codigo que deverá ser interpretado pelo arduino , para depois poder ser implementado em algum outro algoritimo .
Feitas as ligações no arduino , é hora de programar o arduino .
#define IRpin_PIN PIND
#define IRpin 2
#define MAXPULSE 65000
#define RESOLUTION 20
uint16_t pulses[100][2];
uint8_t currentpulse = 0;
void setup(void) {
Serial.begin(9600);
Serial.println("Pronto para decodificar ");
}
void loop(void) {
uint16_t highpulse, lowpulse;
highpulse = lowpulse = 0;
while (IRpin_PIN & (1 << IRpin)) {
highpulse++;
delayMicroseconds(RESOLUTION);
if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse=0;
return;
}
}
pulses[currentpulse][0] = highpulse;
while (! (IRpin_PIN & _BV(IRpin)))
lowpulse++;
delayMicroseconds(RESOLUTION);
if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse=0;
return;
}
}
pulses[currentpulse][1] = lowpulse;
currentpulse++;
}
void printpulses(void) {
Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
for (uint8_t i = 0; i < currentpulse; i++) {
Serial.print(pulses[i][0] * RESOLUTION, DEC);
Serial.print(" usec, ");
Serial.print(pulses[i][1] * RESOLUTION, DEC);
Serial.println(" usec");
}
Serial.println("int IRsignal[] = {");
Serial.println("// ON, OFF (in 10's of microseconds)");
for (uint8_t i = 0; i < currentpulse-1; i++) {
Serial.print("\t");
Serial.print(pulses[i][1] * RESOLUTION / 10, DEC);
Serial.print(", ");
Serial.print(pulses[i+1][0] * RESOLUTION / 10, DEC);
Serial.println(",");
}
Serial.print("\t");
Serial.print(pulses[currentpulse-1][1] * RESOLUTION / 10, DEC);
Serial.print(", 0};");
}
Depois de programado o arduino , abra o monitor serial e acione o controle na frente do receptor , os codigos referentes ao controle que voce acionou são os que serão mostrados no monitor serial
exit status 1
ResponderExcluir'printpulses' was not declared in this scope
oque pode ser feito a respeito disso
Arduino: 1.6.8 (Windows 10), Placa:"Arduino/Genuino Uno"
ResponderExcluirC:\Users\Marcio Jersak\Documents\Arduino\sketch_apr07a\sketch_apr07a.ino: In function 'void loop()':
sketch_apr07a:18: error: 'printpulses' was not declared in this scope
printpulses();
^
sketch_apr07a:28: error: 'printpulses' was not declared in this scope
printpulses();
^
C:\Users\Marcio Jersak\Documents\Arduino\sketch_apr07a\sketch_apr07a.ino: At global scope:
sketch_apr07a:33: error: 'pulses' does not name a type
pulses[currentpulse][1] = lowpulse;
^
sketch_apr07a:34: error: 'currentpulse' does not name a type
currentpulse++;
^
sketch_apr07a:35: error: expected declaration before '}' token
}
^
exit status 1
'printpulses' was not declared in this scope
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
não roda