- Katılım
- 17 Eyl 2013
- Mesajlar
- 9,084
- Tepkime puanı
- 23,743
- Yaş
- 62
- Konum
- İstanbul
- Web sitesi
- www.sumeryamaner.com
- İlgi Alanı
- Uçak
Bugün LCD ekran kullanmayı öğrendim.
Tasarladığım alet potansiyometre ile oluşturduğum 0 - 5 V arası gerilimi ölçüp LCD ekrana yazacak ve bir de bar graph oluşturacaktı. Voltaj değeri sürekli oynar korkusuyla sisteme bir de "sakinleştirici" ekledim. Şöyle ki on elemanlı bir değişkende son on voltaj değeri saklanıyor. Her bir ölçümde en eskisi atılıp değerler bir kaydırılıp son okunan değer en sona yazılıyor. Bunların ortalaması alt satırda sağda görülüyor. Yukarıdaki bar graph da bu değere göre hesaplanıyor. Bar graph'da yıldız kullandım. Şimdi karakter tanımlayıp o şekilde deneyeceğim.
NOT: Arada Serial.print komutları var. Onlar debug etmek için kullanıldı.
Tasarladığım alet potansiyometre ile oluşturduğum 0 - 5 V arası gerilimi ölçüp LCD ekrana yazacak ve bir de bar graph oluşturacaktı. Voltaj değeri sürekli oynar korkusuyla sisteme bir de "sakinleştirici" ekledim. Şöyle ki on elemanlı bir değişkende son on voltaj değeri saklanıyor. Her bir ölçümde en eskisi atılıp değerler bir kaydırılıp son okunan değer en sona yazılıyor. Bunların ortalaması alt satırda sağda görülüyor. Yukarıdaki bar graph da bu değere göre hesaplanıyor. Bar graph'da yıldız kullandım. Şimdi karakter tanımlayıp o şekilde deneyeceğim.
Bu VIDEOYU görmek için izniniz yok. Giriş yap veya üye ol
Kod:
// LCD ekran denemesi2
/*
LCD RS digital 12
LCD Enable digital 11
LCD D4 digital 5
LCD D5 digital 4
LCD D6 digital 3
LCD D7 digital 2
LCD R/W 0V
*/
#include <LiquidCrystal.h>
int readpot = 0;
int potpin = 1;
int bar = 0;
float readvolt = 0.0;
float results[10];
float average;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char bargraph[] = " ";
byte block[8] = {B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000,};
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.home();
lcd.createChar(0, block);
}
void loop()
{
lcd.setCursor(0, 1);
readpot = analogRead(potpin);
readvolt = readpot * 5.0 / 1024;
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(readvolt);
lcd.print(" V");
for(int i = 0; i < 9; i++)
{
results[i] = results[i + 1];
}
results[9] = readvolt;
average = 0.0;
for(int i = 0; i < 10; i++)
{
average = average + results[i];
}
average = average / 10;
lcd.setCursor(8, 1);
lcd.print(average);
lcd.print(" V");
bar = (average / 5 * 17);
lcd.home();
for(int i = 0; i < 16; i++)
{
bargraph[i] = ' ';
}
for(int i = 0; i < bar; i++)
{
bargraph[i] = '*';
}
for(int i = 0; i < 16; i++)
{
lcd.print(bargraph[i]);
Serial.print(bargraph[i]);
}
Serial.println(" ");
}
NOT: Arada Serial.print komutları var. Onlar debug etmek için kullanıldı.