MATERIAŁY SZKOLENIOWE UKŁADY AUTOMATYKI CYFROWEJ



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

Schemat blokowy architektury AVR

Klawiatura matrycowa

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED

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

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

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

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

Prosty system alarmowy z Arduino

MultiTool instrukcja użytkownika 2010 SFAR

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

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

DOKUMENTACJA TECHNICZNA. KONWERTER MODBUS v1. INSTRUKCJA OBSŁUGI wersja instrukcji 1.0

ĆWICZENIE 5 WPŁYW KONWEKCJI NA ROZKŁAD TEMPERATURY W POMIESZCZENIU

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

1. INSTALACJA SERWERA

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Połączenia. Obsługiwane systemy operacyjne. Strona 1 z 5

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

Telefon AT 530 szybki start.

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

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

Telefon IP 620 szybki start.

Moduł Ethernetowy EL-ETH. Instrukcja obsługi

Moduł Ethernetowy. instrukcja obsługi. Spis treści

tinyesp WiFi Kontroler

SystimPlus. Dokumentacja (FAQ) dla wersji: v

Laboratorium 1 Wprowadzenie do programowania Intel Galileo

Ważne: Przed rozpoczęciem instalowania serwera DP-G321 NALEŻY WYŁACZYĆ zasilanie drukarki.

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

instrukcja instalacji modemu SpeedTouch 605s

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

INSTRUKCJA OBSŁUGI Program konfiguracji sieciowej Net configuration Drukarka A11

SERWER DRUKARKI USB 2.0

Strona 1 z Przedni panel. LED Opis funkcji ADSL

Zestaw Startowy EvB. Więcej informacji na stronie:

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Rozdział 8. Sieci lokalne

Programator STK500v2 USB

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

Moduł Komunikacyjny MCU42 do systemu AFS42

8. Sieci lokalne. Konfiguracja połączenia lokalnego

Możesz podłączyć drukarkę do routera wykorzystując port USB. Wszystkie komputery podłączone do routera będą mogły drukować poprzez router.

INSTRUKCJA OBSŁUGI. MODUŁU INTERNETOWEGO EKOZEFIR MOBILE ver. 1.0

Instrukcja konfiguracji urządzenia TL-WA830RE v.1

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

Możesz podłączyć drukarkę do routera wykorzystując port USB. Wszystkie komputery podłączone do routera będą mogły drukować poprzez router.

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

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

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

Bramka IP 2R+L szybki start.

Electronic Infosystems

by Jody Culkin PIERWOTNY WZÓR BĘDĄCY PODSTAWĄ DO STWORZENIA GOTOWEGO PRODUKTU.

Platinet modem 4G LTE instrukcja obsługi. Platinet modem 4G LTE instrukcja obsługi

Przetwornik analogowo-cyfrowy

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

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:

PODSTAWOWA KONFIGURACJA LINKSYS WRT300N

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Programowanie Mikrokontrolerów

Server setup. #include <SPI.h> #include <Ethernet.h> boolean incoming = 0;

Zasady programowania Dokumentacja

Następnie kliknąć prawym klawiszem myszy na Połączenie sieci bezprzewodowej i wybrać Wyłącz.

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

OPIS PROGRAMU OBSŁUGI STEROWNIKA DISOCONT >> DISOCONT MASTER RAPORTY <<

Instrukcja instalacji modemu CDMA MV410R z wykorzystaniem kabla Ethernet w systemie operacyjnym MS Windows XP 32-bit

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Instrukcja instalacji usługi internetowej INEA

Przygotowanie urządzenia:

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Instrukcja obsługi extendera SXEP22

Konwerter Transmisji KT-02

BIBLIOTEKA. SADP IP Finder opis funkcji programu

WDC10 InstaShow Aktualizacja oprogramowania sprzętowego SOP

INTERFEJS LPG/CNG FTDI USB INSTRUKCJA INSTALACJI ORAZ KONFIGURACJI URZĄDZENIA

Interfejs RS485-TTL KOD: INTR. v.1.0. Zastępuje wydanie: 2 z dnia

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

Instytut Teleinformatyki

Konfiguracja parametrów sondy cyfrowo analogowej typu CS-26/RS/U

Instrukcja aktualizacji oprogramowania (firmware) serwera DESKTOP 1.0 systemu F&Home RADIO.

Instrukcja obsługi Rejestrator Parametrów

Uwaga: NIE korzystaj z portów USB oraz PWR jednocześnie. Może to trwale uszkodzić urządzenie ZyWALL.

Instrukcja do ćwiczeń

Instrukcja programowania IRSC OPEN

1. Instalacja modułu w systemie Windows.

inode instalacja sterowników USB dla adaptera BT 4.0

Biomonitoring system kontroli jakości wody

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

Przewodnik szybkiej instalacji

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Ćwiczenie 7: WYKONANIE INSTALACJI kontroli dostępu jednego Przejścia REGIONALNE CENTRUM EDUKACJI ZAWODOWEJ W BIŁGORAJU

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Programator procesorów rodziny AVR AVR-T910

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

Transkrypt:

PRAKTYCZNY PEDAGOG Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego MATERIAŁY SZKOLENIOWE UKŁADY AUTOMATYKI CYFROWEJ mgr inŝ. Michał Straus Wyższa Szkoła Handlowa im. B. Markowskiego w Kielcach, ul. Peryferyjna 15, 25-562 Kielce tel./fax 41 362 60 27, 41 262 05 43, www.pp.wsh-kielce.edu.pl, ppkielce@wsh-kielce.edu.pl, ppostrowiec@wsh-kielce.edu.pl 1

SPIS TREŚCI: 1. Platforma Arduino. 1.1. Arduino - program i zasady jego działania. 1.2. Instalacja środowiska. 1.3. Pierwsze kroki z IDE Arduino. 1.4. Ćwiczenia z Arduino. 1.5. Tematy projektów na zaliczenie. 2

1. Platforma Arduino 1.1 Arduino program i zasady jego działania Proces uruchomienia układu Arduino wymaga oprócz samego modułu Arduino odpowiedniego oprogramowanie, które pozwoli nam sterować tym modułem. Jest ono otwarte i dostępne pod tym adresem: http://arduino.cc/en/main/software. Wersja dla Windows zawiera wszystkie niezbędne narzędzia. Jedynym mankamentem jest potrzeba instalacji sterowników dla układu USB w Arduino. 1.2 Instalacja środowiska Pobierz najnowszą wersję środowiska programistycznego (IDE) Arduino z oficjalnej strony projektu: http://arduino.cc/en/main/software Pobrane archiwum naleŝy wypakować do wybranego katalogu, np. C:\Arduino. Podłącz płytkę Arduino do komputera. System spróbuje zainstalować sterownik, instalacja zakończy się niepowodzeniem. Otwórz menedŝera urządzeń. W kategorii Porty (COM i LPT) powinno widoczne być urządzenie Arduino UNO (COMxx). Kliknij prawym przyciskiem na urządzeniu, z menu kontekstowego wybierz Aktualizuj oprogramowanie sterownika. Następnie Przeszukaj mój komputer w poszukiwaniu oprogramowania sterownika. WskaŜ plik sterownika Arduino UNO.inf znajdujący się w podkatalogu drivers oprogramowania Arduino (w naszym przypadku C:\Arduino\drivers\Arduino UNO.inf). Sterownik zostanie poprawnie zainstalowany. 1.2 Pierwsze kroki z IDE Arduino Uruchom IDE Arduino (C:\Arduino\arduino.exe). 3

Ustawienie typu posiadanego urządzenia: Z menu programu wybierz Tools->Board->Arduino Uno Ustawienie portu na którym podłączone jest urządzenie: Do komputera moŝe być podłączone kilka urządzeń Arduino, jednak w danej chwili moŝna obsługiwać tylko jedno z nich. Wyboru urządzenia dokonuje się poprzez wybór portu COM pod którym widziane jest urządzenie. Domyślnie wybrane jest pierwsze podpięte urządzenie. Zmiana portu Tools->Serial Port->Cmxx 4

1.4 Ćwiczenia z Arduino Ćwiczenie 1. Wprowadzenie do układów wbudowanych - sterowanie diodą Rysunek 1 Schemat połączeń Wymagania: Arduino, dioda Na płytce Arduino pomiędzy pinem 13 a masą umieszczona jest czerwona dioda, którą moŝna wykorzystać w tym ćwiczeniu, alternatywnie moŝna wpiąć inna diodę pomiędzy dowolny pinem cyfrowym a masą. Załaduj przykładowy program Blink, z menu programu wybierz File->Examples->Basisc->Blink. Kod programu składa się z dwóch funkcji: setup oraz loop. Funkcja setup jest wykonywana tylko raz po podłączeniu zasilania, natomiast kod funkcji loop jest wykonywany w pętli. Kod programu: void setup() // Inicjalizacja pinu 13 jako pin wyjściowy. pinmode(13, OUTPUT); void loop() digitalwrite(13, HIGH); // Ustawienie stanu wysokiego na pinie 13 delay(1000); // Odczekanie 1000ms digitalwrite(13, LOW); // Ustawienie stanu niskiego na pinie 13 delay(1000); // Odczekanie 1000ms 5

Ćwiczenie 2. Obsługa wyświetlacza 7 segmentowego Wymagania: Arduino, wyświetlacz 7 segmentowy, oporniki, płytka stykowa Wyświetlacz 7 segmentowy składa z siedmiu diód umieszczonych w jednej obudowie (czasem jest to osiem diod wyświetlacze z kropką). Wyświetlacze te dzielą się na dwa typy: ze wspólna anodą lub wspólną katodą. NaleŜy ustalić jakiego typu jest posiadany wyświetlacz (napisy z obudowy, specyfikacja w Internecie) KaŜdy segmentów połączy przez opornik z jednym z wybranych pinów. Pin wejściowy wyświetlacza do napięcia lub masy. Napisać program wyświetlający kolejne cyfry w pętli (analogicznie do ćwiczenia 1) Ćwiczenie 3. Odczytanie stanu przycisku Wymagania: Arduino, płytka stykowa, opornik, przycisk Podłącz elementy wg poniŝszego schematu. Pin 7 jest połączony z jednym z pinów przycisku oraz z masą poprzez opornik. Drugi pin przycisku jest połączony z zasilaniem. W momencie naciśnięcia przycisku na pinie 7 pojawi się stan wysoki. Rysunek 2 Schemat połączeń Program ma za zadanie zapalenie czerwonej diody w momencie gdy przycisk zostanie uŝyty. Kod programu: const int buttonpin = 7; // numer pinu pod który podpięty jest przycisk 6

const int ledpin = 13; // numer pinu pod który podłączona jest dioda int buttonstate = 0; // zmienna w której będzie przechowywany stan przycisku void setup() // inicjalizacja pinu diodu jako pinu wyjściowego pinmode(ledpin, OUTPUT); // inicjalizacja pinu przycisku jako pinu wejściowego pinmode(buttonpin, INPUT); void loop() // odczyt stanu przycisku buttonstate = digitalread(buttonpin); // jeżeli przycisk jest wciśnięty if (buttonstate == HIGH) // zapal diodę digitalwrite(ledpin, HIGH); // w przeciwnym razie else // wyłącz diodę digitalwrite(ledpin, LOW); Ćwiczenie 4. Obsługa znakowego wyświetlacza LCD Wymagania: Arduino, wyświetlacz znakowy LCD, potencjometr Znajdź specyfikację techniczną posiadanego wyświetlacza. Większość wyświetlaczy znakowych opiera się na standardzie HD44780, jednak wyprowadzenia pinów mogą się róŝnić. Zazwyczaj wyprowadzenie jest następujące: 1. Ground 2. VCC (+3.3 to +5V) 3. Contrast adjustment (VO) 4. Register Select (RS). RS=0: Command, RS=1: Data 5. Read/Write (R/W). R/W=0: Write, R/W=1: Read 6. Clock (Enable). Falling edge triggered 7. Bit 0 (Not used in 4-bit operation) 8. Bit 1 (Not used in 4-bit operation) 7

9. Bit 2 (Not used in 4-bit operation) 10. Bit 3 (Not used in 4-bit operation) 11. Bit 4 12. Bit 5 13. Bit 6 14. Bit 7 15. Backlight Anode (+) 16. Backlight Cathode (-) W 4 bitowym trybie pracy do obsługi wyświetlacza wystarczy 6 pinów. Dodatkowo naleŝy podłączyć zasilanie i ustawić kontrast przy pomocy potencjometru. Podłącz elementy wg poniŝszego schematu Program ma za zadanie wyświetlenie tekstu Hello world Kod programu: // dołączenie biblioteki lcd #include <LiquidCrystal.h> // inicjalizacja biblioteki ustawienie odpowiednich pinów LiquidCrystal lcd(7, 8, 9, 10, 11, 12); void setup() 8

// ustawienie ilości znaków i wierszy lcd.begin(16, 2); // wyświetlenie wiadomości lcd.print("hello, world!"); void loop() Program ma za zadanie wyświetlenie uciekającego znaku x Kod programu: // dołączenie biblioteki lcd #include <LiquidCrystal.h> // inicjalizacja biblioteki ustawienie odpowiednich pinów LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // pozycja na wyświetlaczu int pos = 0; void setup() // ustawienie ilości znaków i wierszy lcd.begin(16, 2); // ustawienie pozycji na początek pierwszego wiersza lcd.setcursor(pos, 0); void loop() // tekst do wyświetlenia, 16 spacji String txt = " "; // ustawienie znaku x txt[pos] = 'x'; // wyświetlenie tekstu lcd.print(txt); // zmiana pozycji x pos++; // pozycja x nie może być większa niż ilość znaków w wierszu pos = pos % 16; // odczekanie 200ms przed kolejnym wyświetleniem delay(200); 9

Ćwiczenie 5. Pomiar temperatury czujnikiem cyfrowym Wymagania: Arduino, czujnik temperatury Dallas 18B20 Czujnik temperatury firmy Dallas komunikuje się za pomocą protokołu 1-wire. Protokół ten pozwala na złączenie kilku urządzeń jednym kablem i komunikację między nimi. Arduino standardowo posiada bibliotekę do obsługi protokołu 1-wire. Program ma za zadanie odczytanie temperatury z czujnika. Kod programu: // załadowanie bibilioteki do obsługi 1-wire #include <OneWire.h> // inicjalizacja biblioteki 1-wire, komunikacja protokołem 1-wire będzie odbywać się poprzed pin 12 OneWire ds(12); int i; void setup() // inicjalizacja pinu 13 jako pinu wyjściowego pinmode(13, OUTPUT); // inicjalizacja portu serial z prędkością 9600 Serial.begin(9600); i = 0; 10

void loop() byte i; byte present = 0; byte data[12]; byte addr[8]; // wyszukiwanie urządzeń if (!ds.search(addr)) Serial.print("No more addresses.\n"); ds.reset_search(); delay(5000); return; Serial.print("R="); for( i = 0; i < 8; i++) Serial.print(addr[i], HEX); Serial.print(" "); if ( OneWire::crc8( addr, 7)!= addr[7]) Serial.print("CRC is not valid!\n"); return; if ( addr[0] == 0x10) Serial.print("Device is a DS18S20 family device.\n"); else if ( addr[0] == 0x28) Serial.print("Device is a DS18B20 family device.\n"); else Serial.print("Device family is not recognized: 0x"); Serial.println(addr[0],HEX); return; ds.reset(); ds.select(addr); ds.write(0x44,1); delay(1000); 11

present = ds.reset(); ds.select(addr); ds.write(0xbe); Serial.print("P="); Serial.print(present,HEX); Serial.print(" "); for ( i = 0; i < 9; i++) data[i] = ds.read(); Serial.print(data[i], HEX); Serial.print(" "); Serial.print(" CRC="); Serial.print( OneWire::crc8( data, 8), HEX); Serial.println(); digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); Serial.println(i++, DEC); int Temp=(data[1]<<8)+data[0]; float ftemp = Temp / 16.0; Serial.println("Temp: "); Serial.print(fTemp); Serial.println(""); Ćwiczenie 6. Sterowanie brzęczykiem przez WWW. Wymagania: Arduino, Ethernet Shield, brzęczyk Prezentowany program ma zadanie umoŝliwienie sterowania brzęczykiem (tzw. buzer) przez przeglądarkę internetową. Kod programu: #include "Ethernet.h" #include "WebServer.h" // MAC adres kart sieciowej 12

static uint8_t mac[6] = 0x02, 0xAA, 0xBB, 0xCC, 0x00, 0x22 ; // Adres IP static uint8_t ip[4] = 192, 168, 42, 51 ; #define PREFIX "/buzz" /* nasłuch na standardowym porcie http 80 */ WebServer webserver(prefix, 80); /* pin na którym podpięty jest brzęczyk */ #define BUZZER_PIN 3 /* wartość określa czas w milisekundach po jakim brzęczyk zostanie wyłączony */ int buzzdelay = 0; /* określa czy brzęczyk ma być uruchomiony w danym przebiegu pętli */ char toggle = 0; /* funkcja obsługuje zapytania do serwera Dla GET zwraca stronę z interfejsem do obsługi buzera Dla żądań typu POST zapamiętuje wartość parametru buzzdelay */ void buzzcmd(webserver &server, WebServer::ConnectionType type) /* żadanie typu POST */ if (type == WebServer::POST) bool repeat; char name[16], value[16]; do /* wczytuje parametry żądania. */ repeat = server.readurlparam(name, 16, value, 16); /* sprawdza nazwę parametru */ if (strcmp(name, "buzz") == 0) /* zamienia tekst na integer i zapisuje w zmiennej buzzdelay */ buzzdelay = strtoul(value, NULL, 10); while (repeat); 13

server.httpseeother(prefix); return; server.httpsuccess(); if (type == WebServer::GET) /* zawiera kod HTML strony */ P(message) = "<html><head><title>webduino Buzzer Example</title>" "<body>" "<h1>test the Buzzer!</h1>" "<form action='/buzz' method='post'>" "<p><button name='buzz' value='0'>turn if Off!</button></p>" "<p><button name='buzz' value='500'>500</button></p>" "<p><button name='buzz' value='1975'>1975</button></p>" "<p><button name='buzz' value='3000'>3000</button></p>" "<p><button name='buzz' value='8000'>8000</button></p>" "</form></body></html>"; /* wyświetla stronę html */ server.printp(message); void setup() // ustawia pin buzera jako pin wyjściowy pinmode(buzzer_pin, OUTPUT); // inicjuje Ethernet shield Ethernet.begin(mac, ip); webserver.setdefaultcommand(&buzzcmd); /* uruchom serwer */ webserver.begin(); void loop() // Obsługuj nadchodzące połączenia w pętli 14

webserver.processconnection(); /* jeżeli opóźnienie brzęczyka jest ustawione na większe od zera Włącz i wyłacz brzęczyk */ if ((++toggle & 1) && (buzzdelay > 0)) digitalwrite(buzzer_pin, HIGH); delaymicroseconds(buzzdelay); digitalwrite(buzzer_pin, LOW); 15

1.5 Tematy projektów na zaliczenie Tematy przykładowych projektów do wykonania na zaliczenie w grupach. Ilość gwiazdek przy temacie określa stopień trudności projektu. Podkreślone tematy oparte są o platformę Arduino. 1. Zegar cyfrowy: wyświetlacz 7 segmentowy + 2 przyciski do ustawienia *** 2. Zegar cyfrowy. wyświetlacz 7 segmentowy + Aktualizacja czasu protokołem NTP *** 3. Prosta gra. Obsługa wyświetlacza 2x16 znaków *** 4. Prosta gra. Obsługa wyświetlacza Nokia 3100 *** 5. Odbiornik podczerwieni. MontaŜ wg schematu, uruchomienie pod Windows, pomiar pilota IR ** 6. Odbiornik podczerwieni. MontaŜ wg schematu, uruchomienie pod Linux, architektura mips, pomiar pilota IR **** 7. Gotowy odbiornik podczerwieni. Uruchomienie pod Linux, pomiar pilota IR * 8. Sieciowy czujnik temperatury. Pomiar tempertury i przesłanie danych przez sieć lub udostępnienie na serwerze www ** 9. Pomiar temperatury przez port RS pod Linuxem, architektura mips *** 10. Serwer odpowiadający na pingi z ustalonym opóźnieniem * 11. Serwer odpowiadający na pingi z ustalonym opóźnieniem. Logowanie na kartę SD ** 12. Własna propozycja 16