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
  Probleme beim Hochladen eines Sketches Thandor 8 492 08.06.2018 13:19
Letzter Beitrag: Thandor
  Arduin Radio Head Library driver Probleme gandalf7588 3 485 08.04.2018 13:05
Letzter Beitrag: gandalf7588
  Probleme mit multiplexing Thor Wallhall 55 3.897 18.03.2018 18:06
Letzter Beitrag: Tommy56
  Treppenbeleuchtung Probleme mit LED Anzahl Cellman 1 318 18.03.2018 10:13
Letzter Beitrag: hotsystems
  Probleme mit Scheduler Arduino DUE juergen001 5 516 15.03.2018 11:44
Letzter Beitrag: juergen001
  Probleme mit DS3231 Geeros#18 6 581 26.02.2018 14:09
Letzter Beitrag: Tommy56
  Probleme mit der Software Thor Wallhall 8 947 31.12.2017 11:34
Letzter Beitrag: Tommy56
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 17 4.804 30.12.2017 00:40
Letzter Beitrag: koma1965
  Probleme Serieller Kommunikation Arduino Nextero 13 949 12.12.2017 16:47
Letzter Beitrag: hotsystems
  Interrupt und I2C gibt das Probleme? Badger1875 5 809 03.10.2017 23:26
Letzter Beitrag: GuaAck

Gehe zu:


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