Teil 3. Firmware-, Konfigurations- und Arbeitsalgorithmen
Im Archiv des Projekts habe ich die fertige Firmware, die verwendeten Bibliotheken sowie einen Artikel mit dem Originalprojekt gesammelt (leider ist es jetzt nicht online verfügbar). Darüber hinaus gibt es einen Scanner für den I2C-Bus (falls das Taktmodul oder der Lichtsensor nicht standardmäßige Adressen verwenden).
Beachtung
Beachtung! Die von AlexGyver geschriebene "MicroLED" -Bibliothek hat ein Update erhalten (zum Zeitpunkt dieses Schreibens - bis zu Version 3). Die aktualisierte Version bricht jedoch die Firmware, da die Algorithmen zum Festlegen der Farbbandfarbe geändert wurden.
Die aktualisierte Version fügt Funktionen hinzu, die in diesem Projekt nicht verwendet werden, und Sie können die Bibliothek nicht aktualisieren, ohne den Code neu zu schreiben.
Vor dem Flashen empfehle ich, das Bluetooth-Modul einzurichten, nämlich einen Namen und ein Passwort festzulegen und auch die Port-Baudrate zu überprüfen.
Sie können die Standardeinstellungen (Passwort 1234 oder 0000) beibehalten, der Name ist ebenfalls die Standardeinstellung.
Während ich an diesem und einem anderen Projekt arbeitete, bekam ich zwei Bluetooth-Module in die Hand (die natürlich von unseren asiatischen Freunden gekauft wurden), deren Modell nicht etabliert werden konnte. Außerdem waren sie zu verschiedenen Zeiten in meinen Händen, und ich konnte sie im Aussehen nicht vergleichen. Die Besonderheiten ihrer Einstellungen waren jedoch unterschiedlich (ich glaube, sie waren HC-05 und HC-06).
Zuerst müssen Sie das Bluetooth-Modul und Arduino wie folgt verbinden:
Arduino |
Bluetooth |
Pin 2 |
TX |
Pin 3 |
RX |
5V |
VCC |
GND |
GND |
In einigen Artikeln gibt es Verbindungsschemata mit Widerständen, aber all dies ist überflüssig. Das Modul wird durch AT-Befehle anhand der angegebenen Skizze konfiguriert.
Füllen Sie als Nächstes die "BluetoothAT" -Skizze aus dem Archiv in arduino aus, öffnen Sie den Portmonitor, stellen Sie die Wagenrücklaufeinstellungen "CR & NL" ein und geben Sie Folgendes ein:
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
).
, . , , , .
Abschließend möchte ich hinzufügen, dass ich nicht vorgebe, Schönheit oder absolute Korrektheit beim Schreiben des Codes zu sein: Jeder kann ihn nach eigenem Ermessen ändern.
Es reicht mir, dass die Uhr ohne Einfrieren funktioniert, Helligkeit und Farbe ohne Einfrieren ändert (Vorfälle sind in der vorherigen Version der Firmware aufgetreten und die Funktionen wurden von Grund auf neu geschrieben).
Aktuelle Einschränkungen, Unterbrechungen und sogar Energieeinsparungen - all dies kann natürlich umgesetzt werden, nur man muss sich die Frage stellen: Warum ist das alles in diesem speziellen Projekt?
Es ist nur eine Uhr.