Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- Servo servo1;
- #define RELE1 12
- #define RELE2 13
- #define pinBit01 2 // Q0
- #define pinBit02 3 // Q1
- #define pinBit03 4 // Q2
- #define pinBit04 5 // Q3
- #define pinBitStd 6 // STD
- int tecla = 0;
- int servoAngle; //POSIÇÃO DO SERVO
- int bit01 = 0;
- int bit02 = 0;
- int bit03 = 0;
- int bit04 = 0;
- int bitStd= 0;
- int val = 0;
- void setup() {
- Serial.begin(9600); // Iniciamos a Serial com Baudrate 9600
- servo1.attach(9);
- servo1.write(servoAngle);
- pinMode(RELE1, OUTPUT); // Definimos o pino do Relé como Saída
- pinMode(RELE2, OUTPUT); // Definimos o pino do Relé como Saída
- digitalWrite(RELE1, LOW);
- digitalWrite(RELE2, LOW);
- }
- void loop(){
- bitStd = digitalRead(pinBitStd); //Lê o estado do pino STD e armazena em 'bitStd'
- if (bitStd == HIGH) {//Se estiver em nível alto fará as leituras
- //dos bits dos pinos Q3, Q2, Q1 e Q0
- bit01 = digitalRead(pinBit01);
- bit02 = digitalRead(pinBit02);
- bit03 = digitalRead(pinBit03);
- bit04 = digitalRead(pinBit04);
- tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para
- //decimal (ver Vídeo1)
- //Serial.print("Recebido: "); // Exibe a mensagem
- switch (tecla){ // Seleciona a tecla pressionada
- // case 1: // Tecla 1
- //Serial.println("1");
- digitalWrite(RELE1, HIGH);
- for(servoAngle = 0; servoAngle < 65; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- digitalWrite(RELE2, HIGH);
- delay(2000);
- digitalWrite(RELE2, LOW);
- delay(5000);
- for(servoAngle = 65; servoAngle < 180; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- break;
- // case 2: // Tecla 2
- //Serial.println("2");
- for(servoAngle = 180; servoAngle > 0; servoAngle--){ //PARA ANGULO IGUAL A 180, ENQUANTO O ANGULO FOR MENOR QUE 0, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- digitalWrite(RELE1, LOW);
- break;
- case 3: // Tecla 3
- Serial.println("3");
- break;
- case 4: // Tecla 4
- Serial.println("4");
- break;
- case 5: // Tecla 5
- Serial.println("5");
- break;
- case 6: // Tecla 6
- Serial.println("6");
- break;
- case 7: // Tecla 7
- Serial.println("7");
- break;
- case 8: // Tecla 8
- Serial.println("8");
- break;
- case 9: // Tecla 9
- Serial.println("9");
- break;
- case 10: // Tecla 0
- Serial.println("0");
- break;
- case 11: // Tecla *
- Serial.println("*");
- break;
- case 12: // Tecla #
- Serial.println("#");
- break;
- }
- if(tecla == 1)
- {
- if (val == LOW) {
- Serial.println("1");
- digitalWrite(RELE1, HIGH);
- for(servoAngle = 0; servoAngle < 65; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- digitalWrite(RELE2, HIGH);
- delay(2000);
- digitalWrite(RELE2, LOW);
- delay(5000);
- for(servoAngle = 65; servoAngle < 180; servoAngle++){ //PARA ANGULO IGUAL A 0, ENQUANTO O ANGULO FOR MENOR QUE 180, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- }
- val= 1;
- }
- else if (tecla == 2) {
- if (val == HIGH) {
- Serial.println("2");
- for(servoAngle = 180; servoAngle > 0; servoAngle--){ //PARA ANGULO IGUAL A 180, ENQUANTO O ANGULO FOR MENOR QUE 0, INCREMENTA O ANGULO
- servo1.write(servoAngle); //GIRA O SERVO NO VALOR ATUAL DA VARIÁVEL servoAngle
- delay(25); //INTERVALO DE 25 MILISSEGUNDOS
- }
- digitalWrite(RELE1, LOW);
- val= 0;
- }
- }
- else if (tecla == 3) {
- }
- // Zeram-se todas as variáveis
- tecla = 0;
- bit01 = 0;
- bit02 = 0;
- bit03 = 0;
- bit04 = 0;
- bitStd= 0;
- delay (500); // Aguarda 500 milissegundos
- } // Sai do switch
- } // Volta pro loop...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement