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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
/*
Télécommande sur 433 Mhz bi-directionnelle
------------------------------------------
Création : le 29 octobre 2012
Version 1.0
------------------------------------------
Pins utilisés
TX1 -> Modem 433Mhz
RX1 <- Modem 433Mhz
SDA <-> Data I2C
SCL <-> Horloge I2C
SPI <-> Carte Ethernet / SD Card
04 (PWM) -> Ethernet CS
10 (PWM) -> Ethernet Librairie
50 (Digit) -> Ethernet Librairie
51 (Digit) -> Ethernet Librairie
52 (Digit) -> Ethernet Librairie
53 (Digit) -> Ethernet Librairie
AN0 -> Voie 1
AN1 -> Voie 2
AN2 -> Voie 3
AN3 -> Voie 4
22 (Digit) -> Voie 5 = Btn On/Off/On 1
23 (Digit) -> Voie 5 = Btn On/Off/On 1
24 (Digit) -> Voie 6 = Btn On/Off/On 2
25 (Digit) -> Voie 6 = Btn On/Off/On 2
Pour infos:
- Les voies analogiques sont reliée chacune à leur potar.
- 22 et 23 Corresponde à un potar à 3 positions.
- 00 = Milieu
- 10 = Haut
- 01 = Bas
- 24 et 25 Corresponde à un potar à 3 positions.
- 00 = Milieu
- 10 = Haut
- 01 = Bas
*/
/* INC */
#include <Wire.h>
#include <SD.h>
/* DEFINITIONS */
#define adresseLcd 0x63 //Ecran LCD
/* VARIABLES GLOBALES */
File myFile;
/* SETUP */
void setup() {
//Lancer les ports séries
Serial.begin(9600); //Pour dépanner sur le port USB
Serial1.begin(9600); //Pour gérer le modem
//Initialiser l'écran LCD
initLcd(); //Initialiser l'écran LCD
ecrireLcd("Telecommande 433Mhz", 01); //Ecrire
ecrireLcd("Version 1.0", 24); //Ecrire
ecrireLcd("Bonjour", 66); //Ecrire
delay(2000);
//Initialiser la carte SD
if(initSD()) {
testFichier("config.txt");
}
clearLcd(); //Effacer l'écran
}
/* LOOP */
void loop() {
}
/* FONCTION initLCD */
void initLcd() {
//Initialisation de l'écran par I2C
Wire.begin(); //Amorce la connection sur SDA et SCL
Wire.beginTransmission(adresseLcd); //Appelle l'écran LCD
Wire.write((byte)0x00); //Assigne un null
Wire.write((byte)0x0C); //Effacer l'écran
Wire.write((byte)0x13); //Allume le rétro-éclairage
Wire.write((byte)0x04); //Ne pas afficher le curseur
Wire.endTransmission(); //Ferme la connexion sur SDA et SCL
}
/* FONCTION ecrireLcd */
void ecrireLcd(String texte, int positionEcran) {
//Initialisation de l'écran par I2C
Wire.begin(); //Amorce la connection sur SDA et SCL
Wire.beginTransmission(adresseLcd); //Appelle l'écran LCD
Wire.write((byte)0x00); //Assigne un null
Wire.write((byte)0x02); //Placer le curseur
Wire.write(positionEcran); //Sur l'écran
Wire.print(texte); //Ecrire un texte
Wire.endTransmission(); //Ferme la connexion sur SDA et SCL
}
/* FONCTION ecrireLcdChar */
void ecrireLcdChar(char texte[32], int positionEcran) {
//Initialisation de l'écran par I2C
Wire.begin(); //Amorce la connection sur SDA et SCL
Wire.beginTransmission(adresseLcd); //Appelle l'écran LCD
Wire.write((byte)0x00); //Assigne un null
Wire.write((byte)0x02); //Placer le curseur
Wire.write(positionEcran); //Sur l'écran
Wire.write(texte); //Ecrire un texte
Wire.endTransmission(); //Ferme la connexion sur SDA et SCL
}
/* FONCTION clearLcd() */
void clearLcd() {
//Initialisation de l'écran par I2C
Wire.begin(); //Amorce la connection sur SDA et SCL
Wire.beginTransmission(adresseLcd); //Appelle l'écran LCD
Wire.write((byte)0x00); //Assigne un null
Wire.write((byte)0x0C); //Effacer l'écran
Wire.endTransmission(); //Ferme la connexion sur SDA et SCL
}
/* FONCTION initSD() */
boolean initSD() {
clearLcd(); //Effacer l'écran
ecrireLcd("Init SD Card...", 01); //Ecrire
//Si la carte n'est pas présente ou qu'elle est en défaut
if(!SD.begin(4)) {
//Afficher l'écran LCD
clearLcd(); //Effacer l'écran
ecrireLcd("Init SD Card failed", 01); //Ecrire
delay(1000);
return false;
}
clearLcd(); //Effacer l'écran
ecrireLcd("Init SD Card done", 01); //Ecrire
delay(1000);
return true;
}
/* FONCTION testFichier(fichier) */
void testFichier(char fic[]) {
clearLcd(); //Effacer l'écran
ecrireLcd("Init File in SD...", 01); //Ecrire
//Ouvrir le fichier
myFile = SD.open(fic, FILE_READ);
//Si le fichier n'est pas présent
if(myFile == false) {
clearLcd(); //Effacer l'écran
ecrireLcd("SD: File not found", 01); //Ecrire
/*
peut tre remplacer par une demande d'apuie
de bouton Valider pour passer à l'utilisation de la télécommande
*/
for(;;); //Boucle infini
}
clearLcd(); //Effacer l'écran
ecrireLcd("File in SD done", 01); //Ecrire
delay(1000);
}
/* FONCTION de lecture des configurations */
void lectureConf() {
} |
Partager