EsploraTFTHorizon

Arduino Esplora ile TFT ekran için bu çizim, yerleşik ivmeölçerin değerini okur ve ekran boyunca ufka paralel kalan bir çizgi çizer.

Esplora'yı eğdiğinizde, ivmeölçer yönünü dünyanın merkezine bildirir. Bu değerlerin eşlenmesi, çizgiyi ufuk çizgisiyle hizalanmış olarak sallamanıza olanak tanır.

Gerekli Donanım

  • Arduino Esplora
  • Arduino TFT ekran

Devre

TFT ekranını "SD Kart" etiketi yukarı bakacak şekilde Esplora'nızdaki sokete takın.

Kod

Ekranı kullanmak için önce SPI ve TFT kitaplıklarını eklemeniz gerekir. Esplora kütüphanesini de eklemeyi unutmayın.

#include <Esplora.h>
#include <TFT.h>
#include <SPI.h>
[Kodu Al]

Satırın başlangıç ve bitiş noktaları için değişkenlerin yanı sıra loop() aracılığıyla bir önceki kez konumları tutacak değişkenler oluşturun. Bu değerleri, konumu değiştirdiğinde satırları silmek için kullanırsınız.

int yStart = EsploraTFT. yükseklik ( ) / 2 ;
int yEnd = EsploraTFT. yükseklik ( ) / 2 ;

int oldEndY ;
int oldStartY ;

setup() , ekranı başlatın ve ekranın arka planını temizleyin.

void setup ( ) {
EsploraTFT. begin ( ) ;
EsploraTFT. arka plan ( 0 , 0 , 0 ) ;
}

loop() öğesinde, ivmeölçerin x eksenindeki değeri okuyun. Bu, Esplora yüzünüzün önünde, dünyaya dik tutulduğunda ufka doğru yönlendirilmiş eksendir. İvmeölçerdeki değerleri, çizginin başlangıç noktası 0 ile ekranın yüksekliği arasında olacak şekilde eşleyin. Bitiş noktasını bulmak için çıktı değerlerini ters çevirin

void loop ( )
{
int tilt = Esplora. akselerometre ( X_AXIS ) ;

yStart = harita ( eğim , - 100 , 100 , EsploraTFT. yükseklik ( ) , 0 ) ;
yEnd = harita ( eğim , - 100 , 100 , 0 , EsploraTFT. yükseklik ( ) ) ;

Geçerli başlangıç ve bitiş noktalarını, önceki loop() önceki değerlerle karşılaştırın. Farklılarsa, önceden çizilen çizgiyi silin. Ardından, eşlenen değerlere göre çizgiyi yeni konumuna çizin.

if ( oldStartY ! = yStart || oldEndY ! = yEnd ) {
EsploraTFT. inme ( 0 , 0 , 0 ) ;
EsploraTFT. çizgi ( 0 , oldStartY , EsploraTFT. genişlik ( ) , oldEndY ) ;
}

EsploraTFT. inme ( 255 , 0 , 255 ) ;
EsploraTFT. çizgi ( 0 , yStart , EsploraTFT. genişlik ( ) , yEnd ) ;

loop() ile bir sonraki sefer karşılaştırmak için geçerli başlangıç ve bitiş değerlerini önceki değerler olarak kaydedin.

oldStartY = yStart ;
oldEndY = yEnd ;
gecikme ( 10 ) ;
}

Çizimin tamamı aşağıdadır:

/ *

Esplora TFT Horizon

Arduino TFT ve Esplora için bu örnek
ekranda zeminle aynı seviyede kalan bir çizgi
Esplora'yı yan yana döşerken

Bu örnek kod kamu malıdır.

15 Nisan 2013 tarafından Scott Fitzgerald tarafından oluşturuldu

http: egitim.aspx e = EsploraTFTHorizon

* /


#include <Esplora.h>
#include <TFT.h> // Arduino LCD kütüphanesi
#include <SPI.h>

// yatay başlangıç ve bitiş konumları
int yStart = EsploraTFT. yükseklik ( ) / 2 ;
int yEnd = EsploraTFT. yükseklik ( ) / 2 ;

// önceki başlangıç ve bitiş konumları
int oldEndY ;
int oldStartY ;

void setup ( ) {
// ekranı başlat
EsploraTFT. begin ( ) ;
// arka planı siyah yap
EsploraTFT. arka plan ( 0 , 0 , 0 ) ;
}

void loop ( ) {
// ivmeölçerin x eksenini okuyun
int tilt = Esplora. akselerometre ( X_AXIS ) ;

// sola yatırıldığında değerler 100
// sağa yatırıldığında -100
// bu değerleri başlangıç ve bitiş noktalarına eşle
yStart = harita ( eğim , - 100 , 100 , EsploraTFT. yükseklik ( ) , 0 ) ;
yEnd = harita ( eğim , - 100 , 100 , 0 , EsploraTFT. yükseklik ( ) ) ;

// önceki değerler geçerli değerlerden farklıysa
// önceki satırı sil
if ( oldStartY ! = yStart || oldEndY ! = yEnd ) {
EsploraTFT. inme ( 0 , 0 , 0 ) ;
EsploraTFT. çizgi ( 0 , oldStartY , EsploraTFT. genişlik ( ) , oldEndY ) ;
}

// macentada çizgi çiz
EsploraTFT. inme ( 255 , 0 , 255 ) ;
EsploraTFT. çizgi ( 0 , yStart , EsploraTFT. genişlik ( ) , yEnd ) ;

// geçerli başlangıç ve bitiş noktalarını kaydet
// bir sonraki döngüde karşılaştırmak için
oldStartY = yStart ;
oldEndY = yEnd ;
gecikme ( 10 ) ;
}