0

我正在做一个需要 5 个力传感器的项目。我在串行监视器上显示读数没有问题,但我在 LCD 上做同样的事情时遇到了麻烦。谁能帮我编写在 16x2 LCD 上连续显示来自 5 个力传感器的读数的代码?编辑:我已经发布了我的代码谢谢

    int fsrVoltage;     // the analog reading converted to voltage
    int fsrVoltage1; 
    unsigned long fsrResistance;  // The voltage converted to resistance, can be very                   big so make "long"
    unsigned long fsrResistance1;
    unsigned long fsrConductance;
    unsigned long fsrConductance1; 
    long fsrForce;       // Finally, the resistance converted to force
    long fsrForce1;   

    #include <Wire.h>
    #include <Adafruit_MCP23017.h>
    #include <Adafruit_RGBLCDShield.h>

    Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
    void setup()
    {

    lcd.begin(16, 2);

    Serial.begin(9600);

    }

    void loop()
    {


    int force = analogRead(A0);
    int force1 = analogRead(A1);

    fsrVoltage = map(force, 0, 1023, 0, 5000);

// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
// so FSR = ((Vcc - V) * R) / V        yay math!
fsrResistance = 5000 - fsrVoltage;     // fsrVoltage is in millivolts so 5V = 5000mV
fsrResistance *= 10000;                // 10K resistor
fsrResistance /= fsrVoltage; 
fsrConductance = 1000000;           // we measure in micromhos so 
fsrConductance /= fsrResistance;

    fsrVoltage1 = map(force1, 0, 1023, 0, 5000);

// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
// so FSR = ((Vcc - V) * R) / V        yay math!
fsrResistance1 = 5000 - fsrVoltage1;     // fsrVoltage is in millivolts so 5V = 5000mV
fsrResistance1 *= 10000;                // 10K resistor
fsrResistance1 /= fsrVoltage1;
fsrConductance1 = 1000000;           // we measure in micromhos so 
fsrConductance1 /= fsrResistance1;



// Use the two FSR guide graphs to approximate the force
if (fsrConductance <= 1000) 
{
  fsrForce = fsrConductance / 80;
    lcd.setCursor(0, 0);
  lcd.print("Force for 1st FSR: ");
  lcd.setCursor(0, 1);
  lcd.print(fsrForce,DEC);      
} else 
{
  fsrForce = fsrConductance - 1000;
  fsrForce /= 30;
  lcd.setCursor(0, 0);
  lcd.print("Force for 1st FSR: ");
  lcd.setCursor(0, 1);
  lcd.print(fsrForce,DEC);    
}
delay(5000);

if (fsrConductance1 <= 1000) 
{
  fsrForce1 = fsrConductance1 / 80;
  lcd.setCursor(0, 0);
  lcd.print("Force for 2nd FSR: ");
  lcd.setCursor(0, 1);
  lcd.print(fsrForce1,DEC);      
} 
else 
{
  fsrForce1 = fsrConductance1 - 1000;
  fsrForce1 /= 30;
  lcd.setCursor(0, 0);
  lcd.print("Force for 2nd FSR: ");
  lcd.setCursor(0, 1);
  lcd.print(fsrForce1,DEC);     
}
    delay(200);
      }
4

1 回答 1

0

I guess your issue is related with the LCD. You can start here: http://arduino.cc/en/Tutorial/LiquidCrystal

If you need more help you should add more information.

于 2013-11-24T20:00:17.257 回答