Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę.

Podobne dokumenty
Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

Klawiatura matrycowa

Silnik prądu stałego. Sterowanie silnika prądu stałego

Schemat blokowy architektury AVR

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Wyświetlacz LCD. Ogólne zasady działania

Nazwa implementacji: Pamięć i zręczność - zapamiętaj kolejność. Autor: Krzysztof Bytow

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

6 ARDUINO DLA POCZĄTKUJĄCYCH. PODSTAWY I SZKICE

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

Pomiar odległości z Arduino czujniki, schematy, przykładowe kody

Karty SD posiadają 9 wyprowadzeń. Dodatkowo karta SD ma na brzegu przełącznik blokujący możliwość zapisu. Karta SD operuje na napięciu 3,3V.

Nazwa implementacji: Zróbmy grę - Tetris. Autor: Łukasz Ciężki

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

2 Przygotował: mgr inż. Maciej Lasota

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Krótki wstęp o wyświetlaczach. Jak zmusić wyświetlacz do pracy?

Spis treści. S t r o n a 2

Drivery LED PWM oraz prosty sterownik Świt Zmierzch oparty na Arduino

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

i Nauki o Materiałach, Sprawozdanie Projekt dekodera Morse a z wykorzystaniem mikrokontrolera na przedmiot Systemy Wbudowane.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Programowanie systemów autonomicznych

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Zastosowanie moduł Wi-Fi ESP-12 (1) Wirtualny interfejs szeregowy

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Przetwornik analogowo-cyfrowy

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

Przed czytaniem upewnij się, że znasz podstawy opisane w dotychczasowych częściach naszego darmowego kursu Arduino dla każdego!

Z pomocą Arduino budujemy mikrofon podsłuchowy

Przyrząd do grania bluesa Projekt zaliczeniowy z przedmiotu Programowanie Mikrokontrolerów

Systemy Wbudowane. Arduino, AVR (wersja 2018) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Pomiar temperatury Czujnik temperatury TMP36

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

TEMAT : KLASY DZIEDZICZENIE

Systemy Wbudowane. Arduino, AVR (wersja 2019) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Funkcja (podprogram) void

Programowanie mikroprocesorów w systemie Arduino. Instrukcja do ćwiczenia laboratoryjnego

INSTRUKCJA OBSŁUGI MONITORA LINII PRĄDOWEJ

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

1. Wprowadzanie danych z klawiatury funkcja scanf

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

ISO/ANSI C - biblioteki ISO/ANSI C. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Oscyloskop (007; ; arduino; processing)

Piotr Rzeszut Arduino Każdy może zostać elektronikiem. Sterowanie silnikiem przy pomocy modułu ARD MOTOR SHIELD

Arduino Power Shield. Moduł Arduino do sterowania silnikami dużej mocy i pomiaru prądu

PL/SQL. Funkcje wbudowane

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Systemy Wbudowane. Arduino, AVR (wersja ) Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler

Instrukcja do ćwiczeń

Instytut Teleinformatyki

Prosty system alarmowy z Arduino

MATERIAŁY SZKOLENIOWE UKŁADY AUTOMATYKI CYFROWEJ

polski INSTRUKCJE DO ZEGARKA ANALOGOWEGO

Struktury, unie, formatowanie, wskaźniki

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Wstęp do Informatyki

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Sterowanie wyświetlaczem graficznym z kontrolerem firmy Toshiba T6963C kod programu.

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Język C - podstawowe informacje

Mikrokontrolery wytyczne do projektów Temat 1 Łamanie kodu

Budzik SoundMaster UR8900SI, cyfrowy

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Tablice, funkcje - wprowadzenie

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Pomiar natężenia światła (005; ; arduino, processing)

Opis procedur asemblera AVR

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy i języki programowania

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Programowanie strukturalne i obiektowe

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Podstawy programowania w języku C++

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Transkrypt:

Projekt zegara. Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę. Aktualny czas należy wpisać na monitorze portu szeregowego po podłączeniu płytki. Godzina jest pokazywana mechanicznie na dwóch półokrąłych tarczach (godzinowej i minutowej) poprzez dwa serwomechanizmy obracające wskazówkami (minuta i godzina są konwertowane na kąt obrotu). Data wyświetla jest cyfrowo na wyświetlaczu ciekłokrystalicznym. Schemat ideowy Kod programu. #include <TimeLib.h> //odpowiada za przetrzymywanie daty w ludzkim formacie #include <Time.h> //potrzebna przy funkcji konwersji na czas epoch (struktura tmelements_t) #define TIME_HEADER "T" // tag poprzedzajacy wiadomosc z wpisanym czasem

#define TIME_REQUEST 7 // znak ktory zainicjuje zadanie (zadanie w sensie 'rzondanie', brak polskich znakow) synchronizacji (chyba dzwonek w ASCII, niewazne bo uzytkownik tego nie widzi, jest wpisywane przez program) #include <Servo.h> //serwomechanizm #include <LiquidCrystal.h> //LCD LiquidCrystal lcd(2, 3, 4, 5, 6, 7); Servo servo1; Servo servo2; int minuta; int godz; void setup() { lcd.begin(16,2); //wypisz komunikat na LCD lcd.setcursor(0,0); lcd.print("wprowadz czas"); lcd.setcursor(0,1); lcd.print("poprzedzony 'T '"); Serial.begin(9600); setsyncprovider(requestsync); //ustawia funkcje ktora bedzie synchronizowac czas (biblioteka TimeLib.h) Serial.println("Wpisz date: T RRRR MM DD gg mm ss"); servo1.attach(8); servo2.attach(9); pinmode(10, OUTPUT); //LED void loop() { if (Serial.available()) { //wlaczenie monitora portu szeregowego inicjuje synchronizacje czasu processsyncmessage(); if (timestatus()!= timenotset) { //jesli czas jest ustawiony, wykonaj

lcd.clear(); lcd.setcursor(0,0); lcd.print(day()); //wypisz dzien na LCD lcd.setcursor(3,0); if (month()==1) //wypisz miesiac na LCD (warunki okreslaja kolejne miesiace) lcd.print("stycznia"); if (month()==2) lcd.print("lutego"); if (month()==3) lcd.print("marca"); if (month()==4) lcd.print("kwietnia"); if (month()==5) lcd.print("maja"); if (month()==6) lcd.print("czerwca"); if (month()==7) lcd.print("lipca"); if (month()==8) lcd.print("sierpnia"); if (month()==9) lcd.print("wrzesnia"); if (month()==10) lcd.print("pazdziernika"); if (month()==11) lcd.print("listopada"); if (month()==12)

lcd.print("grudnia"); lcd.setcursor(0,1); lcd.print(year()); // wypisz rok na LCD godz=hourformat12(); //przypisz pod zmienna aktualna godzine w formacie 12h(biblioteka TimeLib.h) minuta=minute(); //przypisz pod zmienna aktualna minute (biblioteka TimeLib.h) int obrotmin=map(minuta, 0, 60, 180, 0); //przekonwertuj z minuty na kat obrotu (proporcja) servo2.write(obrotmin); //obroc serwo minutowe na dany kat int obrotgodz=map(godz,0, 12, 180, 15); //przekonwertuj z godziny na kat obrotu (proporcja) servo1.write(obrotgodz); //obroc serwo godzinowe na dany kat if (ispm()) //jesli godzina jest po poludniu (biblioteka TimeLib.h) zaswiec diode digitalwrite(10,high); else //jak jest przed poludniem, zgas diode digitalwrite(10,low); digitalclockdisplay(); // wyswietl godzine i date na monitorze portu szeregowego delay(1000); //odczekaj 1 sekunde void digitalclockdisplay(){ // funkcja wypisujaca czas i date na monitorze portu szeregowego Serial.print(hour()); printdigits(minute()); printdigits(second()); Serial.print(" "); Serial.print(day()); Serial.print(" "); Serial.print(month()); Serial.print(" ");

Serial.print(year()); Serial.println(); void printdigits(int digits){ // funkcja wypisujaca liczby oddzielone dwukropkiem (format czasu) Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); time_t tmconvert_t(int YYYY, byte MM, byte DD, byte hh, byte mm, byte ss){ //konwertuje wpisana date na czas epoch (unix timestamp, czas od 1970) tmelements_t tmset; tmset.year= YYYY-1970; tmset.month=mm; tmset.day=dd; tmset.hour=hh; tmset.minute=mm; tmset.second=ss; return maketime(tmset); void processsyncmessage() { //funkcja przetwarzajaca wpisana wiadomosc na monitorze portu szeregowego unsigned long pctime; const unsigned long DEFAULT_TIME = 1357041600; // ustawia domyslna date na 01.01.2013r. int YYYY; byte MM,DD,hh,mm,ss; if(serial.find(time_header)) { //jesli znajdzie w wiadomosci zadeklarowany tag (T), przypisuje pod zmienne odpowiednie wartosci daty i czasu

YYYY=Serial.parseInt(); MM=Serial.parseInt(); DD=Serial.parseInt(); hh=serial.parseint(); mm=serial.parseint(); ss=serial.parseint(); pctime=tmconvert_t(yyyy,mm,dd,hh, mm, ss); // konwertuje czas na epoch if( pctime >= DEFAULT_TIME) { // jesli czas jest wiekszy od 01.01.2013r. ustawia wpisany czas settime(pctime); time_t requestsync(){ //funkcja ktora odpowiada za zadanie synchronizacji czasu Serial.write(TIME_REQUEST); //wpisuje w monitorze portu szeregowego znak odpowiedzialny za zadanie synchronizacji czasu return 0;