Pic 16f84 Mavi Kapak Toplama Kampanyası için Kod yazmada yardım.

ozgurr89

Üye
Katılım
11 Tem 2009
Mesajlar
29
Puanları
1
Yaş
37
Merhaba arkadaşlar bir konuda yardıma ihtiyacım var.

Bir abimin ricası üzerine üniversitede okuyan kızının bitirme ödevine yardımcı olacağım. Ödev süreside kısa 4 gün. olayı aktarayım geçen gün yolda denk geldik kızının ödevinin olduğunu 1 aydır nasl yapacağını düşündüğünü araştırdığını ve netice alamadığını söyledi son bir kaç gündür işe dahi gitmiyormuş bende yardımcı olabilirim dedim. Mavi kapak toplama kampanyası için bir makina yapacaklar. 20 Mavi kapakta bir kutudan yada cihazdan herhangi bir çikolata düşecek. Ben üniverstede Pic 16f84 gördüm onu biliyordum. Fakat terkrarlanmayan bilgi unutulur olduğundan unuttum şimdi hatırlamaya çalısıyorum.

program kısmı;
Bana Su kodları yazacak arkadaş varmı Acaba Bir tane buton swich kullanacağım (kapak geçtiğinde swich devreyi tetikleyecek) 20 kere +5v geçtiğinde olduğunda pic başka bir çıkışı 10 saniye +5v verse yeterli motor ile bir düzenek kurup çikolatayı düşüreceğim yardımlarınızı ihtiyacım var basit bir kod ama yapamıyorum. Önerilere açığım ayrıca ne kullanayım ne yapabilirm diye :) hex dosyasını, gerekli bilgi ve önerilerinizi gönderirseniz sevinirim
 
Adsız.jpg:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0070000A10F152820181E28A01C2228A8
:100040000000222808008313831203130000080015
:100050000730990083169F01093085008312A4019F
:1000600005183C280130A300F4300220A40A143003
:100070002402031D3C283D2830288514A401133098
:10008000A300883002201330A3008830022085109E
:060090003028630049283E
:02400E00C43FAD
:00000001FF
yukarıdaki devresi ,diğeri de pice yüklenecek hex ,ben çıkışa led bağladım sen kullanacağın motora uygun sürücü bağlarsın
 
PIC16F84A için MPLAB üzerinde Hi-Tech-C ile yazılmış Kod

Kod:
#include <htc.h>

typedef unsigned char uchar;

#define _XTAL_FREQ 4000000 // PIC için 4MHz kristal kullanınız

#define Kapak RA0    // Kapak atılan giriş
#define Motor RB0 // Motor Çıkışı. Eğer DC motorsa ve motor sürücü kullanıyorsan. Projede motor tek yöne döneceği için
                          // In1 = +5V, In2= 0V ve En = PIC'in RB0 bacağını bağlayınız.
void PIC_Init(void)
{
    TRISA = 0xFF; TRISB = 0x00; // PORTA giriş, PORTB çıkış olarak ayarlandı.
    PORTA = 0; PORTB = 0;
}

void delay(uchar time)    // Kaç saniye bekleyecek?
{
    uchar i;
    while(time--)
    {
        for(i=0;i<8;i++)
            __delay_ms(125);
    }
        
}

void main(void)
{
    uchar Sayac = 0;
    PIC_Init();
    while(1)
    {
        if(Kapak)
        {
            while(Kapak); // Kapak sensör önünden tamamen geçinceye kadar bekleniyor.
            Sayac++;
            if(Sayac >= 20)
            {
                Sayac=0;
                Motor = 1; // Motor Çalışıyor
                delay(10); // Yaklaşık 10s bekliyor. Not: Tam 10s değil!
                Motor = 0;        
            }
        }
    }
}

Projenin kaynak dosyalarını ve Hex kodunu buradan indirebilirsiniz.

Kolay gelsin...
 
Yardımlarınız için gerçekten çok teşekkür ederim. beni büyük bir sıkıntıdan kurtardınız.

Kapağın Swiche Çarpıp geçme süresi yaklasık 3sn olsa yeterli olur diye düşünüyorum. pic swich komutunu aldıktan sonra 2kapak komut tekrarı için 3 ila 4 saniye beklemesi yeterli olur bence siz ne öneriridiniz. motor konusuna gelincede dc motor kullanacağım bu oyuncakların içeriisndene cıkan çikolatayı itip raya düşürse yeterli olur bence hepinize teşekkür ederim. Komut dosyalarını cd ye yazıp hocasına göndereceğim.

program 20 kapakta bir tekrar 10sn yaklaşık motoru çalıştırması gerekiyor yukarıda o şekilde degil sanıyorum yanlışmı anladım programı :( dongü bir program olarak burada 20 kere kapak geçecek döngü olacak 1 kere 10 saniyeliğine motorun çalışması tekrar kapak ve tekrar motor çalışsın şeklinde :)

son isteğim sizden
bana devreyi şu şekilde cizip ;
http://jmandon.free.fr/base 16F84.GIF
hex dosyasını ve orjinal kodlama dosyasını şeklinde yazıdığınız .asm kodu göndermeniz.

önerileriniz varsa açığım daha tam birşey yapmadım bugun aksam üzeri mazeme almaya gideceğim.
birde malzeme listesini yazarsanız sevinirim :) çok sağolun çok teşekkür ederim
 
Yardım Edecek Arkadaşlar Yokmu :/ Süresi biraz kısıtlı pic 16f84 ü temin ettim pic yazıcısınıda
 
Yukarıdaki program zaten sizin istediğiniz gibi çalışmakta. 20 kapaktada bir 10s motor çalışacak ve sonra tekrar 20 ye kadar sayacak ve motoru 10 s ye çalıştıracak.
 
PIC16F84A için MPLAB üzerinde Hi-Tech-C ile yazılmış Kod

Kod:
#include <htc.h>

typedef unsigned char uchar;

#define _XTAL_FREQ 4000000 // PIC için 4MHz kristal kullanınız

#define Kapak RA0    // Kapak atılan giriş
#define Motor RB0 // Motor Çıkışı. Eğer DC motorsa ve motor sürücü kullanıyorsan. Projede motor tek yöne döneceği için
                          // In1 = +5V, In2= 0V ve En = PIC'in RB0 bacağını bağlayınız.
void PIC_Init(void)
{
    TRISA = 0xFF; TRISB = 0x00; // PORTA giriş, PORTB çıkış olarak ayarlandı.
    PORTA = 0; PORTB = 0;
}

void delay(uchar time)    // Kaç saniye bekleyecek?
{
    uchar i;
    while(time--)
    {
        for(i=0;i<8;i++)
            __delay_ms(125);
    }
        
}

void main(void)
{
    uchar Sayac = 0;
    PIC_Init();
    while(1)
    {
        if(Kapak)
        {
            while(Kapak); // Kapak sensör önünden tamamen geçinceye kadar bekleniyor.
            Sayac++;
            if(Sayac >= 20)
            {
                Sayac=0;
                Motor = 1; // Motor Çalışıyor
                delay(10); // Yaklaşık 10s bekliyor. Not: Tam 10s değil!
                Motor = 0;        
            }
        }
    }
}

Projenin kaynak dosyalarını ve Hex kodunu buradan indirebilirsiniz.

Kolay gelsin...

Hocam merhaba Devrenizi ISIS7 ile kurdum fakat motor sürekli dönmekte 10sn den sonra durup devreyi tekrarlamamakta. Aksam üzeri devreyi plakete kuracağım. Sizden ricam benim kapak swich yerim biraz sıkıntılı bir kapak 2 3 kerede sciwh i tetikliye biliyor yuvadan geçene kadar yani ilk swich tetiğinden sonra 3 sn içerisinde olan tetikleri dikkate almasa ve motor 10 sn sonra tekrar devreyi tekrarlasa mümkünmüdür vaktiniz varmıdır. bana yazılımı düzeltip gönderebilirmisiniz. vaktim kısıtlı olmasa işimden ve proje süresinden eski defterleri açıp tekrardan programlamayı öğreneceğim. şimdiden teşekkür ederim
 
Bilgisayarım yanımda olmadığı için programı tekrar düzeltip sana yollayamıyorum. Eve gidince kodu ve isisdosyasın koyacağım.
 
Yalnız isis te devreyi kurduktan sonra PIC e çift tıkladığında çıkan ekrandaki kristal ayarını 4 MHz yapmayı unutma. Ayrıca ISIS gerçek zamanlı çalışmayabilir. Bu ihtimali de göz önünde tutmalısın
 
Yukarıdaki kodu inceledim.Büyük ihtimalle çalışacaktır.Anlamak için motor yerine bir led takın. delay(1) yapıp deneyin.Led 1sn yanıp sönmesi gerekir.10sn isis için uzun bir süre de ondan dolayı görememe ihtimalin var.
 

Forum istatistikleri

Konular
127,959
Mesajlar
913,913
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst