Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

PLC PİC denemelerim

Başlatan protezdiyot, 16 Ocak 2015, 15:37:00

Salih

Alıntı yapılan: protezdiyot - 22 Ocak 2015, 13:48:43
Hocam Şu kısım bende çalışmıyor?
if (i00 && i01)   Ben kodu bu şekilde yazınca hiçbir işlem olmuyor. Ama Şu şekilde yazınca sistem işliyor;

if(input(i00) && input(i01))


Ayrıca;
"RB0 çıkışı aktifse rb5 çıkışı aktif olsun " komutunu nasıl yazarım.
1 nolu buton basılıysa ve RB0 ledi yanıyorsa RB5 ledi yansın demek istiyorum.


Benim programın tamamını kullanman gerekiyordu.
Çünkü program sadeleşsin diye tanımlamalar yapmıştım,
öğrenirsen faydalanırsın diye.
Programı siteden komple kopyala ve kendi programını silerek,
üzerine kopyala.

#define i00 input(pin_a0)
#define i01 input(pin_a1)
#define i02 input(pin_a2)
#define i03 input(pin_a3)



protezdiyot

#16
Alıntı yapılan: salih - 22 Ocak 2015, 13:56:05
Benim programın tamamını kullanman gerekiyordu.
Çünkü program sadeleşsin diye tanımlamalar yapmıştım,
öğrenirsen faydalanırsın diye.
Programı siteden komple kopyala ve kendi programını silerek,
üzerine kopyala.

#define i00 input(pin_a0)
#define i01 input(pin_a1)
#define i02 input(pin_a2)
#define i03 input(pin_a3)




Program komple kullanıldı. Hatta sizin derlediğiniz haliyle kullandım.Ama bir yerlerde sanırım yanlış butonlara basıyoruz. :)

>>>> işaretiyle belirttiğim **** koyduğum yere "eğer kapama motoru çalışıyorsa" nasıl yazarım?yani q01 in aktif olduğunu nasıl girebilirim oraya?



#include <bariyer.h>

#define i00 pin_a0
#define i01 pin_a1
#define i02 pin_a2
#define i03 pin_a3
#define q00 pin_b0
#define q01 pin_b1


void main()
{
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);

   while(TRUE)
   {
   
   output_toggle(pin_b4);// uyarı ışığı sürekli yansın
   delay_ms(25);
    if(input(i00) && input(i01) &&  !input(i02))
     {
     output_high(q00);//açıl
     }
 
      if(input(i02))
      {
     
      output_low(q00);//açılma dursun
      delay_ms(1000);
        bekle://kapatma işlemi için bir alttaki if komutu şartını bekle
        
         if(input(i03) & !input(i01))//arada araç yoksa ve bariyer kapalı değilse 
         
      
         {
         delay_ms(1000)
         output_high(q01);// kapanma motoru çalışsın
         delay_ms(25);
         
         goto kapama;//bu işlemi bitirdikten sonra diğer şartlara bak
         
         }
         
         
        goto bekle; 
         
      }
      kapama:
      
    >>>>  if(input(i03) && *********  abi buraya "q01 aktifse" diye bir bilgi girmem gerekiyor )// bariyer kapanırken araya araç girerse bariyer dursun ve açılsın hemen
      {
      output_low(q01);//kapama motoru
      delay_ms(25);
      output_high(q00);//açma motoru
      
      }
      
      
      if(input(i01)) //bariyer kapanınca
      
      {output_low(q01);}//kapama motoru dursun.
      
      }}
    
     
   

Salih

Şu şekilde yaz.
Ama benim yazdığım mantığa göre yazmazsan, programın çok verimli olmaz.
Yinede sen bilirsin.

if(input(i03) && input_state(q01))

protezdiyot

#18
Veeee Çalıştı !!

Çok Teşekkür ederim salih usta.
Bir sonraki devrede görüşmek üzere.İsteyenler için devre şemasıyla birlikte kodunu ekliyorum.Dediğim gibi öğrenmek için bunları yapıyorum.Mantığı iin sayfaya detaylarıyla ekleyeceğim.


#include <bariyer.h>

#define i00 pin_a0
#define i01 pin_a1
#define i02 pin_a2
#define i03 pin_a3
#define q00 pin_b0
#define q01 pin_b1


void main()
{
set_tris_a(0xff);
set_tris_b(0x00);
output_b(0x00);

   while(TRUE)
   {
   
 if(input(i00) && input(i01) &&  !input(i02)) //Bariyer kapalıysa ve açık olduğunu  gösteren swich basılı değilse Start butonuna basılınca bariyeri aç
     
     {
     output_high(q00);//Bariyeri aç (led1)
     }
 
     

 if(input(i02)) //bariyer açıldı i02 swichine bastı
      
  {
      output_low(q00);//bariyerin açılması dursun
      delay_ms(1000); //10 sn beklesin
      bekle:                 //kapatma işlemi için bir alttaki if komutu şartının sağlanmasını  bekle
        
         
                if(input(i03) && !input(i01))   //arada araç yoksa ve bariyer kapalı değilse kapanma motoru çalışsın
         
      
         {
         
         output_high(q01);   // kapanma motoru çalışsın
         delay_ms(25);         //Güvenlik için bekleme
         
         goto kapama;      //bu işlemi bitirdikten sonra diğer şartlara bak"KAPAMA'ya git"
         
         }
         
         
        goto bekle; //i3 ve i1 sartının sağlanması için tekrar BEKLE'ye dön
         
      }
      
     
 kapama:
      
if( !input(i03) && input_state(q01))// bariyer kapanırken araya araç girerse bariyer dursun ve açılsın
      {
      output_low(q01);//BARİYERİ kapama motoru dursun
      delay_ms(250);
      output_high(q00);//BARİYERİ açma motoru çalışsın.
      }
      
      
      
if(input(i01)) //Bariyer kapanınca
      
      {output_low(q01);}  //Kapama motoru dursun.
      
      
 }

   }
    
     
   

protezdiyot

Devam> Merdiven otomatiği uygulaması.(Çalışıyor)

#include <merdiven otomatiği.h>

#define i00 pin_a0 //Ra 0'ı i00 olarak adlandırdık
#define q00 pin_b0 //RB 0'ı q00 olarak adlandırdık

void main()
{
set_tris_a(0xff);// A portunun hepsi giriş
set_tris_b(0x00);// B portunun hepsi çıkış
output_b(0x00); //B portunu temizle


   while(TRUE) //Döngü oluştur
   { 
     if (input(i00)) //Eğer i00 girişindeki butona basılırsa
     {
     output_high(q00); //q00' aktif et
     delay_ms(1000); // 10 sn bekle
     output_low(q00); //q00 pasif et
     }
     
     
     }
   }