Advertisement
Guest User

Untitled

a guest
Feb 28th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.52 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <IRremote.h>
  3. #include <Bounce.h>
  4. #include <SoftwareSerial.h>
  5.  
  6.  
  7. SoftwareSerial servidor(10, 11); // RX, TX
  8.  
  9. IRsend irsend;
  10.  
  11. #define expansor1 0x38
  12. #define expansor2 0x39
  13.  
  14. byte inicio = B00000000;
  15.  
  16. #define LUZ1 0
  17. #define LUZ2 1
  18. #define LUZ3 2
  19. #define LUZ4 3
  20. #define LUZ5 4
  21. #define LUZ6 5
  22. #define LUZ7 6
  23. #define LUZ8 7
  24. #define LUZ9 0
  25. #define LUZ10 1
  26. #define LUZ11 2
  27. #define LUZ12 3
  28. #define LUZ13 4
  29. #define LUZ14 5
  30. #define LUZ15 6
  31. #define LUZ16 7
  32.  
  33. #define BUTTON1 23
  34. #define BUTTON2 24
  35. #define BUTTON3 25
  36. #define BUTTON4 26
  37. #define BUTTON5 27
  38. #define BUTTON6 28
  39. #define BUTTON7 29
  40. #define BUTTON8 30
  41. #define BUTTON9 31
  42. #define BUTTON10 32
  43. #define BUTTON11 33
  44. #define BUTTON12 34
  45. #define BUTTON13 35
  46. #define BUTTON14 36
  47. #define BUTTON15 37
  48. #define BUTTON16 38
  49.  
  50. int RELE1 = HIGH;
  51. int RELE2 = HIGH;
  52. int RELE3 = HIGH;
  53. int RELE4 = HIGH;
  54. int RELE5 = HIGH;
  55. int RELE6 = HIGH;
  56. int RELE7 = HIGH;
  57. int RELE8 = HIGH;
  58. int RELE9 = HIGH;
  59. int RELE10 = HIGH;
  60. int RELE11 = HIGH;
  61. int RELE12 = HIGH;
  62. int RELE13 = HIGH;
  63. int RELE14 = HIGH;
  64. int RELE15 = HIGH;
  65. int RELE16 = HIGH;
  66. int RELE17 = HIGH;
  67. int RELE18 = HIGH;
  68. int RELE19 = HIGH;
  69. int RELE20 = HIGH;
  70.  
  71. // Configurando delay`s
  72. int delay_botoes = 50;
  73. int delay_programa = 100;
  74.  
  75. Bounce bon1 = Bounce( BUTTON1, 10 );
  76. Bounce bon2 = Bounce( BUTTON2, 10 );
  77. Bounce bon3 = Bounce( BUTTON3, 10 );
  78. Bounce bon4 = Bounce( BUTTON4, 10 );
  79. Bounce bon5 = Bounce( BUTTON5, 10 );
  80. Bounce bon6 = Bounce( BUTTON6, 10 );
  81. Bounce bon7 = Bounce( BUTTON7, 10 );
  82. Bounce bon8 = Bounce( BUTTON8, 10 );
  83. Bounce bon9 = Bounce( BUTTON9, 10 );
  84. Bounce bon10 = Bounce( BUTTON10, 10 );
  85. Bounce bon11 = Bounce( BUTTON11, 10 );
  86. Bounce bon12 = Bounce( BUTTON12, 10 );
  87. Bounce bon13 = Bounce( BUTTON13, 10 );
  88. Bounce bon14 = Bounce( BUTTON14, 10 );
  89. Bounce bon15 = Bounce( BUTTON15, 10 );
  90. Bounce bon16 = Bounce( BUTTON16, 10 );
  91.  
  92. void setup()
  93. {
  94.     Serial.begin(9600);
  95.     Wire.begin();
  96.     Wire.beginTransmission(expansor1);
  97.       Wire.write(inicio);
  98.     Wire.endTransmission(expansor1);
  99.    
  100.     Wire.beginTransmission(expansor2);
  101.       Wire.write(inicio);
  102.     Wire.endTransmission(expansor2);
  103.    
  104.    
  105.     Serial.println("Iniciando programa..");
  106.     servidor.begin(9600);
  107.    
  108.     Serial.println("Configurando Botoes..");
  109.     pinMode(BUTTON1, INPUT);
  110.     pinMode(BUTTON2, INPUT);
  111.     pinMode(BUTTON3, INPUT);
  112.     pinMode(BUTTON4, INPUT);
  113.     pinMode(BUTTON5, INPUT);
  114.     pinMode(BUTTON6, INPUT);
  115.     pinMode(BUTTON7, INPUT);
  116.     pinMode(BUTTON8, INPUT);
  117.     pinMode(BUTTON9, INPUT);
  118.     pinMode(BUTTON10, INPUT);
  119.     pinMode(BUTTON11, INPUT);
  120.     pinMode(BUTTON12, INPUT);
  121.     pinMode(BUTTON13, INPUT);
  122.     pinMode(BUTTON14, INPUT);
  123.     pinMode(BUTTON15, INPUT);
  124.     pinMode(BUTTON16, INPUT);
  125.    
  126.     Serial.println("Pull-UP Interno nos botoes");  
  127.     digitalWrite(BUTTON1, HIGH);
  128.     digitalWrite(BUTTON2, HIGH);
  129.     digitalWrite(BUTTON3, HIGH);
  130.     digitalWrite(BUTTON4, HIGH);
  131.     digitalWrite(BUTTON5, HIGH);
  132.     digitalWrite(BUTTON6, HIGH);
  133.     digitalWrite(BUTTON7, HIGH);
  134.     digitalWrite(BUTTON8, HIGH);
  135.     digitalWrite(BUTTON9, HIGH);
  136.     digitalWrite(BUTTON10, HIGH);
  137.     digitalWrite(BUTTON11, HIGH);
  138.     digitalWrite(BUTTON12, HIGH);
  139.     digitalWrite(BUTTON13, HIGH);
  140.     digitalWrite(BUTTON14, HIGH);
  141.     digitalWrite(BUTTON15, HIGH);
  142.     digitalWrite(BUTTON16, HIGH);
  143.    
  144.     Serial.println("Setando estado inicial dos reles");
  145.    
  146.     Serial.println("Configurando infravermelho...");
  147.     //pinMode(9, OUTPUT);
  148.     Serial.println("Programa iniciado!");
  149.     delay(40);
  150. }
  151.  
  152. void loop()
  153. {
  154.  
  155.   if ( bon1.update() ) {
  156.      if ( bon1.read() == HIGH) {
  157.        if ( RELE1 == LOW ) {
  158.          RELE1 = HIGH;
  159.          Serial.println("RELE1 ATIVADO");
  160.        } else {
  161.          RELE1 = LOW;
  162.          Serial.println("RELE1 DESATIVADO");
  163.        }
  164.        invertePino(LUZ1, expansor1);
  165.      }
  166.    }
  167.    
  168.    if ( bon2.update() ) {
  169.      if ( bon2.read() == HIGH) {
  170.        if ( RELE2 == LOW ) {
  171.          RELE2 = HIGH;
  172.           Serial.println("RELE2 ATIVADO");
  173.        } else {
  174.          RELE2 = LOW;
  175.          Serial.println("RELE2 DESATIVADO");
  176.        }
  177.        //digitalWrite(LUZ2,RELE2);
  178.        invertePino(LUZ2, expansor1);
  179.      }
  180.    }
  181.    
  182.    if ( bon3.update() ) {
  183.      if ( bon3.read() == HIGH) {
  184.        if ( RELE3 == LOW ) {
  185.          RELE3 = HIGH;
  186.           Serial.println("RELE3 ATIVADO");
  187.        } else {
  188.          RELE3 = LOW;
  189.          Serial.println("RELE3 DESATIVADO");
  190.        }
  191.        //digitalWrite(LUZ3,RELE3);
  192.        invertePino(LUZ3, expansor1);
  193.      }
  194.    }
  195.    
  196.    if ( bon4.update() ) {
  197.      if ( bon4.read() == HIGH) {
  198.        if ( RELE4 == LOW ) {
  199.          RELE4 = HIGH;
  200.           Serial.println("RELE4 ATIVADO");
  201.        } else {
  202.          RELE4 = LOW;
  203.          Serial.println("RELE4 DESATIVADO");
  204.        }
  205.        //digitalWrite(LUZ4,RELE4);
  206.        invertePino(LUZ4, expansor1);
  207.      }
  208.    }
  209.    
  210.   if ( bon5.update() ) {
  211.      if ( bon5.read() == HIGH) {
  212.        if ( RELE5 == LOW ) {
  213.          RELE5 = HIGH;
  214.           Serial.println("RELE5 ATIVADO");
  215.        } else {
  216.          RELE5 = LOW;
  217.          Serial.println("RELE5 DESATIVADO");
  218.        }
  219.        //digitalWrite(LUZ5,RELE5);
  220.        invertePino(LUZ5, expansor1);
  221.      }
  222.    }
  223.    
  224.    if ( bon6.update() ) {
  225.      if ( bon6.read() == HIGH) {
  226.        if ( RELE6 == LOW ) {
  227.          RELE6 = HIGH;
  228.           Serial.println("RELE6 ATIVADO");
  229.        } else {
  230.          RELE6 = LOW;
  231.          Serial.println("RELE6 DESATIVADO");
  232.        }
  233.        //digitalWrite(LUZ6,RELE6);
  234.        invertePino(LUZ6, expansor1);
  235.      }
  236.    }
  237.    
  238.    if ( bon7.update() ) {
  239.      if ( bon7.read() == HIGH) {
  240.        if ( RELE7 == LOW ) {
  241.          RELE7 = HIGH;
  242.           Serial.println("RELE7 ATIVADO");
  243.        } else {
  244.          RELE7 = LOW;
  245.          Serial.println("RELE7 DESATIVADO");
  246.        }
  247.        //digitalWrite(LUZ7,RELE7);
  248.        invertePino(LUZ7, expansor1);
  249.      }
  250.    }
  251.    
  252.    if ( bon8.update() ) {
  253.      if ( bon8.read() == HIGH) {
  254.        if ( RELE8 == LOW ) {
  255.          RELE8 = HIGH;
  256.           Serial.println("RELE8 ATIVADO");
  257.        } else {
  258.          RELE8 = LOW;
  259.          Serial.println("RELE8 DESATIVADO");
  260.        }
  261.        //digitalWrite(LUZ8,RELE8);
  262.        invertePino(LUZ8, expansor1);
  263.      }
  264.    }
  265.    
  266.    if ( bon9.update() ) {
  267.      if ( bon9.read() == HIGH) {
  268.        if ( RELE9 == LOW ) {
  269.          RELE9 = HIGH;
  270.           Serial.println("RELE9 ATIVADO");
  271.        } else {
  272.          RELE9 = LOW;
  273.          Serial.println("RELE9 DESATIVADO");
  274.        }
  275.        //digitalWrite(LUZ9,RELE9);
  276.        invertePino(LUZ9, expansor2);
  277.      }
  278.    }
  279.    
  280.    if ( bon10.update() ) {
  281.      if ( bon10.read() == HIGH) {
  282.        if ( RELE10 == LOW ) {
  283.          RELE10 = HIGH;
  284.           Serial.println("RELE10 ATIVADO");
  285.        } else {
  286.          RELE10 = LOW;
  287.          Serial.println("RELE10 DESATIVADO");
  288.        }
  289.        //digitalWrite(LUZ10,RELE10);
  290.        invertePino(LUZ10, expansor2);
  291.      }
  292.    }
  293.    
  294.    if ( bon11.update() ) {
  295.      if ( bon11.read() == HIGH) {
  296.        if ( RELE11 == LOW ) {
  297.          RELE11 = HIGH;
  298.           Serial.println("RELE11 ATIVADO");
  299.        } else {
  300.          RELE11 = LOW;
  301.          Serial.println("RELE11 DESATIVADO");
  302.        }
  303.        //digitalWrite(LUZ11,RELE11);
  304.        invertePino(LUZ11, expansor2);
  305.      }
  306.    }
  307.    
  308.    if ( bon12.update() ) {
  309.      if ( bon12.read() == HIGH) {
  310.        if ( RELE12 == LOW ) {
  311.          RELE12 = HIGH;
  312.           Serial.println("RELE12 ATIVADO");
  313.        } else {
  314.          RELE12 = LOW;
  315.          Serial.println("RELE12 DESATIVADO");
  316.        }
  317.        //digitalWrite(LUZ12,RELE12);
  318.        invertePino(LUZ12, expansor2);
  319.      }
  320.    }
  321.    
  322.    if ( bon13.update() ) {
  323.      if ( bon13.read() == HIGH) {
  324.        if ( RELE13 == LOW ) {
  325.          RELE13 = HIGH;
  326.           Serial.println("RELE13 ATIVADO");
  327.        } else {
  328.          RELE13 = LOW;
  329.          Serial.println("RELE13 DESATIVADO");
  330.        }
  331.        //digitalWrite(LUZ13,RELE13);
  332.        invertePino(LUZ13, expansor2);
  333.      }
  334.    }
  335.    
  336.    if ( bon14.update() ) {
  337.      if ( bon14.read() == HIGH) {
  338.        if ( RELE14 == LOW ) {
  339.          RELE14 = HIGH;
  340.           Serial.println("RELE14 ATIVADO");
  341.        } else {
  342.          RELE14 = LOW;
  343.          Serial.println("RELE14 DESATIVADO");
  344.        }
  345.        //digitalWrite(LUZ14,RELE14);
  346.        invertePino(LUZ14, expansor2);
  347.      }
  348.    }
  349.    
  350.    if ( bon15.update() ) {
  351.      if ( bon15.read() == HIGH) {
  352.        if ( RELE15 == LOW ) {
  353.          RELE15 = HIGH;
  354.           Serial.println("RELE15 ATIVADO");
  355.        } else {
  356.          RELE15 = LOW;
  357.          Serial.println("RELE15 DESATIVADO");
  358.        }
  359.        //digitalWrite(LUZ15,RELE15);
  360.        invertePino(LUZ15, expansor2);
  361.      }
  362.    }
  363.    
  364.    if ( bon16.update() ) {
  365.      if ( bon16.read() == HIGH) {
  366.        if ( RELE16 == LOW ) {
  367.          RELE16 = HIGH;
  368.           Serial.println("RELE16 ATIVADO");
  369.        } else {
  370.          RELE16 = LOW;
  371.          Serial.println("RELE16 DESATIVADO");
  372.        }
  373.        //digitalWrite(LUZ16,RELE16);
  374.        invertePino(LUZ16, expansor2);
  375.      }
  376.    }
  377.  
  378.    // Retorno dos dados do servidor
  379.    servidor.listen();
  380.   if (servidor.available() > 0) {
  381.     char acao = (char)servidor.read();
  382.     Serial.println(acao);    
  383.  
  384.     if(acao == '1') {
  385.       //digitalWrite(LUZ1,1);
  386.       invertePino(LUZ1, expansor1);
  387.     }
  388.     else if(acao == '2') {
  389.       invertePino(LUZ1, expansor1);
  390.     }
  391.     else if(acao == '3') {
  392.       digitalWrite(LUZ2,1);
  393.     }
  394.     else if(acao == '4') {
  395.       digitalWrite(LUZ2,0);
  396.     }
  397.     else if(acao == '5') {
  398.       digitalWrite(LUZ3,1);
  399.     }
  400.     else if(acao == '6') {
  401.       digitalWrite(LUZ3,0);
  402.     }
  403.     else if(acao == '7') {
  404.       digitalWrite(LUZ4,1);
  405.     }
  406.     else if(acao == '8') {
  407.       digitalWrite(LUZ4,0);
  408.     }
  409.     else if(acao == '9') {
  410.       digitalWrite(LUZ5,1);
  411.     }
  412.     else if(acao == '10') {
  413.       digitalWrite(LUZ5,0);
  414.     }
  415.     else if(acao == '11') {
  416.       digitalWrite(LUZ6,1);
  417.     }
  418.     else if(acao == '12') {
  419.       digitalWrite(LUZ6,0);
  420.     }
  421.     else if(acao == '13') {
  422.       digitalWrite(LUZ7,1);
  423.     }
  424.     else if(acao == '14') {
  425.       digitalWrite(LUZ7,0);
  426.     }
  427.     else if(acao == '15') {
  428.       digitalWrite(LUZ8,1);
  429.     }
  430.     else if(acao == '16') {
  431.       digitalWrite(LUZ8,0);
  432.     }
  433.     else if(acao == '17') {
  434.       digitalWrite(LUZ9,1);
  435.     }
  436.     else if(acao == '18') {
  437.       digitalWrite(LUZ9,0);
  438.     }
  439.     else if(acao == '19') {
  440.       digitalWrite(LUZ10,1);
  441.     }
  442.     else if(acao == '20') {
  443.       digitalWrite(LUZ10,0);
  444.     }
  445.     else if(acao == '21') {
  446.       digitalWrite(LUZ11,1);
  447.     }
  448.     else if(acao == '22') {
  449.       digitalWrite(LUZ11,0);
  450.     }
  451.     else if(acao == '23') {
  452.       digitalWrite(LUZ12,1);
  453.     }
  454.     else if(acao == '24') {
  455.       digitalWrite(LUZ12,0);
  456.     }
  457.     else if(acao == '25') {
  458.       digitalWrite(LUZ13,1);
  459.     }
  460.     else if(acao == '26') {
  461.       digitalWrite(LUZ13,0);
  462.     }
  463.     else if(acao == '27') {
  464.       digitalWrite(LUZ14,1);
  465.     }
  466.     else if(acao == '28') {
  467.       digitalWrite(LUZ14,0);
  468.     }
  469.     else if(acao == '29') {
  470.       digitalWrite(LUZ15,1);
  471.     }
  472.     else if(acao == '30') {
  473.       digitalWrite(LUZ15,0);
  474.     }
  475.     else if(acao == '31') {
  476.       digitalWrite(LUZ16,1);
  477.     }
  478.     else if(acao == '32') {
  479.       digitalWrite(LUZ16,0);
  480.     }
  481.      else {}
  482.   }
  483. }
  484.  
  485. void invertePino(int pinN, byte endereco){
  486.   inicio = inicio ^ (1 << pinN);
  487.   Wire.beginTransmission(endereco);
  488.     Wire.write(inicio);
  489.   Wire.endTransmission(endereco);
  490.   delay(40);
  491. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement