kullanacağınız devre elemanı nedir? Düğme mi yoksa ayarlı direnç mi yada enkoder tarzı bir eleman mı? Kodlar hepsinde farklı olacak. |
düğme tercihim teşekkürler |
en üste: #define arti (hangi pini kullanacaksan numarası) #define eksi (hangi pini kullanacaksan numarası) setup() kısmına: pinMode(arti, INPUT); pinMode(eksi, INPUT); loop() kısmına: if(digitalRead(arti)){ pulseIn(arti, LOW); sicaklikdegisken = sicaklikdegisken + 0.1; } if(digitalRead(eksi)){ pulseIn(eksi, LOW); sicaklikdegisken = sicaklikdegisken - 0.1; } bunları ekleyeceksin. |
bu kadar basit miydi ya hiç kafamı çalıştırmamışım :D... Acaba Joystick ile de bi örnek verebilirmisiniz . |
pulseln nin amacı nedir mantığını daa anlatabilirmisiniz ? |
amacı tuş LOW yani boşta olduğu zaman sayması anlamı da mı kulla ıldı |
Tuş bırakılana kadar kodu durdurur. Durdurmazsa sürekli düşüş yaşanır. çok hızlı iniş çıkış sıcaklık değerini rahat ayarlayamamana sebep olur. elindeki joistick türü nedir? Hareket bilgisi lazım. |
çok teşekkür ederim. benim elimdeki ler basınca kalan cins ten miş. acaba basınca aktif basmayınca deaktiv butonlara ne deniyor . elimde joystick olarak hali hazırda yok ama modülü 2 eksenli alma imkanım olabilir. birde ben switch Case yapsam örnek menü 1 de sicaklikdegisken ini menü 2 de de nemdegisken diye yapsam aynı taşlarla yapabilirmiyim? |
Buton basma işinde parazit vardır. Basarken yada çekerken işlemciye ardarda basılıp çekiliyormuş gibi gösterir. Bunu engellemek için butonlara ufak kondansatörler bağlar yada kodla bekleme süresi ekleriz. En basit halini pulse in komutu ile verdim. daha detaylısı için millis() komutu ile bekletme işlevi kullanarak bekletilen süre dolunca ikinci basım gerçekleşiyormuş gibi işlemi devam ettirebilirsin. Bas çek şeklinde değilde açık kapalı butonlar ise onlarla menü gezintisi yapılmaz. PushButton tarzında olması menü gezintisi için daha iyidir. En güzel yöntem ise rotary encoder kullanmak. İmzamdaki sitede bir adet tanıttım oraya bak istersen. Bazı araba teyiplerinde olan, basınca teyibi açan, çevirince sesi yükseltip düşüren sonsuz dönmeye sahip encoderler daha güzeldir. Menü gezintisi ayarlayabilirsin tabi. Çok zor bir işlem değil. lcd print ile menü oluşturabilirsin. Mesela yukardaki verdiğim kodda sıcaklık artış ve azalmasının ardına lcd print komutu ekleyip değişimi ekrana yazdırabilirsin. 2 adet ayar değiştirme için giriş, 2 adet menü gezintisi için giriş sinyali olması yeterli olur. Menü gezintisi için giriş (onay seçim) ve çıkış olacak. Menü seviye değişkenlerin olacak. Her seviye için menü adları ekrana yazdırılacak. switch komutu menü için iyi olur. Her münü adına bir kimlik numarası verirsin, menü seviye değişkenlerine kimlik numarasını kaydeder ve yapılması gereken işlem için dallandırmalı seçim yaptırırsın. |
Tekrardan özür dilerim . verdiğiniz kod ile yapamadım. ama şu kod ile denedim ama birtürlü olmuyor.artım butona basıyorum sicaklikdegisken degisiyor herşey yolunda bir de düşüreyim diyorum düşmüyor. ISIS ile şemasını çıkardım. bi bakabilirseniz sevinirim. Rar halinde koydum. http://s4.dosya.tc/server2/fmwm2u/butonladegiskendegistirme.rar.html Kod:
|
#include <LiquidCrystal.h> Kodlarının düzenli çalışmasını istiyorsan, kod yazma mantığının gelişmesini istiyorsan; isimlendirmeleri dış ortamdaki tanımlamaların ile uyuştur, kaynak kullanımında uzun süreçlerle işlem yapmamaya dikkat et. lcd yazdırma uzun bir süreçtir, sürekli yazdırıyorsun. delay yerinede iç süre ölçeri kullanırsan daha dakik programlar oluşur. iç işleyişte nem eklemeyi de düşünüyorsun, süre kullanımındaki bekletmelerin hepsi kalkmalı. Dış ortamdan çoklu veri alma durumlarında buna dikkat et. Yukarda verdiğim kod hiç durmadan sürekli kontrol için akar. sıfır bekleme vardır. millis() komutu işlemcinin iç zaman sayacıdır. sayaçla kaydettiğim süre arasındaki fark bekleme süresi olarak ayarladığım 200 milisaniyeyi aşmadığında tepki vermez. tetiklemeler ile de süre değişkenleri yenilendiğinden butona ardarda basımlarda zıplamalı artış yaptırmaz. sürekli basmalarda her 200 mili saniyede bir artış yaptırır. |
çok teşekkür ederim. Öğrenme amaçlı daha çok dediğim gibi . detaylıca öğrenmek için daha fazla ne yapmalıyım . dediğiniz gibi mantık çok önemli. mantığı geliştirmek için ne gibi konulara bakmam lazım. ben öğrenmek için geleceğiyazanlar turkcell deki programı kullandım. temel bilgileri öğretiyor gibi. bi site önerirnisiniz makale tarzında olabilir. benim internette bulduklarım hep aynı tarzda olduğu için pek fazla bilgi katamıyorum |
pek fazla kaynak öneremiyorum. ben alt yapıyı epey geliştirdiğim için birebir sorunla karşılaşınca düzenleme yapısını verebiliyorum. bildiğim dillerin ve mantık yapılarının sayısını bile bilmiyorum. Zeka gelişimi içi çeşitli taktikler vardır. Sadece aynı yapı üzerinde sürekli durmak zekayı köreltir. farklı işlemler için zekanı zorla. hiç işlem yapmadan, hareket yapmadan sadece düşünerek çözümleme yoluna gitme alıştırması yap. ben elektronik programlamayı 16f87 işlemcisinin tüm iç yapısını öğrenerek çözdüm. Tüm lojik mantık işlevlerini kafada çözümleyip içerdeki hareketleri tek tek ilerliyormuşcasına asm kodlarının işleyişine kadar bit bit ilerliyerek çözdüm. uzun bir yol fakat sağlam mantık oturttum. Bundan önce zamnının basic, pascal gibi dillerini bilerek başladığım için asembler ve c++ da kolay geldi. Eğer çok ileri seviyeye çıkmayı düşünmüyorsan benden tavsiye alma. Çünkü işlemci ile çalışıyorsam işlemci transistör yapısına kadar kat kat nasıl yapılır, imal edilir öğrenme eğiliminde işin delisiyim. Ufak tefek işler için forumda soru sor, denk gelirsem cevaplarım. |
yardımlarınız için teşekkür ederim. Çok ileri seviye belki olmaz ama en azından kendim bi mantık yürütmem işlerimi kolaylaştıracak ve bana yetecek teşekkür ederim |
Tekrar dan özür dilerim. sizin kod işe yaradı teşekkür ederim. fakat daha fazla değişken için sayac ekledim. bunlarıda "&&" işareti ile if komutuna yerleştirdim. 1 olursa işlem yap diye ama lcd de gözükmüyor vede muhtemelen işlem yapmıyor.
|
16x2 lcd. kod doğru mu yani bu soru üzerine :-) sayac==1 yerine hiç bi şey koymazsam veya buton==HIGH VE YA LOW İLE yaptığımda gözüküyor |
|
teşekkürler fakat değişkenler butona bastığımda yükseliyor. youtuba video koydum. https://youtu.be/evZDUkKBa1A |
Örnekte sicaklikdegisken ini tuş ile veya joystick le 25 de 26 ya gibi bi değişim yaptırılabilir mi. bazı videolar da görmüştüm ama nasıl yapılacağını bulamadım çözemedim yardım edermisiniz.