Jeg har et spørsmål angående bruken av Millis () på en Leonardo Arduino. Jeg bruker den for tiden til å gå 4 sekunder mens jeg sender en seriell melding hvert sekund. Disse meldingene spiller av en lyd. På den fjerde meldingen er lyden annerledes for å betegne at Arduino har startet en begivenhet.
Jeg støter på et problem der lydene av og til spilles sporadisk uten et jevnt 1 sekund mellom dem. Jeg lurer på om det er en bedre måte å gjøre det jeg gjør? Under timingen gjør Arduino ingenting annet, og mottakermaskinen gjør heller ikke noe skatt. Er dette til og med et problem fra Arduino-siden? Mitt mottaksprogram er skrevet i C # ved hjelp av System.IO.Ports.SerialPort.
Årsaken til at dette gjøres gjennom Arduino er fordi arrangementet startet av Arduino må tilsvare nøyaktig lydene, men hvis dette ikke er løst, må jeg bearbeide dette.
Rediger: Kode etter ønske.
ugyldig oppsett () {// Oppsettkode} ugyldig sløyfe () {// Kode som håndterer andre seriemeldinger og forskjellige tilstander hvis (isSpecificState == true) onSpecificState ();} ugyldig onSpecificState () {// Oppsett for å håndtere tilstand lang holdStart = millis (); langt holdVarighet = 0; boolsk print1 = falsk; boolsk print2 = falsk; boolsk print3 = falsk; boolsk print4 = falsk; while (holdDuration < = 4000) {if (holdDuration > = 4000 &&! print4) {Serial.println ("tt_sound: 2"); print4 = sant; } annet hvis (holdDuration > = 3000 &&! print3) {Serial.println ("tt_sound: 1"); print3 = sann; } annet hvis (holdDuration > = 2000 &&! print2) {Serial.println ("tt_sound: 1"); print2 = sann; } annet hvis (holdDuration > = 1000 &&! print1) {Serial.println ("tt_sound: 1"); print1 = sann; } holdDuration = millis () - holdStart; } // Håndteringsstatus}
Som jeg nevnte i kommentarene, gjør Arduino ingenting annet mens timingen skjer.