Voici mon code avec encore quelques bug:
Sa bug surtout sur la transmission I2C.
//##########################################################################
//# Centrale d'alarme #
//# #
//#Nicolas P #
//#v1 Création le 16/09/2016 #
//##########################################################################
/*
Zone1: Périmetrique Entrée 14
Zone2: Volumetrique Entrée 15
Zone2: Détection Incendie Entrée 16 Fumée/ 17 Monoxyde
Zone4: Cabanon Entrée ND
Zone5: Garage Entrée ND
Zone6: Piscine Entrée ND
BP: Aquitement Entrée 8
R1: Siréne Int Sortie 12
R1: Siréne Ext Sortie 11
R1: NC Sortie 10
R1: NC Sortie 9
Comunication en i2c:
Digicode Arduino nano, afficheur lcd 20x4, Horloge
Code fonction
0xx Base de donnéé
001 Zones Active
002 Droit Maitre
003 Droit Utilisateur
004 Droit Utilisateur Lite
----------
1xx GSM
----------
2xx Carte SD
----------
3xx Ethernet
----------
4xx Horlogz
401 Demande de l'heure
*/
//##########################################################################
// Variables
//##########################################################################
int valeur; //Valeur relevé sur la boucle de détection en cours
String Etat; //Etat litéral de l'entrée scannée
String EtatBack; //EtatBack=Etat du cycle précedant
int Alarme = 0; //Etat 0: ok, 1: siréne int (R1), 2: siréne int+rxt (R1+R2)
int Zone; //numerot de la fonction a appeler
//Horloge
String horloge; //contiens la date et l'heure 'jj/mm/aaaa hh:mm'
//horloge = String();
String Jour;
String Mois;
String Annee;
String Heur;
String Min;
//indice de boucle
int i;
int j;
int k;
int l;
int m;
//i2c
int adr; //adresse du participant
String fonc; //Fonction de la data a transmettre |
String data; //data a transmettre | constitue la trame
String Transfert; //Fonc+data -> transfert
char Transfert2; //transfert aprés convertion
String reception; //Recu de l'eqclave
char reception2;
char c;
//##########################################################################
// Library
//##########################################################################
//--------------------------------------------------------------------------
//i2c
#include <Wire.h>
//--------------------------------------------------------------------------
//Horloge
#include <RTClib.h>
RTC_Millis RTC;
//--------------------------------------------------------------------------
//String
#include <string.h> //Fonction sur les string
//##########################################################################
// Base de données
//##########################################################################
//--------------------------------------------------------------------------
//Table des droits
const byte Lignes = 5; //NB de lignes du tableau pouvant varier suivant le NB d'utilisateur
char Table[Lignes][8] =
{
//Niv- Code, Z1, Z2, Z3, Z4, Z5, Z6
{'4', '0000', '14','15','16','17','18','19'}, //Entrée phisique
{'0', '0000', '0', '1', '1', '0', '0', '1'}, //Zones Active,état
{'1', '1234', '1', '1', '1', '1', '1', '1'}, //Droit Maitre
{'2', '4321', '1', '1', '0', '1', '1', '1'}, //Droit Utilisateur
{'3', '5678', '1', '1', '0', '0', '0', '0'} //Droit Utilisateur Lite
};
/*int Table[Lignes][8] =
{
//Niv-Code,Z1,Z2,Z3,Z4,Z5,Z6
{4, 0000, 14, 15, 16, 17, 18, 19}, //Entrée phisique
{0, 0000, 0, 1, 1, 0, 0, 1}, //Zones Active,état
{1, 1234, 1, 1, 1, 1, 1, 1}, //Droit Maitre
{2, 4321, 1, 1, 0, 1, 1, 1}, //Droit Utilisateur
{3, 5678, 1, 1, 0, 0, 0, 0} //Droit Utilisateur Lite
};*/
//--------------------------------------------------------------------------
//##########################################################################
// Setup
//##########################################################################
void setup() {
Serial.begin (9600); //Communication Série
Wire.begin(); //inicialise i2c comme maitre
RTC.begin(DateTime(__DATE__, __TIME__)); //Date & Heure de la compilation
Wire.begin(); //join i2c bus
//Zones
pinMode(A0, INPUT); //Z1: Périmetrique
pinMode(A1, INPUT); //Z2: Volumetrique
pinMode(A2, INPUT); //Z3: DI Fumée
pinMode(A3, INPUT); //Z3: DI Monoxyde
//
pinMode(13, OUTPUT); //Témoin Déclanchement
//Sortie relais
pinMode(12, OUTPUT); //R1: Siréne interieur
pinMode(11, OUTPUT); //R2: Siréne exterieur
pinMode(10, OUTPUT); //R3: Voyant Externe Vert/Rouge
pinMode(9, OUTPUT); //R4:
//Entrée
pinMode(8, INPUT); //Aquitement
//Pilote les sorties relais qui fonctionne à l'enver
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
}