Proje Linki:
Yapmış olduğum projede yaz aylarında evde olmadığımız günlerde çiçeklerimizin susuz kalması sebebiyle hayati riske girmeleri veya ölmeleri ile sonuçlanan olayları engellemek içindi. Projemde CCS C programı ve pic16f628a entegresi baskı devre çiziminde proteus programı kullandım. 2 adet 6-12 V ile çalışan minik su pompalarını sürmek için BC547 transistör kullandım. Sistem DS1302 gerçek zaman entegresi ile anlık zaman bilgisini almaktadır. Günde 3 kere 10 saniye sıra ile motor1 ve motor2'yi çalıştırmaktadır. Projeyi fonksiyonlara örnek olması için birden fazla fonksiyon kullanarak yaptım. sistemde bulunan 3 ledin biri power led olup elektrik oldukça sürekli yanmaktadır. diğer ikisi çalışan fonksiyona göre yanmaktadır.
BeklemeDurum Fonksiyonu: hiçbir şart yokken ledler birer saniye arayla flip flop yaparlar.
LedYak Fonksiyonu: Saati göster fonsiyonunun hesapladığı HesapYap değişkeni kadar iki ledi aynı anda yakıp söndürür. Böylece sırasıyla saatin onlar basamağı, saatin birler basamağı, dakikanın onlar basamağı ve dakikanın birler basamağı kadar ledler yanıp söner. saatin doğruluğu kontrol edilir.
SaatiGoster Fonksiyonu: Hesap yap değişkenine o anki saat ve dakika bilgisinin atamasını yapar.
MotorCalis Fonsiyonu: For döngüsü içinde 10 saniye 2 motoru sıra ile çalıştırır. Motoru temsil eden led ise çalışma süresi boyunca yanar.
Ek sulama saati ihtiyacı olduğunda buton ile motorlar çalıştırılır.
Devrenin çalışan simülasyon, baskı devre ve kodlarını en kısa zamanda paylaşacağım. yapmak isteyenlere kolay gelsin. Baskı devrede DS1302
#include <16f628a.h> //Kullanılacak pic
#use delay(CLOCK=4000000) //Fosc=4Mhz
#fuses INTRC,NOMCLR,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT // Denetleyici konfigürasyon ayarları
#define RTC_SCLK PIN_A2 //DS1302 için pin tanımlamaları
#define RTC_IO PIN_A3
#define RTC_RST PIN_A1 //
#include "ds1302.c" //ds1302 ait fonksiyonlar programa eklenir
#define MOTOR2 PIN_B3
#define MOTOR1 PIN_B0
#define LED1 PIN_B4
#define LED2 PIN_B5
#define DATA PIN_B7
#define BUTON PIN_A7
#use rs232 (baud=9600, xmit=pin_B1, rcv=pin_B2, parity=N, stop=1)
//Global değişkenler
int saniye,dakika,saat,gun,ay,yil,haftanin_gunu; //ds1302 değişkenleri
int HesapYap=0, i=0;
int LedDizisi [11]={0,1,2,4,8,16,32,64,128,256,0};
void BeklemeDurum(){
//output_bit(LED1,LedDizisi[5]);
output_high(LED1);
delay_ms(1000); // 1 sn gecikme veriliyor
output_high(LED2);
output_low(LED1);
delay_ms(1000); // 1 sn gecikme veriliyor
output_low(LED2);
printf("Calisma Saati Bekleniyor\n");
}
void LedYak(){
for(i=1; i<=HesapYap; i++){
output_high(LED1);
output_high(LED2);
delay_ms(500); // 500ms gecikme veriliyor
output_low(LED1);
output_low(LED2);
delay_ms(500); // 500ms gecikme veriliyor
}
BeklemeDurum();
}
int SaatiGoster(int saat1, dakika1){
HesapYap=saat1/10; //Saatin Onlar Hanesini Göster.
LedYak();
HesapYap=saat1%10; //Saatin Biirler Hanesini Göster.
LedYak();
HesapYap=dakika1/10; //Dakikanın Onlar Hanesini Göster.
LedYak();
HesapYap=dakika1%10; //Dakikanın Birler Hanesini Göster.
LedYak();
}
void MotorCalis(){
for (int j=0; j<=10; j++){
output_high(LED1);
output_high(MOTOR1);
delay_ms(1000); // 1 sn gecikme veriliyor
printf("Motor1 Calisiyor\n");
}
output_low(MOTOR1);
output_low(LED1);
for (int k=0; k<=10; k++){
output_high(LED2);
output_high(MOTOR2);
delay_ms(1000); // 1 sn gecikme veriliyor
printf("Motor2 Calisiyor\n");
}
output_low(MOTOR2);
output_low(LED2);
}
///PROGRAM
void main(void){
set_tris_a(0b10000000); // RA7 ucu giriş olarak ayarlandı.
rtc_init(); // DS1302 başlangıç ayarları yapılıyor
//rtc_set_datetime(1,6,18,5,19,13); // Tarih ve Saat ayarları yapılıyor
while(1){
// DS1302'den saat,dakika,saniye bilgileri alınıyor
rtc_get_time(saat,dakika,saniye);
// DS1302'den gün,ay,yil ve günün isim bilgisi alınıyor
rtc_get_date(gun,ay,yil,haftanin_gunu);
BeklemeDurum();
if (saat==0 || saat==8 || saat==16)
{
if(dakika<=00 && saniye>=30){
MotorCalis();
}
}
if (input(BUTON)==1){
MotorCalis();}
if (saniye<=20){
SaatiGoster(saat, dakika);
}
if (saniye>=55){
output_high(LED1);
output_high(LED2);
delay_ms(3000);
}
}
}
Gültekin Aslan, C++ Dersleri, Cpp Eğitimi, C++ Kodları, C++ Hazır Projeler, Arduino Dersleri, Arduino Kodları, Arduino Hazır Projeler, CCS Pic 16F628A Dersleri, CCS Pic 16F628A Kodları, CCS Pic 16F628A Hazır Projeler, SCT89C52 Projeler, AT89C2052 Projeler, Python Dersleri. Mail: 33@gultekinaslan.com.tr
Kaydol:
Kayıtlar (Atom)
Zeytinlik Bakimi
03/03/2024 TARİHLİ BAKIM VE BESLEME
-
Şemasını ve baskı devresini paylaştığım çalışmada Sony dsx serisi model oto teybinin arka girişinde bulunan 3.5 mmlik streo ses jakı girişi...
-
Kodlarını ve baskı devresini paylaştığım projede arduino pro mini ile skorbord yapılmıştır. alınan sayılar ir kumanda ile yansıtılmaktadır. ...