control loco

Dependencies:   mbed

main.cpp

Committer:
Cam53
Date:
2019-07-16
Revision:
0:ec6950d9a18d

File content as of revision 0:ec6950d9a18d:

/******************** ENLOQUECEDOR DE CONTROL REMOTO TV SMART HYUNDAI*************************************************
//este programa interfiere de forma loca la operacion de un televisor
//emite codigos de tv con el fin de fastidiar al televidente
/*la emision es aleatoria para
  1 mute
  2 on/off
  3 vol+
  4 vol-
  5 canal +
  6 canal -
*/
#include "mbed.h"
DigitalOut ledA (LED1);
DigitalOut ledR (LED2);
DigitalOut ledV (LED3);
 
DigitalOut led(PTE31);//al transistor del led infrarrojo pin
int i,j;
int t;
//*********************TIEMPO PARA TELEVISOR HYUNDAI START TV****************************************
int cabeceraL=9000;
int cabeceraH=4555;
int Tdescanso=500;
int Tlow=630;
int Thigh=1750;
int duracion; //duracion de un pulso bajo
int numb = 33;
void mute();
void vol_up();
void vol_dwn();
void ch_up();
void ch_dwn();
void pwr();
void repeat();
int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh);
int code[65];
int dato[65];
int descanso(int duracion);
//const unsigned muteHY[] = {581,556,555,582,554,556,581,556,1693,1692,1692,1693,1691,1692,
//                        555,1692,1694,554,1692,554,1692,554,556,581,554,1692,555,1693,554,1692,1692,1692}; 
const unsigned pwr[]={1664,1663,1689,545,570,544,570,571,1663,1664,1690,546,570,543,544,570,544,1689,542,570,570,545,570,545,1689,544,1663,1662,1663,1688,1663,1662};
const unsigned vol_up[]={1659,1662,1658,538,539,545,539,537,1687,1658,1657,540,540,536,541,538,1658,1688,1661,534,543,568,536,539,569,537,540,1658,1662,1654,1685,1685};                         
const unsigned vol_dwn[]={1659,1657,1662,538,539,567,539,539,1663,1604,1658,541,541,538,541,540,1658,1659,538,1663,538,537,568,537,566,539,1660,540,1657,1660,1659,1659};
const unsigned ch_up[]={1687,1659,1656,542,536,540,544,538,1659,1657,1661,537,540,541,538,545,538,1656,569,536,1659,536,540,542,1656,568,1654,1689,536,1661,1658,1658};
const unsigned ch_dwn[]={1689,1662,1690,543,547,570,544,545,1664,1662,1689,570,570,544,543,571,542,571,569,544,1662,543,543,570,1662,1690,1662,1690,544,1689,1662,1689};                         
                                
int main() {
   ledA=1;
   ledR=1;
   ledV=1;
   ledA=0;
   //for(i=0;i<numb;i++){
     //  code[i]=muteHY[i];
      // }
       
   while(1){
       
   mute();
   wait(2);
   mute();
   wait(2);
   vol_up();
   wait(1);
   vol_dwn();
   wait(1);
   ch_up();
   wait(1);
   ch_dwn();
   wait(1);
   pwr();
   wait(5);
   pwr();
   wait(3);   
   //sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
   //wait(5);   
       }   
}
//la funcion descanso hace una modulacon, osea un pulso bajo por el tiempo indicado en duracion
int descanso(int duracion){
     Timer t;
     t.reset();
     t.start();
     while(1) 
     {
      led=1;
      wait_us(8);
      led=0;
      led=0;
      wait_us(9);
      if(t.read_us() > duracion) return 0;
          
      } 
      }   
                     
int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh)
{
      led=0;
      wait_ms(100);
      descanso(cabeceraL);
      wait_us(cabeceraH);
      
      for(i=0;i<numb;i++){
          if (code[i]>1000){
              descanso(Tdescanso);
              wait_us(Thigh);
              }
         if (code[i]<1000){
              descanso(Tdescanso);
              wait_us(Tlow);
              }     
                            }
              descanso(Tdescanso);                
              return 0;
}
//*************************rutinas estrategicas de accionar controles*********************
void vol_up(){
for(i=0;i<numb;i++){
       code[i]=vol_upHY[i];
       }    
sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
repeat();
for(i=0;i<15;i++){
 for(j=0;j<2;j++){   
 wait_ms(56);    
 repeat(); 
                  }   
                }
}                
//**********************************
void vol_dwn(){
for(i=0;i<numb;i++){
       code[i]=vol_dwnHY[i];
       }    
sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
repeat();
for(i=0;i<15;i++){
 for(j=0;j<2;j++){
     wait_ms(56);    
     repeat();     
                }
                }
}
//*****************************************************
void ch_up(){
for(i=0;i<numb;i++){
       code[i]=ch_upHY[i];
                   }    
    for(i=0;i<30;i++){
    sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
    wait(3);
        
                     }
               
}
//*********************************************************
void ch_dwn(){
for(i=0;i<numb;i++){
       code[i]=ch_dwnHY[i];
       }    
for(i=0;i<30;i++){
sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
 wait(3);    
     
                 }
      }
//******************************************************
void mute(){
  for(i=0;i<numb;i++){
       code[i]=muteHY[i];
                   }   
sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);                  
  wait(2);
}
//**********************************************************
void pwr(){
  for(i=0;i<numb;i++){
       code[i]=pwrHY[i];
       }   
sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
}
//****************************
 
void repeat(){
    wait_ms(42);
    descanso(8800);
    wait_us(2240);
    descanso(560);
    }
//************************************************