c_… / py_… klasörlerine iner.| Fonksiyon | Açıklama |
|---|---|
sim_connect() |
Simülasyona Bağlan |
sim_disconnect() |
Simülasyon Bağlantısını Kes |
door_motor(int yon) |
Garaj Kapı Motoru |
garage_lamp(int acKapa) |
Garaj Lambası |
warning_light(int r, int g, int b, int acKapa) |
Uyarı Lambası (RGB) |
warning_light_on() |
Uyarı Lambası Aç (Renksiz) |
warning_light_off() |
Uyarı Lambası Kapat |
int k = key_read(int tus) |
Tuş Takımı Oku |
int p = door_pos_read() |
Kapı Konum Sensörü Oku |
int dm = door_motor_read() |
Kapı Motoru Durumu Oku |
int gl = garage_lamp_read() |
Garaj Lambası Durumu Oku |
int wl = warning_light_read() |
Uyarı Lambası Durumu 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 kapı motoru, lambalar, RGB uyarı ışığı, tuş takımı ve kapı konum sensörü ayrı ayrı kontrol edilebilir ve her bileşenin durumu 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.
Garaj simülasyonunun zorluk derecesi 10 üzerinde 6 olarak değerlendirilmiştir.
1 – Özellikler
• Yukarı / Aşağı / Dur kontrollü garaj kapı motoru
• Açılır / Kapanır garaj iç lambası
• RGB renk değişimli uyarı lambası *
• 0-9, # ve X tuşlu sayısal tuş takımı *
• Kapı konum sensörü (0-100 % kapalılık) *
• Tüm bileşenler için durum okuma fonksiyonları *
2 – Görev ve Tanım
Günlük hayatta kullanılan akıllı garaj sistemlerini ve çalışma mantığını inceleyin. Tuş takımından girilen şifreye göre kapının açılması, sensör verisiyle motorun otomatik durması ve durumların RGB lambayla bildirilmesi için gereken kodu geliştirin.
Örnek senaryolar:
1- Tuş takımından doğru şifre girilirse kapının yukarı hareket etmesi
2- Kapı tam açıldığında (pozisyon 0) motorun otomatik durması ve uyarı lambasının yeşil yanması
3- Yanlış şifre denemesinde uyarı lambasının kırmızı yanması ve X tuşu ile sıfırlanması
Gerekir.
Not: door_motor() ile başlatılan hareket, door_pos_read() değeri istenen konuma ulaştığında durdurulmazsa motor son limit anahtarına çarpana kadar çalışır. Konum kontrolünü her döngüde tekrar okuyarak yapın.
sim_connect()Simülasyon ile kod ortamı arasında bağlantı kurar.
#include "garage.h"
int main() {
sim_connect();
return 0;
}
from garage import * sim_connect()
sim_disconnect()Simülasyon ile kod ortamı arasındaki bağlantıyı sonlandırır.
#include "garage.h"
int main() {
sim_connect();
sim_disconnect();
return 0;
}
from garage import * sim_connect() sim_disconnect()
door_motor(int yon)Garaj kapısının motorunu çalıştırır.
1. parametre:
DOOR_UP (1) = Yukarı (kapı açılır)
DOOR_DOWN (2) = Aşağı (kapı kapanır)
DOOR_STOP (0) = Dur
Örnek:
door_motor(DOOR_UP) → kapı açılmaya başlar
door_motor(DOOR_DOWN) → kapı kapanmaya başlar
door_motor(DOOR_STOP) → motor durur
#include "garage.h"
int main() {
sim_connect();
door_motor(DOOR_UP); // ac
door_motor(DOOR_DOWN); // kapat
door_motor(DOOR_STOP); // dur
return 0;
}
from garage import * sim_connect() door_motor(DOOR_UP) # ac door_motor(DOOR_DOWN) # kapat door_motor(DOOR_STOP) # dur
garage_lamp(int acKapa)Garajın iç lambasını açar veya kapatır.
1. parametre: LAMP_ON (1) = Aç, LAMP_OFF (0) = Kapat
Örnek:
garage_lamp(LAMP_ON) → lamba yanar
garage_lamp(LAMP_OFF) → lamba söner
#include "garage.h"
int main() {
sim_connect();
garage_lamp(LAMP_ON); // yak
garage_lamp(LAMP_OFF); // sondur
return 0;
}
from garage import * sim_connect() garage_lamp(LAMP_ON) # yak garage_lamp(LAMP_OFF) # sondur
warning_light(int r, int g, int b, int acKapa)Uyarı lambasını istenen renkte açar veya kapatır.
Parametreler:
r,g,b → 0-255 arası RGB renk değerleri
acKapa → WARN_ON (1) = Aç, WARN_OFF (0) = Kapat
Örnek:
warning_light(255,0,0, WARN_ON) → kırmızı yanar
warning_light(0,255,0, WARN_ON) → yeşil yanar
warning_light(0,0,0, WARN_OFF) → söner
#include "garage.h"
int main() {
sim_connect();
warning_light(255, 0, 0, WARN_ON); // kirmizi
warning_light(0, 255, 0, WARN_ON); // yesil
warning_light(0, 0, 0, WARN_OFF); // sondur
return 0;
}
from garage import * sim_connect() warning_light(255, 0, 0, WARN_ON) # kirmizi warning_light(0, 255, 0, WARN_ON) # yesil warning_light(0, 0, 0, WARN_OFF) # sondur
warning_light_on()Uyarı lambasını mevcut renginde açar. Renk değerlerini değiştirmez.
Daha önce warning_light() ile ayarlanmış son renk kullanılır.
#include "garage.h"
int main() {
sim_connect();
warning_light(0, 0, 255, WARN_ON); // once mavi ayarla
warning_light_off();
warning_light_on(); // tekrar mavi yan
return 0;
}
from garage import * sim_connect() warning_light(0, 0, 255, WARN_ON) # once mavi ayarla warning_light_off() warning_light_on() # tekrar mavi yan
warning_light_off()Uyarı lambasını söndürür. Renk ayarlarını silmez; tekrar warning_light_on() çağrılırsa aynı renkle yanar.
#include "garage.h"
int main() {
sim_connect();
warning_light_off();
return 0;
}
from garage import * sim_connect() warning_light_off()
int k = key_read(int tus)Tuş takımındaki belirtilen tuşun basılı olup olmadığını okur.
1. parametre:
0-9 → rakam tuşları
10 → # tuşu
11 → X (iptal) tuşu
Dönen değer 1 → tuşa basılı, 0 → basılı değil
Örnek:
key_read(5) → 5 tuşuna basıldı mı?
key_read(10) → # tuşuna basıldı mı?
key_read(11) → X tuşuna basıldı mı?
#include "garage.h"
int main() {
sim_connect();
int k = key_read(5);
if(k == 1)
printf("5 tusuna basildi");
return 0;
}
from garage import *
sim_connect()
k = key_read(5)
if k == 1:
print("5 tusuna basildi")
int p = door_pos_read()Garaj kapısının ne kadar kapalı olduğunu yüzde olarak okur.
Dönen değer 0-100 arası:
0 → kapı tam açık
100 → kapı tam kapalı
50 → kapı yarı kapalı
Örnek:
int p = door_pos_read() → p = 100 (kapı tamamen kapalı)
#include "garage.h"
int main() {
sim_connect();
int p = door_pos_read();
if(p >= 100)
door_motor(DOOR_STOP); // tam kapali, motoru durdur
return 0;
}
from garage import *
sim_connect()
p = door_pos_read()
if p >= 100:
door_motor(DOOR_STOP) # tam kapali, motoru durdur
int dm = door_motor_read()Garaj kapı motorunun anlık durumunu okur.
Dönen değer:
0 → motor duruyor
1 → kapı yukarı hareket ediyor
2 → kapı aşağı hareket ediyor
#include "garage.h"
int main() {
sim_connect();
int dm = door_motor_read();
if(dm == 0)
printf("Kapi durdu");
return 0;
}
from garage import *
sim_connect()
dm = door_motor_read()
if dm == 0:
print("Kapi durdu")
int gl = garage_lamp_read()Garaj iç lambasının anlık durumunu okur.
Dönen değer 1 → lamba açık
Dönen değer 0 → lamba kapalı
#include "garage.h"
int main() {
sim_connect();
int gl = garage_lamp_read();
if(gl == 1)
printf("Garaj lambasi acik");
return 0;
}
from garage import *
sim_connect()
gl = garage_lamp_read()
if gl == 1:
print("Garaj lambasi acik")
int wl = warning_light_read()Uyarı lambasının anlık durumunu okur.
Dönen değer 1 → lamba açık
Dönen değer 0 → lamba kapalı
#include "garage.h"
int main() {
sim_connect();
int wl = warning_light_read();
if(wl == 1)
printf("Uyari lambasi acik");
return 0;
}
from garage import *
sim_connect()
wl = warning_light_read()
if wl == 1:
print("Uyari lambasi acik")