Arduino UNO、1602ディスプレイ(およびi2cアダプター)、BMP180圧力センサーが必要です。 写真の品質には申し訳ありませんが、それは何ですか。

ディスプレイはi2cアダプターを介して接続されています。 十分な連絡先がありませんでした。 標準ライブラリでは、追加のキャラクターを接続することは少し異なりますが、意味は明確でなければなりません。
圧力センサーもプロジェクトの理由で選択されていますが、任意のプロセスのグラフを作成することもできます。 グラフの場合、1行に16文字があり、それらすべてを使用できます(写真のように)が、グラフをわかりやすくするために、最初の文字を署名に使用し、13文字にします。 2時間ごとに測定値を表示します。
残りはコード内のコメントです。
#include <Wire.h> #include <SPI.h> #include <LiquidCrystal_I2C.h> // LCD i2c LiquidCrystal_I2C lcd(0x3F,16,2); // i2c // #if defined(ARDUINO) && ARDUINO >= 100 #define printByte(args) write(args); #else #define printByte(args) print(args,BYTE); #endif // , . uint8_t graf0[8] = {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}; uint8_t graf1[8] = {B00000, B11111, B11111, B11111, B11111, B11111, B11111}; uint8_t graf2[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111}; uint8_t graf3[8] = {B00000, B00000, B00000, B11111, B11111, B11111, B11111}; uint8_t graf4[8] = {B00000, B00000, B00000, B00000, B11111, B11111, B11111}; uint8_t graf5[8] = {B00000, B00000, B00000, B00000, B00000, B11111, B11111}; uint8_t graf6[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11111}; uint8_t graf7[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000}; // int stat[2][25]; // 2 , ( ) //int stat[0]; // //int stat[1]; // #include <BMP085.h> BMP085 dps = BMP085(); // long Pressure = 0; void setup(void) { lcd.init(); lcd.backlight(); // lcd.createChar(0, graf0);// . lcd.createChar(1, graf1); lcd.createChar(2, graf2); lcd.createChar(3, graf3); lcd.createChar(4, graf4); lcd.createChar(5, graf5); lcd.createChar(6, graf6); lcd.createChar(7, graf7); }
1時間に1回、圧力センサーの値と時間を読み取り、配列を埋めます。 グラフプロット関数を呼び出します。 例が煩雑にならないように、コードの表示の最初の行の現在の値を削除しました。
void loop(void) { if (((millis()/3600000)-stat[1][23]) >= 1.0)
相対グラフを作成して、値が収まる間隔を計算します。 1つの表示セルの8行しか使用できないため、間隔を8つの間隔に分割します。
int interval(int x) { int maxy = -5000; int inty = 0; int minx = minimum(x); for (int k = 0; k <= 24; k++) { if (stat[1][k] != 0) {
間隔を計算するとき、配列の最小値が必要です。
int minimum(int d) { minx = 32767; for (int i = 0; i <= 24; i++) { if (stat[1][i] != 0) {
グラフ自体を作成します。時間配列に値がない場合は、ダッシュを出力します。 関数呼び出しは、配列から異なるグラフを作成するために複雑です。 最初の数字は配列の番号、次にデータサンプリングの頻度、配列の初期値です。 最初の配列(0)を取得し、2番目ごとの値(2)を取得し、先頭から開始します(0):
void grafik(int x, int y, int z) { lcd.setCursor(0, 1); lcd.print("Dav");