Problemer med LCD display (Læst 1521x)

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Problemer med LCD display
« Dato: Februar 04, 2014, 14:09:26 »
Kan ikke se hvad jeg gør forkert, kan få vist hastigheden men der er andre symboler efter hastigende? Hvorfor ?????

Har fået lavet temperatur til at vise rigtigt. Hastigheden vises også rigtigt men vil gerne have symbolerne væk.
Jeg er helt grøn på programmering...
Kode:
#include <Servo.h>
#include <LiquidCrystal.h>

Servo myServo;                                                 // Servo motor 
LiquidCrystal lcd(12,11,5,4,3,2);

int const potPin = A0;                                         // Analog pin hvor der er monteret et potmeter
int potVal;                                                    // Ud læs data fra analog porten 
int angle;                                                     // Hvor servo motoren skal stå 
float voltage, degreesF;
int degreesC; // fjern degreesC fra den oppe over og sæt den ind i int

const int temperaturePin = 1;
const int alarm = 8;

    void setup() 
    {
      myServo.attach(9);                                       // Det er til servomotoren på pin 9 
      Serial.begin(9600);                                      // Til serial komunitation
      pinMode (8,OUTPUT);                                      // Til busser
      {
      lcd.begin(16, 2);      //kolonner og rækker
      lcd.print("Welkommen til ;)");
            
      delay(800);       // Så denn viser det i 5 sek 
      }
      lcd.clear();                                // Stel det derstår oven over
      lcd.setCursor(0,0);
      lcd.print("Km/t:");
      
            
      lcd.setCursor(11,0);  //På linge 2
      lcd.print("Temp:");
     }

void loop() 
    {
          
      potVal = analogRead(potPin);                           // Læs potiometeret posion
        angle = map(potVal, 0, 1023, 0, 200);                 // Nummert fra potionmeter
       myServo.write(angle);                                 // så kan servotoren virke
        
        Serial.print("Km/t :  ");                             //Vis hastigheden
        Serial.print(angle);
        
        lcd.setCursor(0,1);
        lcd.print(angle);
        lcd.write(angle);
        
         if (angle >80)                            // når hatsigheden kommer over 80
      {
      digitalWrite(8,HIGH);
     }
      else
     {
      digitalWrite(8,LOW);
      }
     
    voltage = getVoltage(temperaturePin);
    degreesC = round((voltage - 0.5) * 100);
    //degreesF = degreesC * (9.0/5.0) + 32.0; 
    //Serial.print("voltage: ");
    //Serial.print(voltage);
    Serial.print("   Temp :");
    Serial.println(degreesC);                  //println skriv printLN så skifter den linge
    delay(500);
    
    lcd.setCursor(12,1);    // Så den ved hvor den skal skrive til
    lcd.print(degreesC);      // SÅ kommer det på display
    lcd.setCursor(15,1);    
    lcd.print("C");
        
      }
    float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}

Mange tak for kikket.   :D

 

Offline bws

  • Lavpas filter
  • ****
  • Indlæg: 257
  • Antal brugbare Indlæg: 24
    • Vis profil
Sv: Problemer med LCD display
« Svar #1 Dato: Februar 04, 2014, 16:54:03 »
altså som jeg lige kan så der kunne skabe problemer er at du bruger et kald der hedder map() men denne returnere en long hvor du smider det i en int.

det andet er at du bruger en lcd.write() denne skriver den hex værdi ind i displayet hvor så displayet oversætter det til en ASCII karakter tænkter at du ikke vil gøre det med din variable "angle".

MVH

 

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Sv: Problemer med LCD display
« Svar #2 Dato: Februar 05, 2014, 15:25:25 »
Det hjalp da jeg lage 3*mellem rum ind til min mærkelig symboler..

Så lavet koden sådan her:
Kode:
lcd.setCursor(0,1);                        //Begynd at skrive nederst til venstre
lcd.print("   ");                          //3 mellemrum betyder at den skal slette det som står i den
lcd.setCursor(0,1);                          //Begynd at skrive nederst til venstre