Arduino ile LCD Uygulaması I2C arayüzü

Proje adı: Arduino ile LCD Uygulaması I2C arayüzü

Keşfedin: LCD ekranlar, anahtar / büyük / küçük harf ifadeleri, rastgele ()

Ekler: kütüphaneleri Yükle  

kod2:

#include <LCD.h>
#include <LiquidCrystal_I2C.h>
// initialise the LCD1602 I2C:
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int switchPin = 6;
int switchState = 0;
int prevSwitchState = 0;
int reply;

void setup() {
lcd.begin(16, 2);
pinMode(switchPin,INPUT);
lcd.print("Ask the");
lcd.setCursor(0, 1);
lcd.print("Crystal Ball!");
}
void loop() {
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState) {
if (switchState == LOW) {
reply = random(8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The ball says:");
lcd.setCursor(0, 1);
switch(reply){
case 0:
lcd.print("Yes");
break;
case 1:
lcd.print("Most likely");
break;
case 2:
lcd.print("Certainly");
break;
case 3:
lcd.print("Outlook good");
break;
case 4:
lcd.print("Unsure");
break;
case 5:
lcd.print("Ask again");
break;
case 6:
lcd.print("Doubtful");
break;
case 7:
lcd.print("No");
break;
}
}
}
prevSwitchState = switchState;
}

kod1 :

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int switchPin = 6;
int switchState = 0;
int prevSwitchState = 0;
int reply;

void setup() {
lcd.begin(16, 2);
pinMode(switchPin,INPUT);
lcd.print(“Ask the”);
lcd.setCursor(0, 1);
lcd.print(“Crystal Ball!”);
}
void loop() {
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState) {
if (switchState == LOW) {
reply = random(8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“The ball says:”);
lcd.setCursor(0, 1);
switch(reply){
case 0:
lcd.print(“Yes”);
break;
case 1:
lcd.print(“Most likely”);
break;
case 2:
lcd.print(“Certainly”);
break;
case 3:
lcd.print(“Outlook good”);
break;
case 4:
lcd.print(“Unsure”);
break;
case 5:
lcd.print(“Ask again”);
break;
case 6:
lcd.print(“Doubtful”);
break;
case 7:
lcd.print(“No”);
break;
}
}
}
prevSwitchState = switchState;
}

Bu projede şu parçalara ihtiyacınız vardı:

1.Aruduino Uno R3 (Arduino’nun diğer sürümünü de kullanabilirsiniz)

2. atlama kabloları

3. Eğim anahtarı 1 adet

4. LCD ekran veya LCD1602 I2C modülü (aşağıdaki bağlantılara ve taslağa bakın)

5. Potansiyometre

6. Direnç 2 adet (1 adet 10 kOm ve 1 adet 220 Om)

7. Breadboard yarım boyutu

8. Arduino IDE (siz indirebilirsiniz burada  )

GENEL

Kristal toplar geleceği “tahmin etmeye” yardımcı olabilir. Her şeyi bilen topa bir soru sorarsınız ve bir cevabı ortaya çıkarmak için ters çevirirsiniz. Cevaplar önceden belirlenecektir, ancak istediğiniz her şeyi yazabilirsiniz. Toplam 8 yanıt arasından seçim yapmak için Arduino’nuzu kullanacaksınız. Kitinizdeki eğim anahtarı, cevaplar için topu sallayarak hareketin çoğaltılmasına yardımcı olacaktır. LCD, alfasayısal karakterleri görüntülemek için kullanılabilir. Kitinizdeki, toplam 32 karakter için 16 sütun ve 2 satır içerir. Kartta çok sayıda bağlantı var. Bu pimler güç ve iletişim için kullanılır, bu yüzden ekranda ne yazacağını bilir, ancak hepsini bağlamanız gerekmez. Bağlamanız gereken pimler için aşağıdaki resme bakın. LCD ekranda projede kullanılan pimler ve etiketler.

DEVRE

Devre aşırı karmaşık değil, ancak çok fazla kablo var. Doğru olduğundan emin olmak için her şeyi kablolarken dikkatli olun. Gücü ve toprağı breadboard’unuzun bir tarafına bağlayın. Eğim anahtarını breadboard üzerine yerleştirin ve bir ucu 5V’a takın. Diğer tarafı 10 kilohm’luk bir dirençle ve Arduino’nuzun pimine 6 bağlayın. Bunu, diğer birçok projede yaptığınız gibi, dijital bir giriş olarak bağlıyorsunuz. Kayıt seçme (RS) pimi, karakterlerin ekranda nerede görüneceğini kontrol eder. Okuma / yazma pimi (R / W) ekranı okuma veya yazma moduna geçirir. Bu projede yazma modunu kullanacaksınız. Enable (EN) LCD’ye bir komut alacağını bildirir. Veri pinleri (D0-D7) ekrana karakter verisi göndermek için kullanılır. Bunlardan yalnızca 4 tanesini kullanacaksınız (D4-D7). En sonunda, ekranın kontrastını ayarlamak için bir bağlantı var. Bunu kontrol etmek için bir potansiyometre kullanacaksınız. Arduino yazılımı ile birlikte gelen LiquidCrystal kütüphanesi, bu pinlerin tüm yazılarını işler ve karakterleri görüntülemek için yazılım yazma işlemini basitleştirir. LCD’nin iki dış piminin (Vss ve LED-) toprağa bağlanması gerekir. Ayrıca, R / W pimini toprağa bağlayın. Bu, ekranı yazma moduna geçirir. LCD güç kaynağı (Vcc) doğrudan 5V’a bağlanmalıdır. Ekrandaki LED + pim, 220 ohm’luk bir direnç üzerinden güce bağlanır. Bağlayın: Arduino Dijital pin 2 – LCD D7, Arduino Dijital pin 3 – LCD D6, Arduino Dijital pin 4 – LCD D5, Arduino Dijital pin 5 – LCD D4. Bunlar ekrana hangi karakterin görüntüleneceğini söyleyen veri iğneleridir. Ekrandaki EN’yi Arduino’nuzdaki 11 pinine bağlayın. LCD üzerindeki RS pim 12’ye bağlanır. Bu pim LCD’ye yazmayı sağlar. Potansiyometreyi bir uç pimini güce, diğerini de toprağa bağlayarak breadboard’a yerleştirin. Orta pim LCD’deki V0’a bağlanmalıdır. Bu, ekranın kontrastını değiştirmenize izin verecektir.

THE CODE
First, you’ll need to import the LiquidCrystal library. Next, you’ll initialize the library, somewhat similar to the way you did with the Servo library, telling it what pins it will be using to communicate
Now that you’ve set up the library, it’s time to create some variables and constants. Create a constant to hold the pin of the switch pin, a variable for the current state of the switch, a
variable for the previous state of the switch, and one more to choose which reply the screen will show. Set up the switch pin as an input with pinMode() in your setup(). Start the LCD library, and tell it how large the screen is. Now it’s time to write a small introductory screen welcoming you to the 8-ball. The print() function writes to the LCD screen. You’re going to write the words “Ask the” on the top line of the screen. The cursor is automatically at the beginning of the top line.
In order to write to the next line, you’ll have to tell the screen where to move the cursor. The coordinates of the first column on the second line are 0,1 (recall that computers are zero indexed.
0,0 is the first column of the first row). Use the function lcd. setCursor() to move the cursor to the proper place, and tell it to write “Crystal ball!”. Now, when you start the program, it will say “Ask the Crystal ball!” on your screen. In the loop(), you’re going to check the switch first, and put the value in the switchState variable. Use an if() statement to determine if the switch is in a different
position than it was previously. If it is different than it was before, and it is currently LOW, then it’s time to choose a random reply. The random() function returns a number based on the
argument you provide it. To start, you’ll have a total number of 8 different responses for the ball. Whenever the statement random(8) is called, it will give a number between 0-7. Store that
number in your reply variable.
LCD library reference: http://arduino.cc/lcdlibrary
Random reference: http://arduino.cc/random
Clear the screen with the function lcd.clear(). This also moves the cursor back to location 0,0; the first column in the first row of the LCD. Print out the line “The ball says:” and move the cursor for the output.
The switch() statement executes different pieces of code depending on the value you give it. Each of these different pieces of code is called a case. switch() checks the value of the variable reply; whatever value reply holds will determine what named case statement is executed. Inside the case statements, the code will be the same, but the messages will be different. For example, in case 0 the code says lcd.print (“Yes”). Afer the lcd.print() function, there’s another command: break. It tells the Arduino where the end of the case is. When it hits break, it skips to the end of the switch statement. You’ll be creating a total of 8 case statements to start out. Four of the responses will be positive, 2 will be negative, and the final 2 will ask you to try again.
Loop () öğesinde yapılacak son şey, prevSwitchState değişkenine switchState değerini atamaktır. Bu, döngü bir sonraki çalıştırıldığında anahtardaki değişiklikleri izlemenizi sağlar.

KOD

İlk olarak, LiquidCrystal kütüphanesini içe aktarmanız gerekir . Daha sonra, Servo kütüphanesinde yaptığınız gibi, kütüphaneyi başlatmak için iletişim kurmak için hangi pinleri kullanacağını söyleyeceksiniz. Şimdi kitaplığı kurduğunuza göre, bazı değişkenler ve sabitler oluşturma zamanı. Anahtar piminin pimini tutmak için bir sabit, anahtarın mevcut durumu için bir değişken, anahtarın önceki durumu için değişken ve ekranın hangi cevabın gösterileceğini seçmek için bir tane daha oluşturun. İle girdi olarak anahtar pimini kurma pinMode () sizin içinde kurulum () . LCD kitaplığını başlatın ve ekranın ne kadar büyük olduğunu söyleyin. Şimdi sizi 8 topa davet eden küçük bir tanıtım ekranı yazmanın zamanı geldi. Baskı ()işlevi LCD ekrana yazar. Ekranın üst satırına “Sor” kelimesini yazacaksınız. İmleç otomatik olarak üst satırın başlangıcındadır.Sonraki satıra yazmak için ekrana imleci nereye hareket ettireceğini söylemeniz gerekir. İkinci satırdaki ilk sütunun koordinatları 0,1’dir (bilgisayarların sıfır indekslendiğini hatırlayın. 0,0 ilk satırın ilk sütunu). Lcd fonksiyonunu kullanın . setCursor () ile imleci doğru yere getirin ve “Crystal ball!” yazmasını söyleyin. Şimdi, programı başlattığınızda, ekranda “Kristal topa sorun!” Yazacaktır. In döngü () , önce anahtarı kontrol edin ve switchState değişkendeki değeri koymak için gidiyoruz. Bir if () kullanınanahtarın öncekinden farklı bir konumda olup olmadığını belirleme ifadesi. Öncekinden farklıysa ve şu anda DÜŞÜK ise, rastgele bir yanıt seçme zamanı gelmiştir. Rasgele () işlevi, bunu sağlamak theargument dayalı bir sayıyı döndürür. Başlamak için, top için toplam 8 farklı yanıtınız olacaktır. Random (8) ifadesi her çağrıldığında 0-7 arasında bir sayı verecektir. Bu sayıyı yanıt değişkeninizde saklayın.

LCD kütüphanesi referansı: http://arduino.cc/lcdlibrary

Rastgele referans: http://arduino.cc/random

Ekranı lcd.clear () işleviyle temizleyin . Bu ayrıca imleci 0,0 konumuna geri taşır; LCD’nin ilk satırındaki ilk sütun. “Top şöyle diyor:” satırını yazdırın ve çıktı için imleci hareket ettirin. Switch () ifadesi, verdiğiniz değere bağlı olarak farklı kod parçalarını çalıştırır. Bu farklı kod parçalarının her birine durum denir. switch () değişken cevabın değerini kontrol eder; yanıtın sahip olduğu her değer, adlandırılmış vaka ifadesinin yürütüleceğini belirler. Vaka ifadelerinin içinde kod aynı olacaktır, ancak mesajlar farklı olacaktır. Örneğin, 0 durumunda kod lcd.print (“Evet”) der . Afer lcd.print ()işlevinde başka bir komut daha vardır: break. Arduino’ya davanın sonunun nerede olduğunu söyler. Araya çarptığında, anahtar ifadesinin sonuna atlar. Başlamak için toplam 8 vaka ifadesi oluşturacaksınız. Yanıtların Dört 2 negatif olacaktır, pozitif olacak ve nihai 2 sizin yapmak again.The son şey denemek isteyecektir () döngü atamaktır switchState değişkene ‘ın değerini prevSwitchState . Bu, döngü bir sonraki çalıştırıldığında anahtardaki değişiklikleri izlemenizi sağlar.

BAŞLANGIÇ

Sihirli topu kullanmak için Arduino’ya güç ver. “Kristal topa sorun!” Yazdığından emin olmak için ekranı kontrol edin. Karakterleri göremiyorsanız, potansiyometreyi çevirmeyi deneyin. Ekranın kontrastını ayarlayacaktır. Kristal topunuzla ilgili bir soru sorun ve düğmeyi baş aşağı ve geriye yatırmayı deneyin. Sorunuza bir cevap almalısınız. Cevap size uygun değilse, tekrar sorun. Print () ifadelerine kendi sözlerinizi eklemeyi deneyin , ancak her satırda yalnızca 16 karakter kullanıldığına dikkat edin. Ayrıca daha fazla yanıt eklemeyi de deneyebilirsiniz. Ek anahtar durumları eklediğinizde, yanıt değişkenini rastgele dolduracak seçenek sayısını ayarladığınızdan emin olun.

LCD’ler, polarize cam arasına sıkıştırılmış bir sıvının elektriksel özelliklerini değiştirerek çalışır. Cam sadece belirli ışık türlerinin geçmesine izin verir. Cam arasındaki sıvı doldurulduğunda, yarı katı bir duruma dönüşmeye başlar. Bu yeni durum, polarize camdan farklı bir yönde ilerler, ışığın geçmesini engeller, böylece ekranda gördüğünüz karakterleri oluşturur.

LCD ekranın metnini değiştirmek için burada yer alan işlevler oldukça basittir. Nasıl çalıştığını ele aldığınızda, kütüphanenin sahip olduğu diğer bazı işlevlere bakın. Kaydırmak veya sürekli güncellemek için metin almayı deneyin. LiquidCrystal kütüphanesinin nasıl çalıştığı hakkında daha fazla bilgi için şu adresi ziyaret edin: http://arduino.cc/lcd .

LCD ekran, LiquidCrystal kütüphanesini kullanarak ekranda metin göstermenizi sağlar. Switch … case ifadeleri, bir değişkeni belirtilen değerlerle karşılaştırarak program akışını kontrol eder.

İLAVE

LCD 1602 I2C modülünüz varsa:

KOD :

#include <LCD.h>
#include <LiquidCrystal_I2C.h>
// initialise the LCD1602 I2C:
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int switchPin = 6;
int switchState = 0;
int prevSwitchState = 0;
int reply;

void setup() {
lcd.begin(16, 2);
pinMode(switchPin,INPUT);
lcd.print("Ask the");
lcd.setCursor(0, 1);
lcd.print("Crystal Ball!");
}
void loop() {
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState) {
if (switchState == LOW) {
reply = random(8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The ball says:");
lcd.setCursor(0, 1);
switch(reply){
case 0:
lcd.print("Yes");
break;
case 1:
lcd.print("Most likely");
break;
case 2:
lcd.print("Certainly");
break;
case 3:
lcd.print("Outlook good");
break;
case 4:
lcd.print("Unsure");
break;
case 5:
lcd.print("Ask again");
break;
case 6:
lcd.print("Doubtful");
break;
case 7:
lcd.print("No");
break;
}
}
}
prevSwitchState = switchState;
}
Posted in Makaleler.