c_… / py_… klasörlerine iner.| Fonksiyon | Açı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 |
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.
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.
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_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()
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
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
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
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)
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
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!")
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")
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")
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")
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)
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")
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")
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")