Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. #include <Servo.h>
  2. Servo servo1;
  3.  
  4.  
  5. #define RELE1 12
  6. #define RELE2 13
  7. #define pinBit01 2 // Q0
  8. #define pinBit02 3 // Q1
  9. #define pinBit03 4 // Q2
  10. #define pinBit04 5 // Q3
  11. #define pinBitStd 6 // STD
  12.  
  13. int tecla = 0;
  14. int servoAngle; //POSIÇÃO DO SERVO
  15. int bit01 = 0;
  16. int bit02 = 0;
  17. int bit03 = 0;
  18. int bit04 = 0;
  19. int bitStd= 0;
  20.  
  21. int val = 0;
  22.  
  23. void setup() {
  24. Serial.begin(9600); // Iniciamos a Serial com Baudrate 9600
  25. servo1.attach(9);
  26. servo1.write(servoAngle);
  27. pinMode(RELE1, OUTPUT); // Definimos o pino do Relé como Saída
  28. pinMode(RELE2, OUTPUT); // Definimos o pino do Relé como Saída
  29. digitalWrite(RELE1, LOW);
  30. digitalWrite(RELE2, LOW);
  31. }
  32.  
  33. void loop(){
  34. bitStd = digitalRead(pinBitStd); //Lê o estado do pino STD e armazena em 'bitStd'
  35.  
  36. if (bitStd == HIGH) {//Se estiver em nível alto fará as leituras
  37. //dos bits dos pinos Q3, Q2, Q1 e Q0
  38.  
  39. bit01 = digitalRead(pinBit01);
  40. bit02 = digitalRead(pinBit02);
  41. bit03 = digitalRead(pinBit03);
  42. bit04 = digitalRead(pinBit04);
  43.  
  44. tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para
  45. //decimal (ver Vídeo1)
  46.  
  47. //Serial.print("Recebido: "); // Exibe a mensagem
  48.  
  49. switch (tecla){ // Seleciona a tecla pressionada
  50.  
  51. // case 1: // Tecla 1
  52. //Serial.println("1");
  53. digitalWrite(RELE1, HIGH);
  54. for(servoAngle = 0; servoAngle < 65; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
  55. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  56. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  57. }
  58.  
  59. digitalWrite(RELE2, HIGH);
  60. delay(2000);
  61. digitalWrite(RELE2, LOW);
  62. delay(5000);
  63. for(servoAngle = 65; servoAngle < 180; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
  64. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  65. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  66. }
  67. break;
  68.  
  69. // case 2: // Tecla 2
  70. //Serial.println("2");
  71. for(servoAngle = 180; servoAngle > 0; servoAngle--){ //PARA ANGULO IGUAL A 180, ENQUANTO O ANGULO FOR MENOR QUE 0, INCREMENTA O ANGULO
  72. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  73. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  74. }
  75. digitalWrite(RELE1, LOW);
  76. break;
  77.  
  78. case 3: // Tecla 3
  79. Serial.println("3");
  80.  
  81.  
  82. break;
  83.  
  84. case 4: // Tecla 4
  85. Serial.println("4");
  86. break;
  87.  
  88. case 5: // Tecla 5
  89. Serial.println("5");
  90. break;
  91.  
  92. case 6: // Tecla 6
  93. Serial.println("6");
  94. break;
  95.  
  96. case 7: // Tecla 7
  97. Serial.println("7");
  98. break;
  99.  
  100. case 8: // Tecla 8
  101. Serial.println("8");
  102. break;
  103.  
  104. case 9: // Tecla 9
  105. Serial.println("9");
  106. break;
  107.  
  108. case 10: // Tecla 0
  109. Serial.println("0");
  110. break;
  111.  
  112. case 11: // Tecla *
  113. Serial.println("*");
  114. break;
  115.  
  116. case 12: // Tecla #
  117. Serial.println("#");
  118. break;
  119. }
  120.  
  121.  
  122. if(tecla == 1)
  123.  
  124. {
  125. if (val == LOW) {
  126.  
  127. Serial.println("1");
  128. digitalWrite(RELE1, HIGH);
  129. for(servoAngle = 0; servoAngle < 65; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
  130. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  131. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  132. }
  133. digitalWrite(RELE2, HIGH);
  134. delay(2000);
  135. digitalWrite(RELE2, LOW);
  136. delay(5000);
  137. for(servoAngle = 65; servoAngle < 180; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
  138. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  139. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  140. }
  141. }
  142. val= 1;
  143. }
  144.  
  145. else if (tecla == 2) {
  146. if (val == HIGH) {
  147. Serial.println("2");
  148. for(servoAngle = 180; servoAngle > 0; servoAngle--){ //PARA ANGULO IGUAL A 180, ENQUANTO O ANGULO FOR MENOR QUE 0, INCREMENTA O ANGULO
  149. servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
  150. delay(25); //INTERVALO DE 25 MILISSEGUNDOS
  151. }
  152. digitalWrite(RELE1, LOW);
  153. val= 0;
  154. }
  155. }
  156. else if (tecla == 3) {
  157.  
  158. }
  159.  
  160.  
  161. // Zeram-se todas as variáveis
  162. tecla = 0;
  163. bit01 = 0;
  164. bit02 = 0;
  165. bit03 = 0;
  166. bit04 = 0;
  167. bitStd= 0;
  168. delay (500); // Aguarda 500 milissegundos
  169. } // Sai do switch
  170. } // Volta pro loop...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement