fakirmaker ustam bilgisayarın başında değildi işte kodum da buAbicim çok gizli bi deney değilse dünyayı ele geçirmeye felan çalışmıyorsan paylaş şu kodu görelim. Nerden biliyim neden çalışmıyor
dmd.begin();
dmd.beginNoTimer();
box.print("D");
dmd.scanDisplay();
SoftDMD dmd(2, 1);
SoftDMD dmd(2, 1, pin_noe, pin_a, pin_b,pin_sck,pin_clk, pin_r_data)
ustam sorun sadece A0 pininde de değil anolog atanmış pinlerin hepsi boyle davranıyor.Sanıyorum bu ekranın arka planda kendini yenilemesinden kaynaklanıyor.
yerineKod:dmd.begin();
kullan ve ekrana yaptırdığın her işlemden sonra meselaKod:dmd.beginNoTimer();
yazdıkatan hemen sonraKod:box.print("D");
kodunu yaz. Manuel olarak ekranı yenilesin. Eğer olmazsaKod:dmd.scanDisplay();
yerineKod:SoftDMD dmd(2, 1);
Kod:SoftDMD dmd(2, 1, pin_noe, pin_a, pin_b,pin_sck,pin_clk, pin_r_data)
yazarak DMD nin pinlerini değiştir dahili spi dan ayırıp kafana göre pinler ver bir tanesini A0 yap böylelikle otomatik olarak kendisi kontrol etsin A0 pinini. Sen A0 yerine boşa çıkmış başka bir pin kullanırsın.
Evet daha başka sorun var mı? Bu bilgiyi baştan versen sanırım kitaplığı incelemezdim. Yani yukarıda yazdıklarımı boşa yazmış oldum. Bir pinin analog fonsksiyonu olması asıl i/o fonksiyonunu etkilemez. Analog pinler sen okumak isteyene kadar dijital gibi davranır. Analog fonksiyon ekstra bir fonksiyondur. Eğer analog pinlerin hepsi etkileniyorsa arduinodan veya dmd kitaplığından değil senin yazdığın koddan kaynaklanıyordur. serialEvent() fonksiyonu muhtemelen bu problemin kaynağıdır. serialEvent() fonksiyonu her karakter geldiğinde bayrak verir kesme üretir. Sen her karakter geldiğinde tekrar bir karakter gelmesini bekliyorsun. İkinci karakter geldiğinde kesme içinde kesme üretiyor, ve her seferinde senin aşağıdaki muhteşem kodunu çalıştırarak pinleri sıfırlıyor.ustam sorun sadece A0 pininde de değil anolog atanmış pinlerin hepsi boyle davranıyor.
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
/*
Serial Event example
When new serial data arrives, this sketch adds it to a String.
When a newline is received, the loop prints the string and clears it.
A good test for this is to try it with a GPS receiver that sends out
NMEA 0183 sentences.
NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or
other ATmega32U4 based boards.
created 9 May 2011
by Tom Igoe
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/SerialEvent
*/
String inputString = ""; // a String to hold incoming data
bool stringComplete = false; // whether the string is complete
void setup() {
// initialize serial:
Serial.begin(9600);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
// print the string when a newline arrives:
if (stringComplete) {
Serial.println(inputString);
// clear the string:
inputString = "";
stringComplete = false;
}
}
/*
SerialEvent occurs whenever a new data comes in the hardware serial RX. This
routine is run between each time loop() runs, so using delay inside loop can
delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
Ustam serial event aslında seri port kesmesi değil. Neden mi diyecek olursan ben sistemimi while döngüleri ile yaptım while döngüsü içinde ilgili slavin veri gönder pinine high yaptım slave veri gönderiyor ancak mastır while in içinden çıkamıyor yani serial event kesme oluşturmuyor yani woid loop takı kodlaEvet daha başka sorun var mı? Bu bilgiyi baştan versen sanırım kitaplığı incelemezdim. Yani yukarıda yazdıklarımı boşa yazmış oldum. Bir pinin analog fonsksiyonu olması asıl i/o fonksiyonunu etkilemez. Analog pinler sen okumak isteyene kadar dijital gibi davranır. Analog fonksiyon ekstra bir fonksiyondur. Eğer analog pinlerin hepsi etkileniyorsa arduinodan veya dmd kitaplığından değil senin yazdığın koddan kaynaklanıyordur. serialEvent() fonksiyonu muhtemelen bu problemin kaynağıdır. serialEvent() fonksiyonu her karakter geldiğinde bayrak verir kesme üretir. Sen her karakter geldiğinde tekrar bir karakter gelmesini bekliyorsun. İkinci karakter geldiğinde kesme içinde kesme üretiyor, ve her seferinde senin aşağıdaki muhteşem kodunu çalıştırarak pinleri sıfırlıyor.
C-like:digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW);
serial kesmesi için arduino nun örneklerinde gayet güzel bir kod var onu kendi koduna uyarlamalısın.
C++:/* Serial Event example When new serial data arrives, this sketch adds it to a String. When a newline is received, the loop prints the string and clears it. A good test for this is to try it with a GPS receiver that sends out NMEA 0183 sentences. NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or other ATmega32U4 based boards. created 9 May 2011 by Tom Igoe This example code is in the public domain. https://www.arduino.cc/en/Tutorial/BuiltInExamples/SerialEvent */ String inputString = ""; // a String to hold incoming data bool stringComplete = false; // whether the string is complete void setup() { // initialize serial: Serial.begin(9600); // reserve 200 bytes for the inputString: inputString.reserve(200); } void loop() { // print the string when a newline arrives: if (stringComplete) { Serial.println(inputString); // clear the string: inputString = ""; stringComplete = false; } } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // do something about it: if (inChar == '\n') { stringComplete = true; } } }
Fakir maker üstadım olur mu öyle şey boşa yazmak. İlgi yardımlarindan dolayı çok çok teşekkür ederim. Serial event in uğraşların sonucunda aslında serial kesme olmadığını keşfettim. Woid loop komutları islendikten sonra en alt konuttan sonra serial eventi kontrol ediyor. Neden böyle kanıya vardım peki. Oda şöyle oldu ben yazılımımı while yapısıyla yaptım ancak while yapısından ne yaptıysam çıkaramadım programımi. Bir önceki while yapısını her serial kesme geldiğinde verii okunacak ve bı sonraki while nin şartı saglanacakti ama gelgorki öyle olmadı. Yukarıda paylaştığım yapı tam olarak çalışıyor aslında ama şöyle bir problem oluyor. Normalde 1 er saniyelik aralıklarla 7 adet slave den veriyi çekmesi lagzim ama 6 tanesini alıyor 7. Ci yi ise bazen alabiliyor bazen alamıyor du. Bu sorunda şundan kaynaklanıyor dmd den arta kalan 6 adet dijital çıkışa bağlı slaveler sorunsuz ama A0 pinine bağlı slave sorun yaratıyordu. O da şundan dolayı kaynaklı ben A0 pinini lojik high yaptığımda A0 pini anlık pals atıyor bunuda slave bazen yakalıyor bazen yakalayamiyor. Sonra A0 dan A1,A2,A3,. ... Hepsine bağladım ama hepsi aynı sorunu yaptı normalde 1 sn yanık kalması lagzim ama anlık pals atıyor. Sorunu çözemedim. Sonra sistemi ardu megaya yükledim ve dijital pinlerle atamaları yaptım. Yukarıdaki koduyukledim her şey yolunda hiçbir sorun yok 7 ayrı slaveden hiç hata vermeden haberlesiyor. Serial eventi serial kesme olarak düşünüyordum amaaaaa. Değilmiş. Ancak halaa kafam basmıyor dmd kütüphanesi neden anolog atanmış pinleri bozuyorEvet daha başka sorun var mı? Bu bilgiyi baştan versen sanırım kitaplığı incelemezdim. Yani yukarıda yazdıklarımı boşa yazmış oldum. Bir pinin analog fonsksiyonu olması asıl i/o fonksiyonunu etkilemez. Analog pinler sen okumak isteyene kadar dijital gibi davranır. Analog fonksiyon ekstra bir fonksiyondur. Eğer analog pinlerin hepsi etkileniyorsa arduinodan veya dmd kitaplığından değil senin yazdığın koddan kaynaklanıyordur. serialEvent() fonksiyonu muhtemelen bu problemin kaynağıdır. serialEvent() fonksiyonu her karakter geldiğinde bayrak verir kesme üretir. Sen her karakter geldiğinde tekrar bir karakter gelmesini bekliyorsun. İkinci karakter geldiğinde kesme içinde kesme üretiyor, ve her seferinde senin aşağıdaki muhteşem kodunu çalıştırarak pinleri sıfırlıyor.
C-like:digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW);
serial kesmesi için arduino nun örneklerinde gayet güzel bir kod var onu kendi koduna uyarlamalısın.
C++:/* Serial Event example When new serial data arrives, this sketch adds it to a String. When a newline is received, the loop prints the string and clears it. A good test for this is to try it with a GPS receiver that sends out NMEA 0183 sentences. NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or other ATmega32U4 based boards. created 9 May 2011 by Tom Igoe This example code is in the public domain. https://www.arduino.cc/en/Tutorial/BuiltInExamples/SerialEvent */ String inputString = ""; // a String to hold incoming data bool stringComplete = false; // whether the string is complete void setup() { // initialize serial: Serial.begin(9600); // reserve 200 bytes for the inputString: inputString.reserve(200); } void loop() { // print the string when a newline arrives: if (stringComplete) { Serial.println(inputString); // clear the string: inputString = ""; stringComplete = false; } } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // do something about it: if (inChar == '\n') { stringComplete = true; } } }
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?