Spørsmål:
Seriedata viser rart
sachleen
2014-02-17 08:24:00 UTC
view on stackexchange narkive permalink

Jeg har en enkel skisse som skriver ut "Hello World" til serien, men jeg får en haug med gibberish i stedet.

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

Hvorfor skriver ikke "Hello World" ut som koden sier?

Har du sjekket om initialisering av seriell port er riktig og samsvarer med PC-seriell terminal? Oppsettet () skal ha noe sånt som Serial.begin (9600);
@Rajendra den linjen er i kodeeksemplet jeg ga. Dessuten har jeg faktisk ikke problemet. Det er et vanlig spørsmål for nybegynnere, og jeg svarte på spørsmålet nedenfor.
Tre svar:
sachleen
2014-02-17 08:24:00 UTC
view on stackexchange narkive permalink

Styret og terminalen bruker sannsynligvis ikke samme baudrate. Sjekk nederst i høyre hjørne av Arduino Serial Terminal og sørg for at den er satt til 9600.

Serial Data

Seriell kommunikasjon fungerer ved å sende hele datastrømmen en bit av gangen. Dette er i motsetning til standard parallellport som sender en byte om gangen. Begge enhetene trenger å vite i hvilken hastighet dataene sendes. Videre må begge enhetene fungere i samme hastighet. Dette kalles baudrate.

Baud Rate

Baud betyr egentlig bare pulser per sekund. I sammenheng med seriell kommunikasjon betyr det hvor mange biter som overføres per sekund. En av de vanligste verdiene er 9600, men det er andre vanlige som er faktorer eller multipler av 9600. Det spiller imidlertid ingen rolle, så lenge begge enhetene fungerer i samme hastighet.

Hvis jeg sender deg meldinger raskere enn du får dem, mister du data. Hvis jeg sender deg meldinger tregere enn du mottar dem, blir du tull blandet med det jeg sendte deg.

Data, Parity, Stop bits

Hvis du ser på dokumentasjonen for start () ser du at det kan ta to parametere:

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

Forhåpentligvis forstår du hastighet nå, det er bitene per sekund som Arduino vil kommunisere med.

Den andre parameteren, config kode>, lar deg konfigurere noen andre ting om seriell dataoverføring. Dette er data-, paritet og stopp-biter. Du ser på siden at den har verdier som 5N1 , 6N1 og SERIAL_8N1 (standard)

Den første tallet representerer hvor mange databiter. Den andre karakteren forteller deg hva slags paritetsbit det er. E for jevn paritet, O for odd paritet, eller N for ingen paritet. Det tredje tallet forteller deg hvor mange stoppbiter.

Så egentlig, med 8N1 har vi 10 bits som sendes for hver 8 bits "dine" data. 1 startbit, 8 databiter og 1 stoppbit.

Uansett må begge sider bli enige om denne informasjonen så vel som hastigheten. Arduino Serial Terminal gir deg ikke muligheten til å endre disse innstillingene, men andre gjør det, så du må være sikker på at alle disse konfigurasjonsinnstillingene er de samme.

Mer informasjon på wiki: Asynkron seriell kommunikasjon

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

Jeg brukte en halv time på å løse det, og det var min Arduino Pro Mini som er 3.3V og jeg hadde valgt 5V i Arduino IDE (på PC). Serietrykk fungerer aldri sånn, selv med samme baudrate definert.

Velg riktig kort i Arduino IDE.

For å være klar, riktig prosessor (spenning / klokkehastighet) under kategorien Verktøy må velges.

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

Sachleens svar (over) sier:

  Board og terminal bruker sannsynligvis ikke samme baudrate. Sjekk nederst i høyre hjørne av Arduino Serial Terminal og sørg for at den er satt til 9600.  

Hvis dette tallet er 9600, og du fremdeles får forvrengede data, sjekk utdataene du fikk når du lastet opp kode. Den skal lese noe sånt som:

  Sketch bruker 2754 byte (8%) av programlagringsplassen. Maksimum er 30720 byte. Globale variabler bruker 195 byte (9%) av dynamisk minne, og etterlater 1853 byte for lokale variabler. Maksimum er 2048 byte.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: Versjon 6.3, samlet 17. januar 2017 kl. 12: 00:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide konfigurasjonsfil er "C: \ Program Files (x86) \ Arduino \ hardware \ tools \ avr / etc / avrdude.conf "Bruker port: COM5 bruker programmerer: arduino Overstyring av overføringshastighet: 57600  

Denne bunnlinjen (av det jeg har lagt ut) sier hva enhetens standard er baudrate er. For meg endret jeg Serial.begin (9600); -> Serial.begin (57600); og sjekket at det nederste høyre hjørnet på min Arduino Serial Terminal leste 57600 .

Etter at jeg kjørte dette, og det fungerte, klarte jeg å bytte tilbake til 9600 og få data som ikke var forvrenget. Arduino ser ut til å være kinkig ...



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...