Tanıtım videosu yakında eklenecek

Asansör Simülasyonu

Seviye: 7/10
Asansör Simülasyonu
Hızlı Başlangıç
  1. UDUSimp programını indirip kurun ve hesabınızla giriş yapın.
  2. Bir çalışma alanı (workspace) klasörü seçin; kütüphaneler ve başlangıç kodları c_… / py_… klasörlerine iner.
  3. Simülasyonu başlatın, kodunuzu çalışma alanında yazıp çalıştırın.

Fonksiyon Listesi

FonksiyonAçıklama
sim_connect() Simülasyona Bağlan
sim_disconnect() Simülasyon Bağlantısını Kes
door(int kat, int acKapa) Kapı Kontrolü
floor_button_light(int kat, int yon, int acKapa) Kat Düğme Işığı
cabin_button_light(int dugme, int acKapa) Kabin Düğme Işığı
cabin_display(int kat) Kabin Ekranı
cabin_motor(int yon) Kabin Motoru
int hata = get_error() Hata Oku
int l = floor_button_read(int kat, int yon) Kat Düğmesi Oku
int cb = cabin_button_read(int dugme) Kabin Düğmesi Oku
int ds = door_sensor_read(int kat) Kapı Sensörü Oku
int op = door_open_read(int kat) Kapı Tam Açık Sensörü Oku
int cm = cabin_motion_read() Kabin Hareket Sensörü Oku
int dm = door_motion_read(int kat) Kapı Hareket Sensörü Oku
int cs = cabin_sensor_read(int kat) Kabin Konum Sensörü Oku

Simülasyonun Amacı

C, C++ ve Python gibi programlama dillerinin başlangıç eğitimi genellikle konsol uygulamaları üzerinden anlatılmaktadır. Dolayısıyla, geliştirilen kodun çıktıları konsol üzerinden gösterilmektedir. Bu durum öğrencinin program akışını hayal edememe ve davranışını tam olarak anlayamamasına neden olur.

Bu simülasyonun amacı öğrencinin geliştirdiği kodun nasıl çalıştığını simüle edebileceği bir ortam sağlamaktır. Gerçekçiliği arttırmak için sensörler, motorlar, gösterge panellerinin her biri ayrı ayrı kontrol edilebilir ve her sensörün çıkış değeri okunabilir.

UDUSimp programını indirip kurduktan sonra istediğiniz simülasyonu çalıştırıp tercih ettiğiniz bir editörü kullanarak kod geliştirmeye başlayabilirsiniz. Tavsiye edilen editör: Visual Studio Code.

Asansör simülasyonun zorluk derecesi 10 üzerinde 7 olarak değerlendirilmiştir.

Genel Bilgi

1 – Özellikler
• Hareketli Kabin
• Hareketli Kat Kapıları *
• Kabin Limit Sensör Göstergeleri *
• Kabin Kapıları Limit Sensörleri *
• Kabin İçi Işıklı Kat Düğmeleri
• Kabin Yönü Işıklı Göstergesi *
• Asansör Çağırma Düğmeleri *
2 – Görev ve Tanım
Günlük hayatta kullanılan asansörleri ve çalışma mantığını inceleyin. Asansörün 3 katlı bir binada çalışması için gereken kodu geliştirin.
Örnek: Asansör 3. Katta iken 1. Kattan çağrılan asansörün;
1- Kabin kapısını kapatması
2- Kabinin aşağı doğru hareket etmesi
3- 1. Kata geldiğini kat sensöründen gelen veriler sayesinde tespit ederek durması
Gerekir.
Not: Bu işlemler yapılırken Asansör Gösterge ışıklarını aktif ve pasif etmeyi unutmayın. Bu sayede asansör bekleyenleri bilgilendirmiş olursunuz.

Genel Bilgi

Simülasyona Bağlan

sim_connect()

Simülasyon ile kod ortamı arasında bağlantı kurar.

#include "elevator.h"
int main() {
    sim_connect();
    return 0;
}
from elevator import *

sim_connect()

Simülasyon Bağlantısını Kes

sim_disconnect()

Simülasyon ile kod ortamı arasındaki bağlantıyı sonlandırır.

#include "elevator.h"
int main() {
    sim_connect();
    sim_disconnect();
    return 0;
}
from elevator import *

sim_connect()
sim_disconnect()

Kapı Kontrolü

door(int kat, int acKapa)

Belirtilen kattaki kapı motorunu çalıştırır.
1. parametre: kat numarası (1-3)
2. parametre: DOOR_OPEN (1) = Aç, DOOR_CLOSE (2) = Kapat, DOOR_STOP (0) = Dur

Kapı tam açılınca (door_open_read = 1) veya tam kapanınca (door_sensor_read = 0) motoru durdurun; durdurulmazsa hata bayrağı (get_error) 1 olur.

Örnek:
door(1, DOOR_CLOSE) → 1. kat kapısı kapanır
door(3, DOOR_OPEN) → 3. kat kapısı açılır

#include "elevator.h"
int main() {
    sim_connect();
    door(1, DOOR_CLOSE); // 1. kat kapat
    door(3, DOOR_OPEN);  // 3. kat ac
    return 0;
}
from elevator import *

sim_connect()
door(1, DOOR_CLOSE)  # 1. kat kapat
door(3, DOOR_OPEN)   # 3. kat ac

Kat Düğme Işığı

floor_button_light(int kat, int yon, int acKapa)

Kattaki çağırma düğmesinin arka ışığını kontrol eder.
1. parametre: kat numarası
2. parametre: yön — 1 = Yukarı (DIR_UP), 0 = Aşağı (DIR_DOWN)
3. parametre: 1 = Aç, 0 = Kapat

Örnek:
floor_button_light(2, DIR_DOWN, 1) → 2. kat aşağı düğme ışığı açılır

#include "elevator.h"
int main() {
    sim_connect();
    floor_button_light(2, DIR_DOWN, 1); // 2.kat asagi isik ac
    floor_button_light(2, DIR_DOWN, 0); // 2.kat asagi isik kapat
    return 0;
}
from elevator import *

sim_connect()
floor_button_light(2, DIR_DOWN, 1)  # 2.kat asagi isik ac
floor_button_light(2, DIR_DOWN, 0)  # 2.kat asagi isik kapat

Kabin Düğme Işığı

cabin_button_light(int dugme, int acKapa)

Kabin içindeki düğme ışığını kontrol eder.
1. parametre: düğme numarası (kat)
2. parametre: 1 = Aç, 0 = Kapat

Örnek:
cabin_button_light(1, 0) → kabin 1. kat düğme ışığı söner

#include "elevator.h"
int main() {
    sim_connect();
    cabin_button_light(1, 0); // 1.kat dugme sondur
    cabin_button_light(2, 1); // 2.kat dugme yak
    return 0;
}
from elevator import *

sim_connect()
cabin_button_light(1, 0)  # 1.kat dugme sondur
cabin_button_light(2, 1)  # 2.kat dugme yak

Kabin Ekranı

cabin_display(int kat)

Kabin içindeki LCD ekrana kat numarası yazdırır.
1. parametre: ekranda gösterilecek kat numarası

Örnek:
cabin_display(2) → ekranda 2 yazar

#include "elevator.h"
int main() {
    sim_connect();
    cabin_display(2);
    return 0;
}
from elevator import *

sim_connect()
cabin_display(2)

Kabin Motoru

cabin_motor(int yon)

Kabin motorunu çalıştırır.
1. parametre: CABIN_UP (1) = Yukarı, CABIN_DOWN (2) = Aşağı, CABIN_STOP (0) = Dur

Kabin en üst (3.) katı veya en alt (1.) katı geçerse hata bayrağı (get_error) 1 olur.

Örnek:
cabin_motor(CABIN_UP) → kabin yukarı hareket eder
cabin_motor(CABIN_DOWN) → kabin aşağı hareket eder
cabin_motor(CABIN_STOP) → kabin durur

#include "elevator.h"
int main() {
    sim_connect();
    cabin_motor(CABIN_UP);   // yukari
    cabin_motor(CABIN_DOWN); // asagi
    cabin_motor(CABIN_STOP); // dur
    return 0;
}
from elevator import *

sim_connect()
cabin_motor(CABIN_UP)    # yukari
cabin_motor(CABIN_DOWN)  # asagi
cabin_motor(CABIN_STOP)  # dur

Hata Oku

int hata = get_error()

Simülasyonda hata oluşup oluşmadığını döndürür.
Dönen değer 1 → bir sınır aşıldı (kabin en üst/en alt katı geçti ya da kapı tam açık/tam kapalı konumu geçti)
Dönen değer 0 → hata yok
Hata bayrağı kendiliğinden temizlenir.

#include "elevator.h"
int main() {
    sim_connect();
    int err = get_error();
    if(err == 1)
        printf("Hata olustu!");
    return 0;
}
from elevator import *

sim_connect()
err = get_error()
if err == 1:
    print("Hata olustu!")

Kat Düğmesi Oku

int l = floor_button_read(int kat, int yon)

Belirtilen kattaki yön düğmesinin basılı olup olmadığını okur.
1. parametre: kat numarası
2. parametre: yön — 1 = Yukarı (DIR_UP), 0 = Aşağı (DIR_DOWN)
Dönen değer 1 → basıldı, 0 → basılmadı

Örnek:
floor_button_read(1, DIR_DOWN) → 1. kat aşağı düğmesi basıldı mı?

#include "elevator.h"
int main() {
    sim_connect();
    int l = floor_button_read(1, DIR_DOWN);
    if(l == 1)
        printf("1.kat asagi dugmesine basildi");
    return 0;
}
from elevator import *

sim_connect()
l = floor_button_read(1, DIR_DOWN)
if l == 1:
    print("1.kat asagi dugmesine basildi")

Kabin Düğmesi Oku

int cb = cabin_button_read(int dugme)

Kabin içindeki düğmenin basılı olup olmadığını okur.
1. parametre: düğme numarası (kat)
Dönen değer 1 → basıldı, 0 → basılmadı

Örnek:
cabin_button_read(2) → kabin 2. kat düğmesine basıldı mı?

#include "elevator.h"
int main() {
    sim_connect();
    int cb = cabin_button_read(2);
    if(cb == 1)
        printf("Kabin 2.kat dugmesine basildi");
    return 0;
}
from elevator import *

sim_connect()
cb = cabin_button_read(2)
if cb == 1:
    print("Kabin 2.kat dugmesine basildi")

Kapı Sensörü Oku

int ds = door_sensor_read(int kat)

Belirtilen kattaki kapının tam kapalı olup olmadığını okur.
Dönen değer 1 → kapı tam kapalı değil (açılıyor / açık)
Dönen değer 0 → kapı tam kapalı

Örnek:
door_sensor_read(2) → 2. kat kapısı açık mı?

#include "elevator.h"
int main() {
    sim_connect();
    int ds = door_sensor_read(2);
    if(ds == 1)
        printf("2.kat kapisi acik");
    return 0;
}
from elevator import *

sim_connect()
ds = door_sensor_read(2)
if ds == 1:
    print("2.kat kapisi acik")

Kapı Tam Açık Sensörü Oku

int op = door_open_read(int kat)

Belirtilen kattaki kapının tam açık olup olmadığını okur.
Dönen değer 1 → kapı tam açık, 0 → tam açık değil
Kapı açılırken bu değer 1 olunca motoru durdurun.

Örnek:
door_open_read(2) → 2. kat kapısı tam açıldı mı?

#include "elevator.h"
int main() {
    sim_connect();
    door(2, DOOR_OPEN);
    while(door_open_read(2) == 0)
        Sleep(10);           // tam acilana kadar bekle
    door(2, DOOR_STOP);
    return 0;
}
from elevator import *
import time

sim_connect()
door(2, DOOR_OPEN)
while door_open_read(2) == 0:
    time.sleep(0.01)      # tam acilana kadar bekle
door(2, DOOR_STOP)

Kabin Hareket Sensörü Oku

int cm = cabin_motion_read()

Kabin motorunun anlık durumunu okur.
Dönen değer:
0 → kabin duruyor (CABIN_STOP)
1 → yukarı hareket ediyor (CABIN_UP)
2 → aşağı hareket ediyor (CABIN_DOWN)

#include "elevator.h"
int main() {
    sim_connect();
    int cm = cabin_motion_read();
    if(cm != CABIN_STOP)
        printf("Kabin hareket ediyor");
    return 0;
}
from elevator import *

sim_connect()
cm = cabin_motion_read()
if cm != CABIN_STOP:
    print("Kabin hareket ediyor")

Kapı Hareket Sensörü Oku

int dm = door_motion_read(int kat)

Belirtilen kattaki kapı motorunun anlık durumunu okur.
Dönen değer:
0 → kapı motoru duruyor (DOOR_STOP)
1 → kapı açılıyor (DOOR_OPEN)
2 → kapı kapanıyor (DOOR_CLOSE)

Örnek:
door_motion_read(1) → 1. kat kapısı hareket ediyor mu?

#include "elevator.h"
int main() {
    sim_connect();
    int dm = door_motion_read(1);
    if(dm != DOOR_STOP)
        printf("1.kat kapisi hareket ediyor");
    return 0;
}
from elevator import *

sim_connect()
dm = door_motion_read(1)
if dm != DOOR_STOP:
    print("1.kat kapisi hareket ediyor")

Kabin Konum Sensörü Oku

int cs = cabin_sensor_read(int kat)

Kabinin belirtilen katta olup olmadığını okur.
Dönen değer 1 → kabin o katta, 0 → değil

Örnek:
cabin_sensor_read(3) → kabin 3. katta mı?

#include "elevator.h"
int main() {
    sim_connect();
    int cs = cabin_sensor_read(3);
    if(cs == 1)
        printf("Kabin 3.katta");
    return 0;
}
from elevator import *

sim_connect()
cs = cabin_sensor_read(3)
if cs == 1:
    print("Kabin 3.katta")