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 3 // Q0
- #define pinBit02 4 // Q1
- #define pinBit03 5 // Q2
- #define pinBit04 6 // Q3
- #define pinBitStd 7 // 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
- 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) {
- Serial.println("3");
- }
- else if (tecla == 4) {
- Serial.println("4");
- }
- // 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