Arduino, Internet das Coisas e Computação vestível

[Voltar]

[Avançar]

1.5. Sinalização luminosa para bicicleta


Sinalização luminosa para bicicleta

Projeto de um sistema de sinalização para bicicleta que utiliza Arduino Nano e Módulos Transmissor e Receptor (TX / RX) RF 433MHz, 3 Push button, 3 Leds e 3 resistores de 470 ohms.

// Projeto: Sinalização luminosa para bicicleta - Emissor (transmissor)   
// Autor: André Silveira
// Data: 14/11/2019

#include "RH_ASK.h"
#include "SPI.h"

RH_ASK driver;
// RH_ASK driver(2000, 2, 4, 5); // ESP8266 or ESP32: do not use pin 11

int PinoBotao1 = 4;
int PinoBotao2 = 5;
int PinoBotao3 = 6;
int buzzer = 2; 

void setup() {
    Serial.begin(9600);
    pinMode(PinoBotao1,INPUT_PULLUP);       // Inicializa como INPUT_PULLUP devido floating 
    pinMode(PinoBotao2,INPUT_PULLUP);       // Inicializa como INPUT_PULLUP devido floating
    pinMode(PinoBotao3,INPUT_PULLUP);       // Inicializa como INPUT_PULLUP devido floating
    pinMode(buzzer,OUTPUT);                 // Pino do buzzer
        
    if (!driver.init()) {
         Serial.println("init failed");
    }     
}

void loop() {
  
    const char *msg = "Alo";

    if (digitalRead(PinoBotao1) == 0) {      
        Serial.println("apertado1");
        msg = "LED1";
        tone(buzzer, 200, 200);  
        driver.send((uint8_t *)msg, strlen(msg));
        driver.waitPacketSent();   
    }
    
    if (digitalRead(PinoBotao2) == 0) {                             
        Serial.println("apertado2");
        msg = "LED2"; 
        tone(buzzer, 200, 200); 
        driver.send((uint8_t *)msg, strlen(msg));
        driver.waitPacketSent();    
    }
    
    if (digitalRead(PinoBotao3) == 0) {                          
        Serial.println("apertado3");
        msg = "LED3";
        tone(buzzer, 200, 200);  
        driver.send((uint8_t *)msg, strlen(msg));
        driver.waitPacketSent();                
    }
    delay(50);
    
}

// Projeto: Sinalização luminosa para bicicleta - Receptor   
// Autor: André Silveira
// Data: 14/11/2019

#include "RH_ASK.h"
#include "SPI.h" 

RH_ASK driver;
// RH_ASK driver(2000, 2, 4, 5); // ESP8266 or ESP32: do not use pin 11

int PinoLed1 = 6;
int PinoLed2 = 7;
int PinoLed3 = 8;
int piscapisca = 0; 
int buzzer = 2;                           

String str = "";                          
int StatusLed1 = 0; 
int StatusLed2 = 0;
int StatusLed3 = 0;  

void setup() {
  
    Serial.begin(9600);	
    pinMode(PinoLed1, OUTPUT); 
    pinMode(PinoLed2, OUTPUT); 
    pinMode(PinoLed3, OUTPUT); 
    pinMode(buzzer, OUTPUT);  

    digitalWrite(PinoLed1, LOW); 
    digitalWrite(PinoLed2, LOW); 
    digitalWrite(PinoLed3, LOW);
    if (!driver.init()) {
         Serial.println("init failed");
         return;
    }
    Serial.println("Inicializado");
    
}

void loop() {
  
    uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
    uint8_t buflen = sizeof(buf);

    if (driver.recv(buf, &buflen))  {
        str = ""; 
      	int i;

        for (int i = 0; i < buflen; i++){ 
           str += (char)buf[i]; 
        }
       
        Serial.print("Tecla: ");   
        Serial.println(str); 
        Serial.println("Recebeu dados");
        digitalWrite(PinoLed1, HIGH);
        if ((str.equals("LED1")) && (StatusLed1 == 0)){           
            led(1,0,0);
        }else{ 
             if ((str.equals("LED1")) && (StatusLed1 == 1)){ 
                 led(0,0,0);   
             }
             }
  
       if ((str.equals("LED2")) && (StatusLed2 == 0)){ 
            led(0,1,0);
            piscapisca=2;
       }else{ 
            if ((str.equals("LED2")) && (StatusLed2 == 1)){ 
                 led(0,0,0);     
                 piscapisca=0;
            }
            }
  
       if ((str.equals("LED3")) && (StatusLed3 == 0)){ 
            led(0,0,1);   
       }else{ 
            if ((str.equals("LED3")) && (StatusLed3 == 1)){             
                 led(0,0,0);      
            }
            }        
    }

    if (piscapisca == 1) {
        digitalWrite(PinoLed2, HIGH);
        piscapisca = 2;
    } else {
           if (piscapisca == 2) {
               digitalWrite(PinoLed2, LOW);
               piscapisca = 1;
           }
           }
    Serial.println(piscapisca);       
    delay(150); 
}

void led(int l1, int l2, int l3){

     StatusLed1 = l1;     
     StatusLed2 = l2;
     StatusLed3 = l3;
     tone(buzzer, 200, 200); 
     if (l1 == 0) {
         digitalWrite(PinoLed1, LOW);               
     } else{
           digitalWrite(PinoLed1, HIGH); 
           } 

     if (l2 == 0) {
         digitalWrite(PinoLed2, LOW); 
     } else{
            digitalWrite(PinoLed2, HIGH); 
           } 

     if (l3 == 0) {
         digitalWrite(PinoLed3, LOW); 
     } else{
            digitalWrite(PinoLed3, HIGH); 
           }         
 } 

 

[Voltar]

[Avançar]