2013-11-24 1 views
0

5 개의 힘 센서가 필요한 프로젝트를하고 있습니다. 직렬 모니터에서 판독 값을 표시하는 데 문제가 없지만 LCD에서 동일한 작업을 수행하는 데 문제가 있습니다. 누구나 16x2 LCD에서 연속적으로 5 개의 힘 센서로부터 판독 값을 표시하는 코드를 도와 줄 수 있습니까? 편집 : 내 코드 감사를 게시했습니다.Arduino Uno로 5 개의 힘 센서를 LCD에 표시하는 방법

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); 
     } 
+0

코드를 게시하고 인쇄해야하는 변수를 강조 표시하십시오. 그렇지 않으면 지원을 시작할 위치를 알 수 없습니다. – FeliceM

답변

관련 문제