Kysymys:
Sarjatiedot näyttävät outoilta
sachleen
2014-02-17 08:24:00 UTC
view on stackexchange narkive permalink

Minulla on yksinkertainen luonnos, joka tulostaa "Hello World" -sarjaan, mutta saan sen sijaan joukon hämmennystä.

  void setup () {Serial.begin (9600 );} void loop () {Serial.println ("Hei maailma"); delay (1000);}  

Miksi se ei tulosta "Hello World" kuten koodi sanoo?

Oletko tarkistanut, onko sarjaportin alustaminen oikein ja yhteensopiva PC-sarjapäätteen kanssa? Asennuksen () pitäisi olla jotain Serial.begin (9600);
@Rajendra, että rivi on antamassani koodiesimerkissä. Sitä paitsi minulla ei todellakaan ole ongelmaa. Se on yleinen asia aloittelijoille, ja vastasin alla olevaan kysymykseen.
Kolme vastused:
#1
+8
sachleen
2014-02-17 08:24:00 UTC
view on stackexchange narkive permalink

Alusta ja pääte eivät todennäköisesti käytä samaa siirtonopeutta. Tarkista Arduino-sarjaliitännän oikeasta alakulmasta ja varmista, että sen arvoksi on asetettu 9600.

Sarjatiedot

Sarjaliikenne toimii lähettämällä koko tietovirta yksi bitti kerrallaan. Tämä on ristiriidassa tavallisen rinnakkaisportin kanssa, joka lähettää yhden tavun kerrallaan. Molempien laitteiden on tiedettävä, kuinka nopeasti tietoja lähetetään. Lisäksi molempien laitteiden on toimittava samalla nopeudella. Tätä kutsutaan siirtonopeudeksi.

Siirtonopeus

Siirtonopeus tarkoittaa vain pulsseja sekunnissa. Sarjaliikenteen yhteydessä se tarkoittaa, kuinka monta bittiä lähetetään sekunnissa. Yksi yleisimmistä arvoista on 9600, mutta on muitakin yleisiä arvoja, jotka ovat tekijöitä tai 9600: n kerrannaisia. Sillä ei kuitenkaan ole väliä, kunhan molemmat laitteet toimivat samalla nopeudella.

Jos lähetän sinulle viestejä nopeammin kuin sinä saat ne, menetät tietoja. Jos lähetän sinulle viestejä hitaammin kuin sinä vastaanotat niitä, saat hölynpölyä sekaisin siihen, mitä lähetin sinulle.

Data, pariteetti, pysäytysbitit

Jos katsot dokumentaatiota Jos kyseessä on begin () , näet, että siihen voi olla kaksi parametria:

  Serial.begin (nopeus) Serial.begin (nopeus) , config)  

Toivottavasti ymmärrät nopeuden nyt, Arduino kommunikoi bittiä sekunnissa.

Toinen parametri, config , voit määrittää joitain muita tietoja sarjaliikenteestä. Nämä ovat data-, pariteetti- ja stop-bittiä. Sivulla on arvot, kuten 5N1 , 6N1 ja SERIAL_8N1 (oletus)

Ensimmäinen numero edustaa kuinka monta databittiä. Toinen merkki kertoo, millaista pariteettibittiä on. E parilliselle pariteetille, O parittomalle pariteetille tai N pariteetille. Kolmas numero kertoo kuinka monta stop-bittiä.

Joten 8N1: llä lähetetään 10 bittiä jokaista "sinun" -datasi 8 bittiä kohden. 1 aloitusbitti, 8 databittiä ja 1 lopetusbitti.

Joka tapauksessa molempien osapuolten on sovittava näistä tiedoista sekä nopeudesta. Arduino-sarjapääte ei anna sinulle mahdollisuutta muuttaa näitä asetuksia, mutta toiset tekevät, joten sinun on varmistettava, että kaikki nämä kokoonpanoasetukset ovat samat.

Lisätietoja wikistä: Asynkroninen sarjaliikenne

#2
  0
tmaster
2017-04-02 14:33:56 UTC
view on stackexchange narkive permalink

Yritin ratkaista ongelman puoli tuntia, ja Arduino Pro Mini on 3.3V ja olin valinnut 5V Arduino IDE: stä (PC). Sarjatulostus ei koskaan toimi tällä tavoin edes samalla määritetyllä siirtonopeudella.

Valitse oikea alusta Arduino IDE: ssä.

Selkeyden vuoksi oikea prosessori (jännite / kellotaajuus) Työkalut -välilehdessä on valittava.

#3
  0
John Doe
2018-07-11 06:25:08 UTC
view on stackexchange narkive permalink

Sachleenin vastaus (yllä) sanoo:

  Alusta ja pääte eivät todennäköisesti käytä samaa siirtonopeutta. Tarkista Arduino-sarjaliitännän oikeasta alakulmastaja varmista, että sen arvoksi on asetettu 9600.  

Jos tämä numero on 9600 ja saat silti epäselvää tietoa, tarkista lähtö, jonka sait ladatessasi koodi. Sen pitäisi lukea jotain:

  Sketch käyttää 2754 tavua (8%) ohjelman tallennustilasta. Enimmäismäärä on 30720 tavua. Globaalit muuttujat käyttävät 195 tavua (9%) dynaamista muistia, jolloin paikallisille muuttujille jää 1853 tavua. Enimmäismäärä on 2048 tavua. 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: Versio 6.3, koottu 17. tammikuuta 2017 klo 12: 00:53 Tekijänoikeus (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Tekijänoikeus (c) 2007-2014 Joerg Wunsch Koko järjestelmän määritystiedosto on "C: \ Program Files (x86) \ Arduino \ hardware \ tools \ avr / etc / avrdude.conf "Portin käyttäminen: COM5 Ohjelmoijan käyttäminen: arduino Siirtonopeus: 57600  

Tämä viimeinen rivi (jonka olen kirjoittanut) kertoo laitteen oletusarvon baudinopeus on. Minulle muutin Serial.begin (9600); -> Serial.begin (57600); ja tarkistin, että Arduino-sarjaterminaalin oikeassa alakulmassa oli luku 57600 .

Kun suoritin tämän ja se toimi, pystyin siirtymään takaisin 9600: een ja saamaan hämmentyneitä tietoja. Arduino näyttää olevan hieno ...



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...