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.
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; }