Loyiha №45: GPS-ga asoslangan aniq soatni yaratish
GPS uchun joyni topishdan ko'ra ko'proq narsa bor; tizim, shuningdek, juda aniq soatni yaratish uchun ishlatilishi mumkin bo'lgan vaqt ma'lumotlarini uzatadi.
Texnik qism
Ushbu loyiha uchun biz Project 44 dan bir xil uskunadan foydalanamiz.
Eskiz
GPS soatini yaratish uchun quyidagi eskizni kiriting:
// 45-loyiha - GPS-ga asoslangan aniq soatni yaratish
#include
#include
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );
// quyidagining misolini yarating
TinyGPS object TinyGPS gps;
void getgps(TinyGPS &gps);
void setup()
{
Serial.begin(4800);
lcd.begin(16, 2);
}
void getgps(TinyGPS &gps)
{
int year,a,t;
byte month, day, hour, minute, second, hundredths;
gps.crack_datetime
(
&year,
&month,
&day,
&hour,
&minute,
&second,
&hundredths
);
hour=hour+10; // vaqt mintaqangizni to’g’irlang
if (hour>23)
{
hour=hour-24;
}
lcd.setCursor(0,0); // sana va vaqtni chop eting
lcd.print("Current time: ");
lcd.setCursor(4,1);
if (hour<10)
{
lcd.print("0");
}
lcd.print(hour, DEC);
lcd.print(":");
if (minute<10)
{
lcd.print("0");
}
lcd.print(minute, DEC);
lcd.print(":");
if (second<10)
{
lcd.print("0");
}
lcd.print(second, DEC);
}
void loop()
{
byte a;
if ( Serial.available() > 0 ) // uzluksiz ma'lumotlar mavjud bo'lsa
{
a = Serial.read(); // ma'lumotlar baytini oling
if(gps.encode(a)) // agar haqiqiy GPS ma'lumotlari mavjud bo'lsa ...
{
getgps(gps); // ma'lumotlarni olib LCD displeyda ko'rsating
}
}
}
Ushbu misol 44-loyihaga o'xshash tarzda ishlaydi, bundan tashqari eskiz joylashuv ma'lumotlarini chiqarish o'rniga vaqtni (har doim Grinvich o'rtacha vaqtida, odatda UTC deb nomlanadi) da chiqaradi. da siz soatni joriy vaqt mintaqangizga moslashtirish uchun soatlar sonini qo‘shishingiz yoki ayirishingiz mumkin. Keyin vaqt aniq formatlanishi va LCD displeyda da ko'rsatilishi kerak. 13-9-rasmda soat namunasi ko'rsatilgan.
13-9-rasm: 45-loyiha ishi
|