Tuhaf görünen seri veriler


12

Seriye "Merhaba Dünya" yazdıran basit bir çizimim var, ama bunun yerine bir sürü anlamsızlık alıyorum.

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.println("Hello World");
    delay(1000);
}

Neden kodun dediği gibi "Merhaba Dünya" yazdırmıyor?


Seri bağlantı noktasının başlatılmasının uygun olup olmadığını ve PC seri terminaliyle eşleşip eşleşmediğini kontrol ettiniz mi? Setup (), Serial.begin (9600) gibi bir şeye sahip olmalıdır;
Rajendra

@Rajendra verdiğim kod örneğinde bu satır. Ayrýca, aslýnda problemim yok. Bu yeni başlayanlar için yaygın bir sorundur ve aşağıdaki soruyu cevapladım.
sachleen

Yanıtlar:


8

Kart ve terminal muhtemelen aynı baud hızını kullanmıyor. Arduino Seri Terminalinin sağ alt köşesini kontrol edin ve 9600 olarak ayarlandığından emin olun.

Seri Veriler

Seri iletişim, tüm veri akışını tek seferde bir bit göndererek çalışır. Bu, bir seferde bir bayt gönderen standart paralel bağlantı noktasının aksine. Her iki cihazın da verinin hangi hızda gönderildiğini bilmesi gerekir. Ayrıca, her iki cihazın da aynı hızda çalışması gerekir. Buna baud hızı denir.

Baud Hızı

Baud gerçekten sadece saniyedeki darbeler anlamına gelir. Seri iletişim bağlamında, saniyede kaç bit iletildiği anlamına gelir. En yaygın değerlerden biri 9600'dür, ancak 9600'ün faktörleri veya katları olan diğer yaygın değerler de vardır. Ancak, her iki cihaz aynı hızda çalıştığı sürece gerçekten önemli değildir.

Size aldığınızdan daha hızlı mesaj gönderiyorsam, veri kaybedersiniz. Size aldığınızdan daha yavaş mesajlar gönderiyorsam, size gönderdiğim şeyle saçma bir şekilde karışırsınız.

Veri, Eşlik, Durdurma bitleri

İçin belgelere bakarsanız, begin()bunun iki parametre alabileceğini görürsünüz:

Serial.begin(speed)
Serial.begin(speed, config)

Umarım şimdi hızı anlarsınız, Arduino'nun iletişim kuracağı saniye başına bit sayısıdır.

İkinci parametre, configseri veri aktarımı hakkında başka şeyler yapılandırmanızı sağlar. Bunlar Veri, Eşlik ve Durdurma bitleridir. Bunu değerler gibi olan sayfada göreceğiniz 5N1, 6N1veSERIAL_8N1 (the default)

İlk sayı kaç veri biti olduğunu gösterir. İkinci karakter size ne tür bir parite biti olduğunu söyler. Eeşit parite için, Otek parite Niçin veya hiçbir parite için. Üçüncü sayı kaç tane stop biti olduğunu gösterir.

Gerçekten, 8N1 ile, "8" verilerinizin her 8 biti için 10 bit gönderilir. 1 başlangıç ​​biti, 8 veri biti ve 1 durdurma biti.

Her neyse, her iki tarafın da bu bilginin yanı sıra hız üzerinde anlaşması gerekiyor. Arduino Seri Terminali size bu ayarları değiştirme seçeneği sunmaz, ancak diğerleri yapar, bu nedenle bu yapılandırma ayarlarının hepsinin aynı olduğundan emin olmanız gerekir.

Wiki hakkında daha fazla bilgi: Asenkron seri iletişim


0

Sachleen'in cevabı (yukarıda) şöyle diyor:

The board and terminal are probably not using the same baud rate. 
Check the bottom right corner of the Arduino Serial Terminal
and make sure it is set to 9600.

Bu sayı 9600 ise ve yine de bozuk veri alıyorsanız, kodu yüklerken elde ettiğiniz çıkışı kontrol edin. Şöyle bir şey okumalıdır:

Sketch uses 2754 bytes (8%) of program storage space. Maximum is 30720 bytes.
Global variables use 195 bytes (9%) of dynamic memory, leaving 1853 bytes for local variables. Maximum is 2048 bytes.
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM5 -b57600 -D -Uflash:w:C:\Users\Owner\AppData\Local\Temp\arduino_build_457862/LockCode.ino.hex:i 

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600

Bu alt satırda (gönderdiğim şey) cihazınızın varsayılan baud hızının ne olduğu belirtiliyor. Benim için değiştim Serial.begin(9600);-> Serial.begin(57600);ve Arduino Seri Terminalimin sağ alt köşesinde 57600 okuduğunu kontrol ettim.

Bunu çalıştırdıktan sonra çalıştı ve 9600'e geri dönüp bozuk olmayan veriler elde ettim. Arduino titiz görünüyor ...


0

Bunu çözmek için yarım saat harcadım ve 3.3V olan Arduino Pro Mini'mdi ve Arduino IDE'de (PC'de) 5V seçtim. Seri baskı, aynı baud hızı tanımlanmış olsa bile asla böyle çalışmaz.

Arduino IDE'de doğru kartı seçin .

Açık olmak için, Araçlar sekmesi altındaki doğru işlemci (voltaj / saat hızı) seçilmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.