Como mudar código controle de tv com arduíno?

Olá pessoal, teno um código para controlar a tv, mais esse código fica execultando eutomáticamente sem parar, quero que mande o sinal para o led ir quando usado o serial monitor, como por exemplo: digitar 1 e manda um sinal, digitar 2 e manda outro sinal, segue o código:

// This sketch will send out a Nikon D50 trigger signal (probably works with most Nikons)
// this code is public domain, please enjoy!
 
int IRledPin =  13;    // LED connected to digital pin 13
 
// The setup() method runs once, when the sketch starts
 
void setup()   {
// initialize the IR digital pin as an output:
pinMode(IRledPin, OUTPUT);
 
Serial.begin(9600);
}
 
void loop()
{
Serial.println("Sending IR signal");
 
SendChannelUpCode();
delay(500);
}
 
// This procedure sends a 38KHz pulse to the IRledPin
// for a certain # of microseconds. We'll use this whenever we need to send codes
void pulseIR(long microsecs) {
// we'll count down from the number of microseconds we are told to wait
 
cli();  // this turns off any background interrupts
 
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH);  // this takes about 3 microseconds to happen
delayMicroseconds(10);         // hang out for 10 microseconds
digitalWrite(IRledPin, LOW);   // this also takes about 3 microseconds
delayMicroseconds(10);         // hang out for 10 microseconds
 
// so 26 microseconds altogether
microsecs -= 26;
}
 
sei();  // this turns them back on
}
 
void SendChannelUpCode() {
   //Cole aqui o código criado no passo 1
}

Exibições: 398

Responder esta

Respostas a este tópico

Bom dia NCA

Sei  que você é novo aqui no forum, e não se deu o trabalho de ler.

Ler o item que tem logo no tab: INICIO.

Vamos lá.


Só ajudo amigos que não colam sketch na área de texto do tópico.
Sou velho e ranzinza.
Se remover o code, e anexar como arquivo, posso reconsiderar minha decisão de não ajudá-lo.
Leia: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
RV

Obs:  Se você não concorda comigo, ou acha que fui muito ranzinza, nada posso fazer.

Aco que vc deveria criar um html e postar, eu excluiria e posstava, novo eu sou só que ja pesquisei por muitas horas e não encontrei o que queria, eu não postei como vocês está falando por que eu não conseguir pra ser sinsero, e o link que você  colocou não ajudou em nada.

Sou novato em Arduíno mais se quiser que eu faça algo que eu não sei então vou precisar perder mais horas em outro lugar par saber como tirar duvidas aqui?

NCA,

estou simplesmente recomendado que você retire da área de texto do tópico, o seu sketch (Código),

e anexe um arquivo com o conteúdo dele.

Se você assim o fizer, terei imenso prazer em te ensinar a resolver a dificuldade

com o seu sketch.

RV

Como faço isso, pesquisei mais não encontrei como.

Recomendo dar uma olhada em um tutorial mais simples, em portugues, como:

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-con...

De fato o loop() manda ele fazer isso mesmo: transmitir a cada meio segundo.

Vc precisa criar um sistema de leitura da serial e gerar os comandos só se for recebido o carácter necessário.

O necessário é ler a serial, que vc pode aprender aqui:

https://www.arduino.cc/en/Serial/Available

No exemplo o caracter lido aparece em incomingByte.

Com um comando condicional vc compara ele com o q desejar e toma uma atitude.

https://www.arduino.cc/en/Reference/If

algo como:

if (incomingByte=='1') SendChannelUpCode();

Isso que estou tentando fazer mais sou leigo e pesquisei mais não conseguir, não achei nada semelhante.

Legal, imaginei.

Alguém aqui poderia fazer para vc, mas não seira didático. Entendo que o ideal seria vc aprender a fazer.

Tente fazer da melhor forma possível, não faz mal que não funcione. Aih poste, melhor como anexo, que damos mais um remendo ou outro e vc chega lá.

A parte que fica repetindo infinitamente é a que fica dentro de loop();

Lá é que vc precisa colocar esse trecho do incomingByte.

então eu substituiria o:

loop();

por

if (incomingByte=='1') SendChannelUpCode();?

Na verdade colocar dentro da função loop();

void loop() 

{  if (Serial.available() > 0) { //Se tem alguma coisa a ser lida
                // Ler a serial
                incomingByte = Serial.read();
                // se veio '1' manda um [Up].
                if (incomingByte=='1') SendChannelUpCode();
        }

E assim vai.

Amigo se você puder editar esse em anexo aplicando essa fomula eu agradeço pois eu tentei de todas as formas e não conseguir, desculpa a ingnorância.

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço