1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
//definition des entrees sorties
const int sirene = 7; //numero de pin de la sortie sirene
int PowerValue = 0;
//definition des variables
unsigned long code;
long timer = 0;
float acceleration = 0;
//bibliotheque utilisée
#include <SoftwareSerial.h> // librairie pour creer une nouvelle connexion serie max 9600 baud
#include <MPU6050_tockn.h> // librairie carte accelerometre mpu6050
#include <Wire.h>
MPU6050 mpu6050(Wire);
SoftwareSerial BTSerial(10, 11); // RX | TX = > BT-TX=10 BT-RX=11
//boucle de demarrage
void setup()
{
Serial.begin(9600);
Serial.setTimeout(50); // Pour fin des commandes depuis le moniteur
Serial.println("Enter a command:");
BTSerial.begin(9600); // HC-05 9600 baud
BTSerial.setTimeout(50); // Pour fin des commandes depuis Bluetooth
// pinMode(PIN_SIRENE, OUTPUT);
//sorties
pinMode(sirene, OUTPUT); // definit le pin "sirene" pin 7 comme sortie
digitalWrite(sirene, LOW); // l'initialise a 0
Wire.begin();
while (millis() < 8000) // tempo de 8 sec
// calibration accelerometre
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
// un petit bip pour indiquer que l'accéléromètre est prèt
digitalWrite(sirene, HIGH);
delay(800);
digitalWrite(sirene, LOW);
}
void loop()
{
String message = "";
// Boucle de lecture sur le BT
// Reading BT
if (BTSerial.available())
{
// Lecture du message envoyé par le BT
// Read message send by BT
message = BTSerial.readString();
// Nettoyage des caractères indésirables, CR, LF, TAB... et les espace de début et de fin
message.trim();
// Ecriture du message dans le serial usb
// write in serial usb
Serial.println(message);
}
// Boucle de lecture sur le serial usb
// Reading serial usb
if (Serial.available())
{
// Lecture du message envoyé par le serial usb
// Read message send by serial usb
message = Serial.readString();
// Nettoyage des caractères indésirables, CR, LF, TAB... et les espace de début et de fin
message.trim();
// Ecriture du message dans le BT
// write in BT
BTSerial.println(message);
//PowerValue = Serial.println(message);
}
if (message != "") // Si un message a été reçu
{
// si mon message est egal a "on"
// if message equal to "on"
if (message == "on")
{
PowerValue = 1; // power on
Serial.println("Power ON");
}// else if message off
else if (message == "off")
{
PowerValue = 0; // power off
Serial.println("Power OFF");
}
message = "";
}
mpu6050.update();
acceleration = max(acceleration, abs(mpu6050.getAccX()));
acceleration = max(acceleration, abs(mpu6050.getAccY()));
acceleration = max(acceleration, abs(mpu6050.getAccZ()));
if (acceleration > 1.2 && PowerValue == 1)
{
digitalWrite(sirene, HIGH);
delay(1200);
digitalWrite(sirene, LOW);
}
else if (PowerValue == 0)
{
digitalWrite(sirene , LOW); // led off
// if (acceleration < 0.5) {digitalWrite(sirene, HIGH);
// delay(1200);
// digitalWrite(sirene, LOW);
//}
acceleration = 0;
}
}
//fin de boucle principale |
Partager