Partie 3. Micrologiciel, configuration et algorithmes de travail
Dans l' archive du projet, j'ai rassemblé le firmware fini, les bibliothèques utilisées, ainsi qu'un article avec le projet original (malheureusement, il n'est plus disponible en ligne). En outre, il existe également un scanner pour le bus I2C (au cas où le module d'horloge ou le capteur de lumière utiliserait des adresses non standard).
Attention
Attention! La bibliothèque "MicroLED", écrite par AlexGyver, a reçu une mise à jour (au moment de la rédaction de cet article - jusqu'à la version 3). Cependant, la version mise à jour rompt le micrologiciel, car les algorithmes de spécification de la couleur du ruban ont été modifiés.
La version mise à jour ajoute des fonctions qui ne sont pas utilisées dans ce projet et vous ne pouvez pas mettre à jour la bibliothèque sans réécrire le code.
Avant de clignoter, je recommande de configurer le module Bluetooth, à savoir de lui définir un nom et un mot de passe, et également de vérifier la vitesse de transmission du port.
Vous pouvez laisser les paramètres par défaut (mot de passe 1234 ou 0000), le nom sera également le nom par défaut.
En train de travailler sur ce projet et sur un autre, j'ai mis entre mes mains deux modules bluetooth (qui, bien sûr, ont été achetés à nos amis asiatiques), dont le modèle n'a pas été possible à établir. De plus, ils étaient entre mes mains à des moments différents, et je ne pouvais pas les comparer en apparence. Cependant, les spécificités de leurs paramètres étaient différentes (je crois qu'ils étaient HC-05 et HC-06).
Donc, vous devez d'abord connecter le module Bluetooth et arduino comme suit:
Arduino |
Bluetooth |
Broche 2 |
TX |
Broche 3 |
RX |
5V |
VCC |
GND |
GND |
Dans certains articles, il existe des schémas de connexion avec des résistances, mais tout cela est superflu. Le module est configuré par des commandes AT via l'esquisse spécifiée.
Ensuite, remplissez le croquis "BluetoothAT" de l'archive dans arduino, ouvrez le moniteur de port, définissez les paramètres de retour chariot "CR&NL" et entrez ce qui suit:
AT+BAUD4 ( 9600 (, )
AT - "". ,
:
|
AT+NAME |
AT+NAME? |
|
AT+PSWD |
AT+PSWD? |
|
AT+NAME= |
AT+NAMEname |
|
AT+PSWD:"9999" |
AT+PINpass |
arduino bluetooth RX TX.
! bluetooth RX TX . !
, . ( ), .
"Serial Bluetooth Terminal". , "" .
"Send" "Newline" "CR" ( ). - .
, , , :
;
;
;
.
, - .
# "functions", "LedColor()"
if (time.Hours == 13 && time.weekday != 0 && time.weekday != 6) { //
ledColor = GREEN;
}
else if (time.Hours == 12 && time.minutes >= 40 ) { //
ledColor = LIME;
}
, 13:00 14:00. ( ). , 20 , .
- .
else if (time.weekday != 5 && (time.Hours == (endWorkHours - 1) && time.minutes >= endWorkMinutes) || time.Hours == endWorkHours && time.minutes < endWorkMinutes) {
ledColor = OLIVE; // ( )
}
( - ).
"startWorkHours" "endWorkHours" EEPROM ( ) ( Bluetooth).
, ( ) - , - , - .
info
- .
setdate
- . . - 5 . , , , ( = 0, = 1...).
settime
- . , , - 5 . , .
demo
- ( ).
check
- . ,
setworktimes
- ( ) . - 5 . , ( ). 1 .
setbright
- . , . . 5.
. , , .
( 29 31 ) , 10 .
.
:
- , ;
- , . 210 ( - 256).
- , - , 30 ( max_bright
).
, . , , , .
En conclusion, je tiens à ajouter que je ne prétends pas être la beauté ou l'exactitude absolue de l'écriture du code: n'importe qui peut le modifier à sa discrétion.
Il me suffit que l'horloge fonctionne sans geler, change la luminosité et la couleur sans geler (dans la version précédente du firmware, il y a eu des incidents et les fonctions ont été réécrites à partir de zéro).
Les restrictions actuelles, les interruptions et même les économies d'énergie - tout cela, bien sûr, peut être mis en œuvre, il suffit de se poser la question: pourquoi tout cela dans ce projet particulier?
C'est juste une montre.