Merhaba,
Nextion HMI modülü ile daha önce uğraşmış olduğum projenin dışında bir şey yapmak için, normalde kullandığım şekilde arduino mega kartının TX ve RX uçlarını haberleşme için Nextion modülünün uygun yerlerine bağlıyorum.
Modülün çalışması normal fakat herhangi bir program değişikliği yapmadığım halde TX ve RX uçları bağlı olduğu zaman arduino kartımı programlayamıyorum. Haberleşme uçlarını çıkardığım zaman düzgün bir şekilde programlama yapabiliyorum. Haberleşme uçları takılı olduğu zaman IDE de program derlendikten sonra kart üzerindeki STAT led i iki kez yanıp sönüyor ama programlama yapmayıp timeout hatası veriyor.
Daha önce bu şekilde bir sorun yaşayan oldumu?
Sorun olması normal.Hardware değilde software serial ile rx tx uçlarınızı değiştirebilirsiniz.
kart atmega işlemcisini programlarken tx rx uçlarını kullanıyor ise sorun çıkıyor olabilir..
Daha önce çalıştırdığım şekilde uçları değiştirmeden çalıştırabiliyorum programı. Problem programlama esnasında
Merhaba arduinonun tüm modellerinde tx rx pinlerine bir donanım bagladigmda (Bluetooth hmi vs) hiç bir şekilde yükleme yükleme yapmıyorum arduino.cc de okumuştum sanirsam mecburen bağlantıyı kesmek gerekiyrmus. Bu arada hmi kullanımını nasil öğrendiniz bende öğrenmeye çalışıyorum ancak yeterli video veya makale bulamadım itead studio haricinde. Siz de itead stüdyodaki bilgilerdenmi öğrendiniz. Kaynak kitap vs olsa çok güzel olur
İlginç..öyle bir bilgiye rastlamamıştım ama inceleyeceğim ayrıca donanım yerine yazılım seri bağlantı değiştirip deneyeceğim.
Ben örneklerden yola çıkarak yol katettim nextion da..fakat dün bir video buldum, videoyu hazırlayan amca itead ın döküman yetersizliğinden böyle video hazırladığını belirtmiş. Akşam linkini paylaşırım
https://youtu.be/D-zgtylBKUc
https://youtu.be/2zDb9GMNKpM
Mega2560 kullanıyorsan 4 tane uart var. rx0 ve tx0 programlama ve usb bağlantısı için kullanılıyor. Diğer uart bağlantılarını programlama olayından ve haberleşmesinden bağımsız olarak kullanabilmen gerekir. (rx1/tx1, rx2/tx2/rx3/tx3)
Hikaye yazarı gibi hikaye anlatmak yerine doğrudan çizimi ver veya hangi bacaklara bağladığını belirt ki nasıl yardımcı olabileceğimizi anlayalım.
Sorunu anlamada bir problemin olmadığını verdiğin cevabın ilk bölümünde anlayabiliyorum da ikinci bölümdeki maksadını anlayamadım. @Kabil ATICI
Maksat yok. Sadece bir istek, bir dilek.
Tek soru: Elektroniğin dili nedir? Dünyanın her yerinde insanların konuştukları dil ne olursa olsun, anlaşılabilen şekilde!.
Öreğin;
(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRhl_xNo6Wzf1gd7MNQFuAv83eZVUdmzSy3SNSZ4vCNvw-QC-Fp)
bu şekil dünyanın her yerinde bu konu üzerinde çalışan insanlar için aynı şeyi ifade eder.(direnç)
Yani sen çizimini koy ki, aynı dili konuşalım!
Diğer türlü daha önce de belirttiğim gibi Andersen'den masallar.
Ben bilirim diyorsan, dediğin gibi sen bilirsin.
Tamamdır, her zaman şema ile anlatılması en uygunudur. İlk mesajda sadece iki uç bağlı olduğunu belirttiğim için şema göndermeyi gerekli bulmadım.
Yaptığım işlem ve son durum şu şekilde;
Arduino Mega 18 ve 19 numaralı uçları haberleşme için kullandım (TX1,RX1). Bunun için kod içerisindeki seri haberleşme komutlarının Serial kısımlarının sonuna "1" eklemem yeterli oldu. Bu şekilde sıkıntısız bir şekilde programlama yapabildim.
Serial1.begin(9600); // seri portu aç 9600 bps
gelenByte = Serial1.read();
char1=Serial1.read();
Sayın microcozmoz bu ekranların uygulama sayısı nette çok fazla değil,bu ekranlarla bir dönem merakımdan vede bir projemden dolayı çalışma imkanım oldu,program yüklemelerimi ftdi dönüştürücü ile yapmıştım kolay oldu,6 butonlu ve bir sensör değeri ölçen gauge uygulamasını sorunsuz şekilde yapmıştım fakat bir aktüatörü çalıştırabilmem için geçici buton oluşturamadım(+ butonuna bastığım sürece aktüator çıkacak ,- butonuna bastığım sürece ise girecek)bu ekranla bunu yapabilir miyim sizce,çok kaynak araştırdım fakat bulamadım.
Yapabilirsiniz, yanlış hatırlamıyorsam paylaştığım ikinci videoda buna benzer bir uygulama var fakat o uygulamadaki + butonuna basıldığında değer bir artıyor - de bir azalıyor. Sizin bahsettiğiniz şu şekilde olabilir;
Buton hem basmada hemde bırakmada değer döndürebiliyor. Basıldığında gönderilen değere göre hareket sağlanabilir ve bırakıldığında gönderilen değere göre durdurulur.
Videoyu inceledim ama sanırım benim işimi yine görmüyor,dikkat ederseniz butona basılı tutmuyor her butona bastığında değer artıyor,ben butona basıldığı sürece bir led bile yaksam ve butonu bıraktığımda led sönse o bile yeterli benim için,eğer ki böyle bir uygulama ile karşılaşırsanız ve paylaşırsanız sevinirim,kolay gelsin.
https://github.com/bborncr/nextion (https://github.com/bborncr/nextion)
http://openhardware.gridshield.net/home/nextion-lcd-getting-started-for-arduino (http://openhardware.gridshield.net/home/nextion-lcd-getting-started-for-arduino)
Yukarıda belirttiğim Github adresinden Nextion için hazırlanmış kütüphaneyi zip olarak indirdikten sonra arduino arayüzünde taslak-->library ekle-->.zip kitaplığı ekle işlemi ile kütüphaneyi ekliyoruz.
Bir butona basılı tutulduğunda 13 numaralı uca bağlı ledin yakılması ve butondan elimizi çektiğimizde söndürülmesi için aşağıdaki kodu derleyip arduino ya yüklüyoruz;
#include <SoftwareSerial.h>
#include <Nextion.h>
SoftwareSerial nextion(10, 11);// Nextion TX ucu 10 ve RX 11 Arduino uçlarına bağlanır (Ben Mega kullanıyorum)
Nextion myNextion(nextion, 9600); //myNextion adında bir Nextion nesnesi oluşturuluyor.
//9600 bps ile nextion adında seri bağlantı oluşturulur
void setup()
{
Serial.begin(9600); //Seri port ekranında Nextion dan gelen bilgiyi basmak için seri port açılır
pinMode(13,OUTPUT);
myNextion.init();
}
void loop()
{
String message = myNextion.listen(); //mesajın gelip gelmediği kontrol edilir
if(message != "") // mesaj alındı ise..
{
Serial.println(message); //alınan mesajı seriden bas..
if(message == "65 0 1 1 ffff ffff ffff") //eğer mesaj içeriği butona basıldığını belirtiyorsa (Press Event)
{
digitalWrite(13,HIGH); //Ledi yak
}
else
{
digitalWrite(13,LOW); //Ledi söndür
}
}
}
Nextion IDE ' de hazırlanan buton için "Touch Press Event" ve "Touch Release Event" durumlarındaki "Send component ID" seçenekleri seçilir.
Nextion Ekran komut setinin açıklamalarının olduğu bu sayfada http://wiki.iteadstudio.com/Nextion_Instruction_Set (http://wiki.iteadstudio.com/Nextion_Instruction_Set) basma ve bırakma olayları için ekranın ne tarzda bir veriyi döndürdüğü anlatılmış.
Basılma işlemde alınan veri "65 0 1 1 ffff ffff ffff" şeklindedir.
Kısaca anlamı 0X65"Dokunma olayı"+Sayfa ID+Komponent ID+Dokunmaolayı+Bitiş.
Bende yeni uğraşıyor sayılırım, test ettim çalışıyor :)