パート3。ファームウェア、構成、および作業アルゴリズム
プロジェクトのアーカイブでは、完成したファームウェア、使用されているライブラリ、および元のプロジェクトの記事を収集しました(残念ながら、現在はオンラインで入手できません)。さらに、I2Cバス用のスキャナーもあります(クロックモジュールまたは光センサーが非標準アドレスを使用する場合)。
注意
注意!AlexGyverによって作成された「MicroLED」ライブラリが更新されました(この記事の執筆時点で、バージョン3まで)。ただし、リボンの色を指定するためのアルゴリズムが変更されているため、更新されたバージョンではファームウェアが壊れています 。
更新されたバージョンでは、このプロジェクトで使用されていない関数が追加されており、コードを書き直さないとライブラリを更新できません。
フラッシュする前に、bluetoothモジュールを設定することをお勧めします。つまり、名前とパスワードを設定し、ポートのボーレートも確認します。
デフォルト設定(パスワード1234または0000)のままにしておくことができ、名前もデフォルトになります。
このプロジェクトと別のプロジェクトに取り組む過程で、2つのbluetoothモジュール(もちろん、アジアの友人から購入したもの)を手に入れましたが、そのモデルを確立することはできませんでした。また、手元にあった時期が異なり、見た目も比較できませんでした。ただし、設定の詳細は異なります(HC-05とHC-06だったと思います)。
したがって、最初に次のようにbluetoothモジュールとarduinoを接続する必要があります。
Arduino |
ブルートゥース |
ピン2 |
TX |
ピン3 |
処方箋 |
5V |
VCC |
GND |
GND |
いくつかの記事では、抵抗を使用した接続スキームがありますが、これはすべて不要です。モジュールは、指定されたスケッチを介したATコマンドによって構成されます。
次に、アーカイブからarduinoに「BluetoothAT」スケッチを入力し、ポートモニターを開き、「CR&NL」キャリッジリターン設定を設定して、次のように入力します。
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
).
, . , , , .
結論として、私はコードを書くことの美しさや絶対的な正しさを装っていないことを付け加えたいと思います。誰でも自分の裁量でそれを変更することができます。
時計がフリーズせずに動作し、フリーズせずに明るさと色が変わる(以前のバージョンのファームウェアでインシデントが発生し、機能が最初から書き直された)だけで十分です。
現在の制限、中断、さらには省エネさえも-もちろん、これらすべてを実装することができます。質問をする必要があるのは1人だけです。この特定のプロジェクトでこれがすべてなのはなぜですか。
ただの時計です。