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
  Arduin Radio Head Library driver Probleme gandalf7588 3 396 08.04.2018 13:05
Letzter Beitrag: gandalf7588
  Probleme mit multiplexing Thor Wallhall 55 3.469 18.03.2018 18:06
Letzter Beitrag: Tommy56
  Treppenbeleuchtung Probleme mit LED Anzahl Cellman 1 222 18.03.2018 10:13
Letzter Beitrag: hotsystems
  Probleme mit Scheduler Arduino DUE juergen001 5 397 15.03.2018 11:44
Letzter Beitrag: juergen001
  Probleme mit DS3231 Geeros#18 6 398 26.02.2018 14:09
Letzter Beitrag: Tommy56
  Probleme mit der Software Thor Wallhall 8 723 31.12.2017 11:34
Letzter Beitrag: Tommy56
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 17 4.397 30.12.2017 00:40
Letzter Beitrag: koma1965
  Probleme Serieller Kommunikation Arduino Nextero 13 789 12.12.2017 16:47
Letzter Beitrag: hotsystems
  Interrupt und I2C gibt das Probleme? Badger1875 5 673 03.10.2017 23:26
Letzter Beitrag: GuaAck
Big Grin Probleme mit pgm_read_word NoGi 9 1.941 23.04.2017 10:09
Letzter Beitrag: NoGi

Gehe zu:


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