öncelıkle butun arkadaslara ıyı aksamlar şöyle bir sorunum var bitane saksı ıcıne yerlestırdıgım probla gerılım ölcerek saksının susuz kaldıgında devre calısarak sulama görevı yapacagım yanlız code yazdım gerılım okuyorum hersey tamam code ufak bı eklentı yapmam lazım kod asagıda devre topragın geregından fazla kuru oldugunu anladıgında ledler kayarak yanıyor buraya kadar tamam kayma işlemını yaparkan AN0 yanı adc okudugum portuda etklıyor bu leddler kayarken bu portu etkılememesı ıcın kodda nasıl bi değişiklik yapmam lazım ? bide leddler kayarken flaşöru nasıl eklerım ? bu dedıklerımı yapmak ıcın ugrasdım ama işin ıcınden cıkamadım yardımlarınızı beklıyorum sımdıden tsk ederım sema ve code asagıdadır.
probu temsilen pot vardır şemada.
(http://e1204.hizliresim.com/w/y/53jvk.jpg)
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=1;
x=Read_adc();
delay_ms(10);
if(x>43)
{
for (z = 0; z <=6; z++)
{
output_a(led);
led=led<<1;
delay_ms(150);
}
}
}
}
1. Ledleri seri direnç olmadan kullanmaman gerekir.
2. Sistemin pille çalıştığını varsayalım. ADC ile ölçüm yapmaya başlamadan önce ledleri söndürür ardından ölçüm yapar daha sonra da yanması gereken ledleri enerjilersen ADC ledlerin akım yüklemelerinden etkilenmez.
ADC ölçümü çok hızlı yapıldığından, yanan bir ledi ADC ölçümü esnasında söndürüp ardından yakman görsel olarak farkedilemez.
bulent hocam cvp ıcın teşekkür ederım sema temsılı ledler önunde 330R drenc var pcb de burda koymadım sadece sımılasyonda devre 9v pille calısıyor 7805 var bu devreyı ılk etapda nemlı toprakda calısmaya baslatacagım ıcın toprak kurudukca cıcek suyu emdıkce bellı degere geldıgınde toprak nem oranı baya azaldıgında devre çalıyor ve ledler kaymaya baslayıp buzzer ötüyor benım sorunum leddleri kaydırırken AN0 adc portuda yanıp sönüyo ledlerı kaydırdıgım ıcın benım sorum şu komut nasıl yazarımkı ledler kayarken an0 adc portu etkılenmez output_a(led); komutunda led değişkenı cıkıs portlara aktarılyor ama hepsıne ben bu komutta nasıl değişiklik yapmam lazımkı cıkısa aktarırken int led değişkenını AN0 adc portu harıc diyebılmem için bunun yerıne şöyle yazdım calısmadı
örnek: output_bit((pin_a1);(pin_a2);(pin_a4);(pin_a5),led) seklinde led int bit olarak dedıgım portlara aktarım dedım olmadı bunu nasıl yaparım ? AN0 ADC portu katmamak ıcın cıkısa ? bıde led flasör ıcın nasıl kod eklemem lazım hem kayacak ve flasor gıbı cakacak ledler ? sorum bu.
yardım edecek kımse yok mu ? :(
donguyu 5 e kadar saydir ve led =2 yap
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 21:22:18
donguyu 5 e kadar saydir ve led =2 yap
eyw kardesım oldu :D cok basıtmıs hıc aklıma gelmedı sayma rakamı degıstırmek son olarak kayan leddlere nasıl flaşör eklerız ?
Alıntı yapılan: bulut_01 - 30 Nisan 2012, 21:35:51
eyw kardesım oldu :D cok basıtmıs hıc aklıma gelmedı sayma rakamı degıstırmek son olarak kayan leddlere nasıl flaşör eklerız ?
ledlerin kaydigi donguden hemen sonra yapabilirsin kac kez flash yapcak.bise sorcak ledleri neden kaydiriyosun?kac ledin var?
3 tane ledım var onlar kayıyor flasor ıcın nasıl dongu eklemem lazım ? semada gıbı devre ledler kaydıgı surece daıma flash yapacak. ledlerı kaydırmamın ve flas seklınde cakmasının ıstememın sebebı anımasyon olsun dıye
peki ledleri kaydirmak yerine ledlerle topragin nemlilik oranini gostersen daha iyi olmazmi ? vuumetre gibi.soruna gelince flash nasil yapilir su sekilde ledler yakilir ve hemen sondurulur yani yanma suresi cok kisa olmasi gerek.
mesela soyle burda bekeleme surelerini kafama gore yaptim sen istedigim sekilde degistirebilirsin.
output_high(pin_a1);
delay_us(100);
output_low(pin_a1);
delay_ms(1);
bu kodu tam olarak nereye eklıcem yazdıgım kodda ?
for dongusunden sonra
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 21:59:43
for dongusunden sonra
dediğin sekılde ekledım tam flasor olarak yanmıyor dengesız yanıyor
bekleme surelerini degisik sekillerde ayarlaman gerek mesela bide soyle dene birince delaya 1ms ver ikinci delaya 10 ms ver bakalim
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 23:17:46
bekleme surelerini degisik sekillerde ayarlaman gerek mesela bide soyle dene birince delaya 1ms ver ikinci delaya 10 ms ver bakalim
yapdım şöyle bi manzara çıkdı.
(http://g1204.hizliresim.com/w/y/53y9t.jpg)
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=2;
x=Read_adc();
delay_ms(100);
if(x>43)
{
for (z = 0; z <=5; z++)
{
output_high(pin_a1);
delay_us(500);
output_low(pin_a1);
delay_ms(5);
output_high(pin_a2);
delay_us(500);
output_low(pin_a2);
delay_ms(10);
output_high(pin_a4);
delay_us(500);
output_low(pin_a4);
delay_ms(15);
output_a(led);
led=led<<1;
delay_ms(150);
}
}
}
}
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=2;
x=Read_adc();
delay_ms(100);
if(x>43)
{
for (z = 0; z <=5; z++)
{
output_a(led);
led=led<<1;
delay_ms(150);
}
for (z = 0; z <=5; z++)
{
output_a(0x16);
delay_us(500);
output_a(0x00);
delay_ms(5);
}
}
}
}
boyle dene bakalim
Alıntı yapılan: justice_for_all - 30 Nisan 2012, 23:41:52
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=2;
x=Read_adc();
delay_ms(100);
if(x>43)
{
for (z = 0; z <=5; z++)
{
output_a(led);
led=led<<1;
delay_ms(150);
}
for (z = 0; z <=5; z++)
{
output_a(0x16);
delay_us(500);
output_a(0x00);
delay_ms(5);
}
}
}
}
boyle dene bakalim
scop amca pek farkı olmadı diyor :o
(http://g1204.hizliresim.com/w/y/53zwn.jpg)
ordaki ki minik kare dalgalar flash yapiyor aslinda proteusda goremezsin.bekleme surelerini buturun biraz daha fark olacaktir.
biliyorum ordakı kare dalgalar flash oldugunu ama buyuk kareler olmaması lazım sadece flashların olması lazım o buyuk kare dalgaların olması ılgınc
o buyuklerde led kaymasi iste sen sirayla olsun demedin mi once ledler kayacak sonra flash yapacak bu sirayla gtmicekmi
evt de ordakı flash dıkkat ettıyle eş zamanlı çakıyo 3 led aynı anda cakıyo hem kayıp hemde cakmıyo ? benim istediğim 1 led çaksın sonra 2 led caksın sonra 3 led caksın hem kayacak hem cakacak ama 3 led aynı anda cakmıyacak sırayla cakıp kayacak.
nasil istedigini daha detayli yazarmisin yani once ledler kayacak sonra 1.led cakacak sonra ikinci sonra ucuncu oylemi?
kardesım 1. led çakdı sonra 2. led çakdı sonra 3. led çakdı bu sırayla devam edecek ne olacak hem kaymıs hemde cakmıs olacak yanlız kayarken ve çakarken 2 led aynı anda yanmıyacak sırayla bırı cakacak sonecek dıgerı cakacak sönecek dıgerı cakacak sonecek ne oldu 3 ncu led en son gıne 1 led aynı sekıl devam edecek.
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=2;
x=Read_adc();
delay_ms(100);
if(x>43)
{
for (z = 0; z <=5; z++)
{
output_a(led);
delay_ms(1);
output_a(0x00);
led=led<<1;
delay_ms(15);
}
}
}
}
boyle olmasi lazim
justice_for_all eyw kardesım oldu buzzer ıcınde farklı zamanla ekleyerek ıstedıgım gıbı calısıyor yardımların ıcın cok saol son halı kodun.
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO
#FUSES NOWDT //No Watch Dog Timer
#fuses INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin disabled
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
unsigned long int x=0;
int z,led;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_adc(adc_clock_div_32);
setup_adc_ports( AN0_analog);
set_adc_channel(0);
set_tris_a(0x01);
delay_us(20);
output_a(0x00) ;
while(TRUE)
{
led=2;
x=Read_adc();
delay_ms(100);
if(x>43)
{
for (z = 0; z <=3; z++)
{
output_bit(pin_a5 0X00);
delay_ms(200);
output_toggle(pin_a5);
delay_ms(20);
output_a(led);
delay_us(600);
output_a(0x00);
led=led<<1;
delay_ms(15);
}
}
}
}
kodda bir hata var sanirim duzelt onu istersen
hangısı nerde ?
output_bit(pin_a5 0X00); burda ikisinden biri olcak hangisi ?
output_bit(pin_a5 0X00); burda neden hata varkı ? ben sadece pin_a5 portunu sıfırlıyorum sace picin a5 portu sıfırladım burda hata hangısı ?
yazilim hatali bu sekilde derleyici hata vermedimi ??? benim bildigim output_bit(pin_a0,0); olmasi lazimdi ???
benım ccs akıllı abısı o benım dılımden anlıyo hata vermedı output_bit(pin_a1 0X00); ile output_bit(pin_a1,0); arasında fark yokkı neden hata versın ;D
bu ccs ya cok salak yada cok akilli hangisi bilmiyom artik ;D kendi yardim dosyasinda su sekilde vermis "output_bit (pin, value)" senin kodda arada virgul yok ama hata vermemis bise diyemiyorum artik ;D neyse sana iyi geceler kardesim. buarada adananin neresindensin sen bende adanaliyim
bence ccs c nin versiyonunu kontrol et bazı sürümleri hatalı oluyor
arada virgül olması lazım mutlaka
eyw saolasın kardesım yardımların ıcın kucukseyler gozden kacıyo ugrasdırıyor ınsanı ama ccs yi pbp daha cok sevdım daha zevklı yazması sanada ıyı geceler.
Alıntı yapılan: cemilkendir - 01 Mayıs 2012, 01:29:28
bence ccs c nin versiyonunu kontrol et bazı sürümleri hatalı oluyor
arada virgül olması lazım mutlaka
hocam bendekı PCWHD 4.068 2012 full versiyonu.
Alıntı yapılan: justice_for_all - 01 Mayıs 2012, 01:28:05
buarada adananin neresindensin sen bende adanaliyim
Adana merkez cukurova adanakoop da oturuyorum yuzuncu yıla yakın.