avatar_ete

Matematik Operatörlerin Kullanımı

Başlatan ete, 25 Aralık 2011, 14:12:28

ete

Pwm3434,
Şöyle olabilir;
IF LDR>42 and ldr<49 then sistem aktif
If ldr > 50 then sistem pasif

Ete

pwm3434

etehocam dediğin şekilde  yapabiliyorum. ldr,pot ham değerindeki bilgiye  göre sistemi  aktif  etmelidir.
şu şekilde  tarif etsem sende  bunları  gerçek  kodlara çevirirmisin:
hocam pot bilgisinin 50 olduğunu  varsayalım.

//eğer ldr ham değer biligisi pot bilgisine eşit olursa yada pot bilgisinden 5 aşağı yada 5 yukarı olursa //
yani 45 ile 55 arasında  olduğunda sistem  aktif.


ete


IF LDR>(pott-6) and ldr<(pott+6) then sistem akti

Ete

pwm3434

ete hocam  niçin  olmadi ki  acaba  dosya ekledim bakarmısın.

ete

Pc başına oturamıyorum. Ayağa kalkmam oturmam 10 gün yasak. Ipad ile mesajlara yattığım yerden bakıp cevaplıyabiliyorum. Zip -rar dosyalarını açamam (aslında açıyorumda içindekileri açamıyorum)
Olmayan yer neresi ise onu koy buraya ancak öyle görebilirim.
Ete

mg1980


pwm3434

ete hocam öncelikle geçmiş olsun  allah şifa  versin  üzüldüm  hocam  sizin  durumunuza  neyse  inşallah  belkide  daha  iyi sonuç  olacak ileride. 
sizin verdiğiniz  komutla  ancak pott ve  ldr eşit olduğunda sistem  aktif  oluyor.
hocam ldr ile pott un farkını alıp ve  bu farkın -5 ile +5 arası olduğunda sistem  aktif  olurmu.

ete hocam  tekrardan  allah  şifa  versin acizane  elimizden  bişeyler  gelirse kötü günlerinizde  yardımcı  olmaya  çalışalım.

İlyas KAYA

Sayın ETE; Geçmiş olsun. Umarım eski sağlığınıza kavuşursunuz. Allah c.c şifa versin.

Sayın PWM3434;  Sayın ETE nin verdiği kod doğrudur. Ancak sizin kontrol ettiğiniz +- 5 değeri nerede ise eşite yakın. 10 bitlik bir çözünürlükte 5 değeri çok düşük.
Bu nedenle siz eşit olduğunda çalışıyor zannediyorsunuz.

5 değeri 50 olarak değiştirirseniz devreniz sanırım istediğiniz gibi çalışacaktır.

Yani şöyle olmalıdır;


IF LDR>(POTT-50) and LDR<(POTT+50) then  GOTO DONGU

Saygılarımla.

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

nurim

Alıntı yapılan: kayatech - 16 Mart 2013, 18:17:30
Sayın ETE; Geçmiş olsun. Umarım eski sağlığınıza kavuşursunuz. Allah c.c şifa versin.

Sayın PWM3434;  Sayın ETE nin verdiği kod doğrudur. Ancak sizin kontrol ettiğiniz +- 5 değeri nerede ise eşite yakın. 10 bitlik bir çözünürlükte 5 değeri çok düşük.
Bu nedenle siz eşit olduğunda çalışıyor zannediyorsunuz.

5 değeri 50 olarak değiştirirseniz devreniz sanırım istediğiniz gibi çalışacaktır.

Yani şöyle olmalıdır;
IF LDR>(POTT-50) and LDR<(POTT+50) then  GOTO DONGU
Saygılarımla.

Evet, çözüm bu şekilde olmalıdır. Ama, bu değer 46--54 arası aktif olur.

"pwm3434" şöyle istediği için
-"...//eğer ldr ham değer biligisi pot bilgisine eşit olursa yada pot bilgisinden 5 aşağı yada 5 yukarı olursa //
yani 45 ile 55 arasında  olduğunda sistem  aktif..."

Küçük bir farkla 45--55 için şöyle olmalıdır.
IF LDR>(pott-60) AND ldr<(pott+60) then DONGU 'sistem aktif
Kolay Gelsin
nurim

ooben

hepinize merhabalar kolaylıklar ve başarılar dilerim ...
bi sorum olacaktı hocam;

bi step motor sürüyoruz dir ve pulls göndererek  ve her gönderdiğimiz pulls i sayıyoruz.
dir=1
a:
high portb.3:pauseus bekle
low portb.3:pauseus bekle
say=say+1
if say=65535 then sey=sey+1 and say=0
goto a

gibi sonra işlem tamamlandığında bir switch yardımıyla veya bir sensör sayesinde 1.turu tamamladığını algılayıp
dir i tersleyip "dir=0 " tekrar kontrol ediyoruz ve işlem bitmiş olacak
sonuçta

bu arada bu step motorun bağlı olduğu dairenin çevresi "20mm*(2*3.14)=20*6.28 = 125,6*10=1256,000mm
bunları da değişkenlere attıım cev_tam ve cev_onda
lcdout $fe,1,"pulls ",#sey,",",#say
lcdout $fe,$c0,"çevre ",#cev_tam,",",#cev_onda
pause 100

ekranda gördük.
sorum şu :

cevre             /             pulls sayısı ( sey,say
1256.000  /        124,96586
teşekkürler hocam..
ooben

ete

Bir sürü şey anlatıp sonunda bir bölme işlemini sormana şaşırdırm.
Bende sana başka türlü cevap vereyim o zaman. bir sürü step motorla iş yapan program yazdım. Hiç birisinde senin yazdığın hesaba ihtiyacım olmadı. Sebebi basit. Step motorlar puls başına bir adım atar ve bu adımın derecek karşılığı ise ya motorda yada paramterelerinde yazılıdır. Em çok kullanılanı ise 1,8 derece olanıdır. Bir tam tur 360 derece oldupuna göre bu motor bir tam tur için 200 puls almalıdır diye hemen hesaplayabilirsin. Buradan kaç puls ile ne kadar yol aldığını da hesaplayabilirsin.
İllaki hesabı yapmak istersen 32 bit çarpma ile rakamlardan birisini büyütmek veya her ikisinide büyütmek ve sonra yine 32 bit bölme ile bir birlerine bölmen gerekir.
B=124,96586 * 100
A=1256 *100:
C=DIV 32   B
şeklinde olması gerekir.

Ete

ooben

aslında haklısınız ama benim kafamın karışmasına sebep olan şey , ben şunları bilmiyorum
*step motorun merkezinden hareket almayacak
*kaça kaç rediktör var bilmiyorum
*dolayısı ile ben sadece dairenin çevresini biliyorum onun için paulls sayıyorum
* ayrıca step motor sürücü sü ise 0 dan 16 ya kadar bölüyor hangi modda çalışacağını da bilmiyorum
*belki ekranda ben dicem şuna getir
onun için kafam karıştı

hocam bir örnekle açıklar mısınız anlayamadım
tyeşekkür ederim ooben

ete

Bir bölme işleminde pay ve payda aynı sayı ile çarpılırsa işlem sonucu değişmez. Bu özellikten yararlandık. Sonra rakam büyüdüğü için 32 bit bölme yaptık. 1256 x 100 işlemi word değerini aşacağı için sonuç pic tarafından ara hafızada 32 bit olarak saklanır. Div32 komutu bu sonucu alıp verilen parametreye böler. Verdiğim örmek zaten başka örnek bekleme.
Ete

ooben

iyi akşamlar..
hocam geçmiş olsun
umarım yakın zamanda iyileşirsiniz. ( umarım  kötü bi sebepten değildir.)


cevre_tam var word    :cevre_tam  =1256
cevre_onda var word  :cevre_onda=235
puls_tam var word      :puls_tam    =124       'bu sayı "124*65535 aslında"
puls_onda var word    :puls_onda  =9586

1256        -     234       /        124  "65536 ya bolunmuş hali"       -    9586

a=cevre_tam/puls_tam : 124  "65536 ya bolunmuş hali"
b=cevre_tam//puls_tam :124  "65536 ya bolunmuş hali"

c=cevre-_tam/puls_onda
d=cevre-_tam/puls_onda

e=cevre_onda/puls_tam
f=cevre_onda//puls_tam

g=cevre_onda/puls=onda
h=cevre_onda//puls=onda
k=a+c+e+g
m=b+d+f+h


gibi mi olacak

yazılarınızı okudum tüm yazılarınızda küsüratı değişkenin içine aldığınızı gördüm
bu örneklerden bi çalışma yaptım.

bu sorduğum biraz farklı hocam
yukarıda anlatmış olabilirsiniz belki ama ben anlayamadım.
rakamların küsüratlarını mümkün mertebe koruyabilmek için uzun tuttum .
bu durumda nasıl olabilir ?
teşekkürler hocam..
ooben

Powered by EzPortal