INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Probleme mit Bargraph Charakter
29.03.2015, 14:18
Beitrag #1
Probleme mit Bargraph Charakter
Hi Leute,
ich bin gerade an einer Batterieüberwachung dran.
Die Spannungsausgabe mal ausser Acht lassen...sie dient hier nur als Mittel zum zweck, um den Bargraph richtig zu programmieren. Das ganze kommt später in einen anderen Code. Ursprünglich sollte die Auflösung noch viel feiner sein, also 5 Striche pro Balken, aber das hatte nur geflackert.

Nun zu meinem Problem...
Ich möchte keine schnöde Balkenanzeige. Der Bargraph soll unterteilt werden genau so: |----|----|----|----|

Bei 11.85V wird der Charakter "graph1" richt angezeigt. Sobald die Spannung steigt, wird der "graph1" von "graph" überschrieben. Aber warumHuh

Code:
/*
  Voltmeter mit Bargraph
  12V Batteriemonitor 11.8V-12.8V
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>    

LiquidCrystal_I2C lcd(0x27,20,4);

  int analogInput = 1;     //analog pin A1
  float VoltageOut = 0.0;
  float VoltageIn = 0.0;
  int refresh = 50;        //refresh rate
  int i = 0;               //variable used for clearing our byte 'graph'
  int value = 0;           //variable to store value
  
    byte graph1[8] =
    {
      0B10000,
      0B10000,
      0B11111,
      0B11111,
      0B11111,
      0B11111,
      0B10000,
      0B10000,
    };
  
   byte graph[8] =
    {
      0B00000,
      0B00000,
      0B11111,
      0B11111,
      0B11111,
      0B11111,
      0B00000,
      0B00000,
    };
  



void setup()
{
  pinMode(analogInput, INPUT);  //setting analog pin mode to input

  lcd.init();                      
  lcd.backlight();
  lcd.clear();  
  lcd.setCursor(0, 0);            
  lcd.print("Boardnetz=");        



}

void loop(){
  value = analogRead(analogInput);  //reading the value on A1
  VoltageIn = (value * 50) / 1024.0;
  
  lcd.setCursor(14, 0);              
  lcd.print(VoltageIn, 1);
  lcd.print("V ");
  delay(refresh);                    

  voltmetergraph();                  
}

void voltmetergraph()
  {
    if (VoltageIn >= 11.85)        
    {
    lcd.createChar(0, graph1);
    lcd.setCursor(0, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(0);}  
  
   if (VoltageIn >= 11.90)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(1, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(1);}  
  
    if (VoltageIn >= 11.95)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(2, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(2);}
  
    if (VoltageIn >= 12.00)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(3, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(3);}
  
   if (VoltageIn >= 12.05)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(4, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(4);}
  
   if (VoltageIn >= 12.10)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(5, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(5);}
  
   if (VoltageIn >= 12.15)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(6, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(6);}
  
    if (VoltageIn >= 12.20)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(7, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(7);}
  
    if (VoltageIn >= 12.25)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(8, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(8);}
  
   if (VoltageIn >= 12.30)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(9, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(9);}
  
   if (VoltageIn >= 12.35)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(10, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(10);}
  
   if (VoltageIn >= 12.40)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(11, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(11);}
  
   if (VoltageIn >= 12.45)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(12, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(12);}
  
   if (VoltageIn >= 12.50)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(13, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(13);}
  
    if (VoltageIn >= 12.55)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(14, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(14);}
  
    if (VoltageIn >= 12.60)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(15, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(15);}

    if (VoltageIn >= 12.65)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(16, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(16);}
  
   if (VoltageIn >= 12.70)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(17, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(17);}
  
   if (VoltageIn >= 12.75)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(18, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(18);}
  
    if (VoltageIn >= 12.80)
    {
    lcd.createChar(0, graph);
    lcd.setCursor(19, 2);
    lcd.write(byte(0));}
    else {LcdClearByte(19);}
  
    
  }

void LcdClearByte(int c)        //clearbyte function
{
  lcd.setCursor(c,2);
  for (i = 0; i < 20; i = i + 1) {
    lcd.print(" ");
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ArduinoDroid Probleme Brother Tak 1 206 10.09.2016 22:12
Letzter Beitrag: Brother Tak
  Roboter-Bau Probleme blebbens 8 381 12.07.2016 07:35
Letzter Beitrag: Binatone
  Probleme mit sprintf() und dtostrf() GMBU 11 818 22.06.2016 10:52
Letzter Beitrag: GMBU
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 6 983 06.05.2016 18:34
Letzter Beitrag: arduinopeter
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.178 17.04.2016 21:12
Letzter Beitrag: hotsystems
  Probleme beim Auslesen eines IR Empfängers linuxpaul 7 577 06.03.2016 14:44
Letzter Beitrag: hotsystems
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 334 29.02.2016 00:00
Letzter Beitrag: hotsystems
  Probleme beim auswählen des Ports Levi 11 838 21.02.2016 18:00
Letzter Beitrag: hotsystems
  IRemote probleme mit abfrage schnutzkurt 18 1.153 20.02.2016 01:30
Letzter Beitrag: SkobyMobil
  Probleme mit SPI - Ethernet und nRF24L01 itsy 35 2.986 21.11.2015 19:59
Letzter Beitrag: ardu_arne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste