Saya punya sketsa sederhana yang mencetak "Hello World" ke serial, tapi saya malah mendapat omong kosong.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello World");
delay(1000);
}
Mengapa tidak mencetak "Hello World" seperti yang tertulis dalam kode?
Jawaban:
Board dan terminal mungkin tidak menggunakan baud rate yang sama. Periksa sudut kanan bawah Terminal Serial Arduino dan pastikan sudah diatur ke 9600.
Data Serial
Komunikasi serial berfungsi dengan mengirimkan seluruh aliran data sedikit demi sedikit. Ini berbeda dengan port paralel standar yang mengirim satu byte pada suatu waktu. Kedua perangkat perlu tahu pada kecepatan apa data sedang dikirim. Selanjutnya, kedua perangkat harus beroperasi pada kecepatan yang sama. Ini disebut baud rate.
Tingkat Baud
Baud benar-benar hanya berarti pulsa per detik. Dalam konteks komunikasi serial, itu berarti berapa banyak bit yang ditransmisikan per detik. Salah satu nilai yang paling umum adalah 9600, tetapi ada yang umum lainnya yang merupakan faktor atau kelipatan dari 9600. Namun, tidak masalah, asalkan kedua perangkat beroperasi pada kecepatan yang sama.
Jika saya mengirimi Anda pesan lebih cepat dari yang Anda terima, Anda kehilangan data. Jika saya mengirimi Anda pesan lebih lambat dari yang Anda terima, Anda akan masuk akal dengan apa yang saya kirimkan kepada Anda.
Data, Paritas, Stop bit
Jika Anda melihat dokumentasi untuk
begin()
, Anda akan melihatnya dapat mengambil dua parameter:Semoga Anda mengerti kecepatan sekarang, itu adalah bit per detik di mana Arduino akan berkomunikasi.
Parameter kedua
config
,, memungkinkan Anda mengonfigurasi beberapa hal lain tentang transmisi data serial. Ini adalah bit Data, Paritas , dan Stop. Anda akan melihat pada halaman itu memiliki nilai seperti5N1
,6N1
danSERIAL_8N1 (the default)
Angka pertama mewakili berapa banyak bit data. Karakter kedua memberitahu Anda apa jenis bit yang ada.
E
untuk paritasO
genap, paritas ganjil, atauN
tanpa paritas. Angka ketiga memberitahu Anda berapa banyak bit yang berhenti.Jadi sungguh, dengan 8N1, kami memiliki 10 bit yang dikirim untuk setiap 8 bit data "Anda". 1 bit mulai, 8 bit data, dan 1 stop bit.
Bagaimanapun, kedua belah pihak harus menyetujui informasi ini serta kecepatannya. Terminal Serial Arduino tidak memberi Anda opsi untuk mengubah pengaturan ini, tetapi yang lain melakukannya, jadi Anda harus memastikan semua pengaturan konfigurasi ini sama.
Info lebih lanjut tentang wiki: Komunikasi serial asinkron
sumber
Jawaban Sachleen (di atas) mengatakan:
Jika nomor ini 9600, dan Anda masih mendapatkan data yang kacau, periksa output yang Anda peroleh saat mengunggah kode. Seharusnya membaca sesuatu seperti:
Intinya (dari apa yang saya posting) mengatakan apa baudrate default perangkat Anda. Bagi saya, saya mengubah
Serial.begin(9600);
->Serial.begin(57600);
dan memeriksa bahwa sudut kanan bawah Terminal Serial Arduino saya membaca 57600.Setelah saya menjalankan ini, dan itu berhasil, saya bisa kembali ke 9600 dan mendapatkan data yang tidak kacau. Arduino tampaknya rewel ...
sumber
Saya menghabiskan setengah jam mencoba menyelesaikannya, dan Arduino Pro Mini saya adalah 3.3V dan saya telah memilih 5V di Arduino IDE (di PC). Pencetakan serial tidak pernah berfungsi seperti itu bahkan dengan laju baud yang sama ditentukan.
Pilih papan yang benar di IDE Arduino.
Agar jelas, prosesor yang benar (kecepatan voltase / jam) di bawah tab Tools harus dipilih.
sumber