Bar grafiek

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 9
Geregistreerd: 29 Aug 2014, 20:26

Bar grafiek

Berichtdoor chofie12 » 02 Mrt 2015, 20:49

Misschien kan het beter maar hier is een klein afgerond projectje van mij.

code:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

byte bk5[8]={B11111,B11111,B11111,B11111,B11111,B11111,B11111,B11111};
byte bk4[8]={B11110,B11110,B11110,B11110,B11110,B11110,B11110,B11110};
byte bk3[8]={B11100,B11100,B11100,B11100,B11100,B11100,B11100,B11100};
byte bk2[8]={B11000,B11000,B11000,B11000,B11000,B11000,B11000,B11000};
byte bk1[8]={B10000,B10000,B10000,B10000,B10000,B10000,B10000,B10000};
byte bk0[8]={B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000};


float temp;
int tempPin = 0;


void setup() {
Wire.begin(); // Join i2c bus
Serial.begin(9600); // Start serial for output

lcd.begin(20,4);
lcd.clear();
lcd.createChar(0,bk0);
lcd.createChar(1,bk1);
lcd.createChar(2,bk2);
lcd.createChar(3,bk3);
lcd.createChar(4,bk4);
lcd.createChar(5,bk5);

lcd.setCursor (0,0);
lcd.print("Temperatuur = ");
lcd.setCursor(19,0);
lcd.print("C");

lcd.setCursor (0,3);
lcd.print("0");
lcd.setCursor(17,3);
lcd.print("100");

draw_bargraph(0);

}

void loop() {
temp = ((analogRead(tempPin)*5.0*100)/1023);
lcd.setCursor (13,0);
lcd.print(temp);



/* Geeft aan of de waarde is veranderd */
byte changed = true;

/* Als de waarde is veranderd */
if(changed) {

/* Teken nieuwe staafdiagram*/
draw_bargraph(temp);

delay(500);
}
}


/* Het tekenen van een staafdiagram functie */
void draw_bargraph(byte temp) {
byte i, cp, cl;

/* Geeft de nieuwe waarde*/
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print(" % ");
lcd.setCursor (0,3);
lcd.print("0");
lcd.setCursor(17,3);
lcd.print("100");

/* Verplaatst de cursor */
lcd.setCursor(0, 2);

/* Map percent de (0 ~ 100) vers (0 ~ 80) ( 1 char = 5 colonnes, 16 * 5 = 80) */
temp = map(temp, 0, 100, 0, 100);

/* Berekening van het aantal volle dozen en het aantal kolommen in het laatste vak */
cp = temp / 5;
cl = temp % 5;

/* Teken de gevulde dozen */
for(i = 0; i < cp; ++i)
lcd.write(5);

/* Teken de laatste doos */
lcd.write(cl);

/* Teken de resterende blanks */
for(i = 0; i < 19 - (cp + (cl ? 1 : 0)); ++i)
lcd.write(byte(0));
}


veel plezier

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Bar grafiek

Berichtdoor nicoverduin » 02 Mrt 2015, 21:10

Als je het nu de volgende keer ook nog eens tussen [ code2=cpp ] en [ /code2 ] (en dan beide zonder de spaties) zet ziet het er ook nog mooier uit:
cpp code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity

byte bk5[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 };
byte bk4[8] = { B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110 };
byte bk3[8] = { B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100 };
byte bk2[8] = { B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000 };
byte bk1[8] = { B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000 };
byte bk0[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000 };

float temp;
int tempPin = 0;

void setup() {
Wire.begin(); // Join i2c bus
Serial.begin(9600); // Start serial for output

lcd.begin(20, 4);
lcd.clear();
lcd.createChar(0, bk0);
lcd.createChar(1, bk1);
lcd.createChar(2, bk2);
lcd.createChar(3, bk3);
lcd.createChar(4, bk4);
lcd.createChar(5, bk5);

lcd.setCursor(0, 0);
lcd.print("Temperatuur = ");
lcd.setCursor(19, 0);
lcd.print("C");

lcd.setCursor(0, 3);
lcd.print("0");
lcd.setCursor(17, 3);
lcd.print("100");

draw_bargraph(0);

}

void loop() {
temp = ((analogRead(tempPin) * 5.0 * 100) / 1023);
lcd.setCursor(13, 0);
lcd.print(temp);

/* Geeft aan of de waarde is veranderd */
byte changed = true;

/* Als de waarde is veranderd */
if (changed) {

/* Teken nieuwe staafdiagram*/
draw_bargraph(temp);

delay(500);
}
}

/* Het tekenen van een staafdiagram functie */
void draw_bargraph(byte temp) {
byte i, cp, cl;

/* Geeft de nieuwe waarde*/
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print(" % ");
lcd.setCursor(0, 3);
lcd.print("0");
lcd.setCursor(17, 3);
lcd.print("100");

/* Verplaatst de cursor */
lcd.setCursor(0, 2);

/* Map percent de (0 ~ 100) vers (0 ~ 80) ( 1 char = 5 colonnes, 16 * 5 = 80) */
temp = map(temp, 0, 100, 0, 100);

/* Berekening van het aantal volle dozen en het aantal kolommen in het laatste vak */
cp = temp / 5;
cl = temp % 5;

/* Teken de gevulde dozen */
for (i = 0; i < cp; ++i)
lcd.write(5);

/* Teken de laatste doos */
lcd.write(cl);

/* Teken de resterende blanks */
for (i = 0; i < 19 - (cp + (cl ? 1 : 0)); ++i)
lcd.write(byte(0));
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Bar grafiek

Berichtdoor Rudi » 02 Mrt 2015, 21:12

Wanneer je (de TS) de volgende keer iets klakkeloos kopieert kan je beter eens checken op mogelijke vertaalfouten.
"une case" is in dit geval "een vak" of vrijer vertaald "een blokje" en geen doos :roll:
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 97
Geregistreerd: 05 Nov 2014, 22:04

Re: Bar grafiek

Berichtdoor MarcelK » 02 Mrt 2015, 21:35

Rudi schreef:Wanneer je (de TS) de volgende keer iets klakkeloos kopieert kan je beter eens checken op mogelijke vertaalfouten.
"une case" is in dit geval "een vak" of vrijer vertaald "een blokje" en geen doos :roll:

Ach, beter goed gekopieert dan slecht gemaakt ;)

Berichten: 9
Geregistreerd: 29 Aug 2014, 20:26

Re: Bar grafiek

Berichtdoor chofie12 » 02 Mrt 2015, 22:51

Klopt, wel zaken gekopieerd maar de code van de maker werkte voor mijn niet dus her en der aan gesleuteld.
ik zal de volgende keer er aan denken.
nu nog eens kijken of ik de rotery encoder aan de praat krijg om eventueel een SP aan te geven.

bedankt voor de support

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten