Bar grafiek
5 berichten
• Pagina 1 van 1
Bar grafiek
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Bar grafiek
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
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));
}
Re: Bar grafiek
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
"une case" is in dit geval "een vak" of vrijer vertaald "een blokje" en geen doos
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: Bar grafiek
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
Ach, beter goed gekopieert dan slecht gemaakt
Re: Bar grafiek
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
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
5 berichten
• Pagina 1 van 1
Terug naar Afgeronde projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 17 gasten