2

LCD に「Voltage=(sensorValue)」と表示させたいのですが、現時点では、ポテンショメータを回したときにプログラムに値を認識させる唯一の方法は、それをループに入れることです。しかし、ループに入れると、ポテンショメータがどこに設定されているかに応じて、画面全体が 1、2、3、4、または 5 でいっぱいになります。

ループに入っていない場合、ポテンショメータがオンになっている設定が画面に表示され、ポテンショメータがオンになっても変更されません。

"(Voltage=sensoreValue)" を取得できるように、ループの結果をループの外に置くにはどうすればよいですか?

これが私のプログラムです:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  

void setup()
{
    lcd.init();                      
    lcd.backlight();
    int sensorPin = A0;
    int sensorValue = 0;
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    lcd.print("Voltage=");
}

void loop()
{
    int sensorPin = A0;
    int sensorValue = 0;
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    lcd.print(sensorValue);
}
4

2 に答える 2

1

読み取り値を印刷するように要求すると、実行中です - 各読み取り値を印刷しています!

値が変更された場合にのみ印刷したいのではないかと思います

int sensorValue = 0;
int prevValue = 0;

void loop()
{    
    sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    if (sensorValue != prevValue) {
       lcd.print(sensorValue);
       prevValue == sensorValue;
    }
}

または、ディスプレイ lcd.print がサポートしている場合、「n」個のバックスペースを印刷して、新しい値が古い値の上に印刷されるようにすることもできます。

于 2012-04-19T02:53:45.700 に答える
0

print()呼び出されるたびに以前のデータの画面をクリアしているように聞こえます(ただし、ここここで利用できる関連ドキュメントとライブラリコードは不明です)。

この場合Voltage=、センサー値とともにループ内の文字列を印刷する必要があります。コードを次のように変更してみてください。

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  
int sensorPin = A0;

void setup()
{
    lcd.init();                      
    lcd.backlight();
}

void loop()
{
    int sensorValue = 0.004882812 * analogRead(sensorPin) + 1;
    String display = "Voltage=";
    display += sensorValue;
    lcd.print(display);
}
于 2012-04-19T15:51:10.307 に答える