ዝርዝር ሁኔታ:

የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት 9 ደረጃዎች
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት 9 ደረጃዎች

ቪዲዮ: የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት 9 ደረጃዎች

ቪዲዮ: የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት 9 ደረጃዎች
ቪዲዮ: ማሰብ መጨነቅ ቀረ የጠፋብን ቪድዮ ፎቶ አውድዮ ጽሁፍ ድምጽ እንዴት መመለስ ይቻላል 2024, ሀምሌ
Anonim
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት
የድምፅ የድምፅ ፋይሎችን (ዋቭ) ከአርዱዲኖ እና ከ DAC ጋር ማጫወት

ከአውዲኖ ኤስዲ ካርድዎ የ wav ፋይል ኦዲዮን ያጫውቱ። ይህ አስተማሪ በ SdCard ላይ ያለው የ wav ፋይል በቀላል ወረዳ ወደ ድምጽ ማጉያ እንዴት እንደሚጫወት ያሳየዎታል።

የ wav ፋይል 8 ቢት ሞኖ መሆን አለበት። 44 KHz ፋይሎችን ለመጫወት ምንም ችግር አልነበረብኝም።

ምንም እንኳን ታማኝነት ባይኖርም ፣ የድምፅ ጥራት በጣም አጥጋቢ ነው።

ተከታታይ ሞኒተር ፋይሉን ለመምረጥ ይጠቅማል። ፋይሎቹ አድሎግ በሚባል አቃፊ ውስጥ መሆን አለባቸው።

ይህ አስተማሪ የ wav ቀረፃዎችን ወደ ኤስዲ ካርድ ካስቀመጥኩበት ከቀድሞው ፕሮጀክት ይከተላል-

ወረዳው ርካሽ 8 ቢት ዲጂታል ወደ አናሎግ መቀየሪያ (DAC) እና አንድ ቺፕ ኦዲዮ ማጉያ ይጠቀማል።

ማቋረጫዎችን ለማቀናበር ቁልፍ ክፍሎች ከአማንዳ ጋሻይ እጅግ በጣም ጥሩ ጽሑፍ የተወሰዱ

ደረጃ 1: መስፈርቶች

መስፈርቶች
መስፈርቶች
መስፈርቶች
መስፈርቶች

አርዱዲኖ- ሜጋውን እጠቀማለሁ ፣ ሆኖም ኡኖ የማይሠራበት ምንም ምክንያት የለም።

ኤስዲካርድ አንባቢ-ፕሮግራሙ በ ‹ሎጂክ ልወጣ› V2 ለተገዛው የማይክሮ ኤስዲ ማቋረጫ ቦርድ

ለ SdCard ማዋቀሪያ ዝርዝሮች ይህንን ትምህርት ይመልከቱ-

DAC0832 LCN- እጅግ በጣም ጥሩ 8 ቢት ዲጂታል ወደ አናሎግ መቀየሪያ- ጥቂት ፓውንድ።

LM386 N-1 Op እንደ ርካሽ እንደ ቺፕስ

20 መንገድ ቺፕ ሶኬት

ባለ 8 መንገድ ቺፕ ሶኬት

9 ቮልት የኃይል አቅርቦት- ባትሪ ይሠራል።

LM336 2.5 ቮ የቮልቴጅ ማጣቀሻ

10uF Capacitor * 3 (ማንኛውም ቮልቴጅ ከ 9 ቮ በላይ)

10 ohm resistor

50nF capacitor- (ወይም በ 47nF አቅራቢያ የሆነ ቦታ ፣ 56nf ፣ 68nf- ያደርጋል)

220uF Capacitor

64 ohm ድምጽ ማጉያ

10 ኪ መስመራዊ ፖታቲሞሜትር

በአርዱዲኖ እና በወረዳው መካከል ያሉትን 8 የውሂብ መስመሮች ለማገናኘት ገመድ-

በ Uno ላይ 8 ግንኙነቶች በመስመር ላይ ናቸው ፣ በሜጋ ላይ እነሱ ጥንድ ናቸው።

በሜጋ ላይ በ 10 መንገድ IDC ራስጌ ባለ 10 መንገድ ሪባን ገመድ ተጠቅሜ ነበር። (2 ሽቦዎች ትርፍ ናቸው)

የሶኬት ማያያዣዎች ለ 0V ፣ 9V እና DAC ውጭ

የመዳብ ንጣፍ ሰሌዳ ፣ መሸጫ ፣ ሽቦ ፣ መቁረጫዎች ወዘተ

ደረጃ 2 ዝርዝር መግለጫዎች

ዝርዝሮች
ዝርዝሮች

ተከታታይ በ 115200 ባውድ ተዘጋጅቷል።

ሜጋን በመጠቀም ለ Hobbytronics MicroSD Breakout Board ድጋፍ በቦታው ላይ ነው። ቺፕ መምረጫው እና ሌሎች ወደቦች በሜጋ እና በዩኖ መካከል ይለወጣሉ።

የ Wav ፋይሎች አድሎግ በሚባል ማውጫ ውስጥ መኖር አለባቸው- ሌላ ነገር ለመሰየም እና አስፈላጊውን ኮድ እንደገና ለማቀናበር ነፃነት ይሰማዎ።

የ wav ፋይል 8 ቢት ሞኖ መሆን አለበት። እስከ 44KHz ድረስ ሞክሬያለሁ።

ተከታታይ ሞኒተሩ በአድሎግ አቃፊ ውስጥ የ wav ፋይሎችን ያሳያል። የፋይል ስሞች ከተቆጣጣሪው የውጤት መስመር ይላካሉ።

የፋይል መጠን በ SdCard መጠን ብቻ የተገደበ ነው።

ደረጃ 3: መጀመር

እንደ መጀመር
እንደ መጀመር

የ SD ካርድ አንባቢን ያገናኙ። እነዚህ ለሜጋ ግንኙነቶች ናቸው።

0, 5 ቪ

ለፒን 52 ክሊክ ያድርጉ

D0 ወደ ፒን 50

D1 ወደ ፒን 51

ሲኤስ ወደ ፒን 53

(ለኡኖ ወደብ ግንኙነት የአቅራቢዎች ድር ጣቢያ ይመልከቱ)

በዚህ ደረጃ ካርድዎ እንደሚሰራ መሞከር ይፈልጋሉ- በአቅራቢው የቀረቡትን ስክሪፕቶች ይጠቀሙ።

ትንሽ ወረዳ መሥራት አለብን።

እኛ ከአርዱዲኖ የኦዲዮ ባይት ዥረት እንልካለን።

እነዚህ ቁጥሮች በ 0 እና 255 መካከል ናቸው ቮልቴጅን ይወክላሉ።

ዝምታ 127-128 ነው።

255 በአንድ መንገድ የድምፅ ማጉያ ሾጣጣ ነው።

0 በሌላ በኩል የድምፅ ማጉያ ጠንከር ያለ ነው።

ስለዚህ ኦዲዮ እንደ የተከማቹ ቁጥሮች ይመዘገባል ፣ ይህም የተለያዩ ቮልቴጅዎችን የሚፈጥሩ ፣ የሚንቀሳቀሱ የድምፅ ማጉያ ኮኖችን ይፈጥራሉ።

ቁጥሮቹን ከ 8 መስመሮች በአርዱዲኖ ፣ በተመሳሳይ ጊዜ ፣ “ወደብ” በመጠቀም መላክ እንችላለን።

8 መስመሮችን ወደ ዲጂታል ወደ አናሎግ መቀየሪያ ብንመግበው ፣ በቆርቆሮው ላይ የተናገረውን ያደርጋል እና ከዲጂታል ቁጥሩ ጋር የሚመጣጠን የአናሎግ ቮልቴጅን ያመነጫል።

ከዚያ እኛ ማድረግ ያለብን ቮልቴጁን ወደ ትንሽ የአሠራር ማጉያ እና ከዚያ ወደ ድምጽ ማጉያ ማሸግ ነው።

ደረጃ 4 - ትንሹ ወረዳ

ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ
ትንሹ ወረዳ

DAC0832 LCN

ይህ ለአናሎግ መቀየሪያ እጅግ በጣም ጥሩ ፣ ርካሽ 8 ቢት ዲጂታል ነው። (DAC)

በተደራራቢ የመረጃ አያያዝ ፣ የውሂብ ናሙና መስመሮች ሙሉ በሙሉ ቁጥጥር ሊደረግበት ይችላል።

ወይም በ ‹ክወና ውስጥ ፍሰት› ውስጥ ሁሉንም በራስ -ሰር ለማድረግ ማዋቀር ይችላል።

መመሪያውን ለመጥቀስ -

በቀላሉ CS ፣ WR1 ፣ WR2 ፣ እና XFER ን ማረም እና ILE ከፍተኛ ማሰር ሁለቱም የውስጥ መመዝገቢያዎች የተተገበሩትን የዲጂታል ግብዓቶች (ፍሰት) እንዲከተሉ እና በ DAC አናሎግ ውፅዓት ላይ በቀጥታ እንዲነኩ ያስችላቸዋል።

እሺ ከቺፕ ስብስብ ዝቅተኛ እና አንድ ስብስብ ወደ 9 ቪ - ቀላል ነው።

ማንኛቸውም አሉታዊ ውጥረቶች እንዲወጡ አንፈልግም ስለዚህ መመሪያው “የቮልቴጅ መቀየሪያ ሁነታን” መጠቀም አለብን ይላል እና ንድፉን ያቀርባሉ።

እኛ ማድረግ ከሚጠበቅብን ይልቅ ትንሽ የኦዲዮ አምፕ መተካት ብቻ ነው።

LM386-N የድምጽ አምፕ

የአምፕ ማኑዋሉ አነስተኛ ክፍሎችን ሥዕላዊ መግለጫ ይሰጣል- የ 20 ትርፍ (ለእኛ በጣም ብዙ ነው- ግን የድምፅ መቆጣጠሪያ አለው)።

እኛ የ AC ምልክቶችን ብቻ ማጉላት እንድንችል በ DAC እና በአምፖው መካከል አንድ capacitor ማከል ብቻ ነው የሚያስፈልገን።

እንዲሁም ከእያንዳንዱ የእኛ ቺፕስ አቅርቦት ፒን አቅራቢያ አንድ ሁለት መያዣዎችን ማከል አለብን አለበለዚያ እኛ ከ 9 ቪ አቅርቦታችን ሀም እናገኛለን።

ደረጃ 5: ከማሸጊያ ብረት ውጡ

ከብረት ብረት ይውጡ
ከብረት ብረት ይውጡ
ከብረት ብረት ውጣ
ከብረት ብረት ውጣ
ከብረት ብረት ውጣ
ከብረት ብረት ውጣ

ወረዳው ቀላል እንደመሆኑ እኔ በንዴት ሂሳብ ምት መስጠት አልፈልግም።

አንዳንድ ጠቋሚዎች እዚህ አሉ

  • ቢያንስ 28 በ 28 ቀዳዳዎች አንድ የመዳብ ስትሪፕ ቦርድ ቁራጭ ያዘጋጁ። (አዎ የአዕምሮ ቀዶ ሐኪሞች ትንሽ ሊያደርጉት እንደሚችሉ አውቃለሁ)
  • በመጠምዘዣዎች ላይ ለመጫን ካሰቡ ፣ መጀመሪያ ላይ ይፍቀዱላቸው!
  • ቺፖችን በሶኬቶች ላይ ይጫኑ። ሁሉም ነገር ሲፈተሽ ብቻ ቺፖችን ያስገቡ።
  • የግቤት ገመዶችን ከውጤቱ ያርቁ።
  • ለካፒታተሮች ትክክለኛውን ዋልታ ይመልከቱ።
  • የ LM336 ቮልቴጅ ማጣቀሻ ለመሠረታዊ እይታ ሥዕላዊ መግለጫውን ይመልከቱ። የተስተካከለው እግር ጥቅም ላይ ያልዋለ እና ሊቆረጥ ይችላል።
  • ከ DAC ፒን 8 ጋር ቀጥታ ግንኙነትን ያስተውሉ- ለሙከራ በጣም ጠቃሚ ነው።
  • እኔ ከአውዲኖ ጋር በሪባን ገመድ እና በ 10 መንገድ IDC አያያዥ ጋር ተገናኝቻለሁ።
  • በዩኖ ላይ ግንኙነቶቹ ቀጥታ መስመር ላይ ናቸው - የ 8 የግብዓት ግንኙነቶችን በአንድ ቀጥታ መስመር ማደራጀት በተገዛው ፣ ዝግጁ በሆነ ባለ 8 መንገድ አገናኝ ከአርዱዲኖ ጋር ለማገናኘት ይፈቅድልዎታል።

ሲጠናቀቅ- መሸጫውን ይፈትሹ እና በመዳብ ትራኮች መካከል ያሉትን ክፍተቶች ይፈትሹ።

እኔ 36 tpi ጁኒየር ጠለፋ መሰንጠቂያ ፍርስራሾችን ለማፅዳት በጣም ጠቃሚ ሆኖ አግኝቼዋለሁ። የጩቤውን መገኛ ካስማዎች አስወግጄ የነዳጁን ጫፍ ወደ ትራኩ ውስጥ እሰካለሁ- በግልጽ እንደሚታየው ክፈፉ በፍሬም ውስጥ አይደለም።

ደረጃ 6 - DAC ን መሞከር

DAC ን በመሞከር ላይ
DAC ን በመሞከር ላይ

ግንኙነቱን በወረዳው እና በአርዱዲኖ መካከል ይተው።

በወረዳዎ ላይ የድምፅ መቆጣጠሪያውን ወደ ሚድዌይ ያዘጋጁ።

የ 9 ቮ ዲሲ ኃይልን ወደ አዲሱ ወረዳዎ ያብሩ።

ወረዳው ደህና መሆኑን ያረጋግጡ- ለወረዳዎ ማንኛውንም ተጠያቂነት መቀበል አልችልም!

ኃይል ዝጋ

ወረዳዎን ከአርዲኖ ጋር ያገናኙ።

በሜጋ አጠቃቀም ፒን 22-29 ላይ። (PORTA) ከላይ ያሉትን ሁለቱን 5V ፒኖች አይሳሳቱ!

በ Uno ላይ ፒኖችን 0-7 ይጠቀሙ። ይህ PORTD ነው

የኃይል አቅርቦቱን 0V በአርዱዲኖ ላይ ካለው 0 ቮ ጋር ያገናኙ።

ሀየል መስጠት.

ይህንን የሙከራ ፕሮግራም DAC_TEST ይክፈቱ

ለ UNO ፣ ከ PORTA ወደ PORTD ሁሉንም ማጣቀሻዎች ይተኩ

DDRA ን በ DDRD ይተኩ- ይህ መመሪያ በአንድ ጉዞ ውስጥ ሁሉንም 8 መስመሮችን ያዘጋጃል። ይህ የመረጃ አቅጣጫ መመዝገቢያ ነው።

ተከታታይ ማሳያዎን በ 115200 ያዘጋጁ።

በ DAC ውጣ እና በኦቪ መካከል የቮልቲሜትር ያገናኙ

ፕሮግራሙ ውጤቱን ወደ 255 ያዘጋጃል - ሁሉም መስመሮች በርተዋል - ከፍተኛ ቮልቴጅ።

የውጤት 128- ግማሽ ከፍተኛው ቮልቴጅ።

ውጤት 0- ዜሮ ቮልቴጅ (ወይም ምናልባት ዜሮ ሊሆን ይችላል)።

ከዚያ በጥቂቱ ይራመዳል - 1 ፣ 2 ፣ 4 ፣ 8 ፣ 16 ፣ 32 ፣ 64 ፣ 128

ቮልቴጅ በተከታታይ መጨመር አለበት.

ቁጥሩ በሚጨምርበት ጊዜ ቮልቴጁ ወደ ኋላ ቢወድቅ ምናልባት እርስ በእርስ የሚገናኙት ገመዶች ሁለት ተቀልብሰዋል።

እንዲሁም ቮልቴጁ ሲቀየር ተናጋሪው በፀጥታ ጠቅ ሲያደርግ መስማት አለብዎት

ደረጃ 7 የ Wav ራስጌን ማንበብ

የ Wav ራስጌን ማንበብ
የ Wav ራስጌን ማንበብ

የ Wav ፋይሎች በተወሰነ ድግግሞሽ እና የውሂብ መጠን ይቀመጣሉ።

ይህ መረጃ በ wav ፋይል መጀመሪያ ላይ በ 44 ባይት ራስጌ ውስጥ ይገኛል።

ምንም እንኳን አንዳንድ ሶፍትዌሮች የራስጌውን (ከባይቴ 35 በኋላ) ቢያስረዝሙም ፣ የውሂብ መጠን ሥፍራውን ለማግኘት የበለጠ አስቸጋሪ ያደርገዋል።

ራስጌውን ለማንበብ ቋት እንፈጥራለን እና የፋይሉን መጀመሪያ እንገለብጣለን።

ድግግሞሹ በፋይሉ ውስጥ 24 ባይት በመጀመር በ 4 ባይት ውስጥ ይከማቻል።

// በ wav ፋይል ራስጌ ውስጥ የተገለጸውን ድግግሞሽ ያንብቡ

ባይት የራስ መሸፈኛ [60]

tempfile.seek (0);

tempfile.read (የጭንቅላት መከለያ ፣ 60);

retval = headbuf [27];

retval = (retval << 8) | የራስ መሸፈኛ [26];

retval = (retval << 8) | የጭንቅላት መከለያ [25];

retval = (retval << 8) | የጭንቅላት መከለያ [24];

Serial.print (ኤፍ ("የፋይል ድግግሞሽ"));

Serial.print (retval);

የውሂብ መጠን መረጃን ለማግኘት በጣም ጥሩው መንገድ በአርዕስቱ ውስጥ “ውሂብ” የሚለውን ቃል መፈለግ ነው።

ከዚያ እሱን የሚከተለውን 4 ባይት ያውጡ ፣ ረጅሙን እሴት ያጠቃልላል

ያልተፈረመ ረጅም ሪቫል;

int mypos = 40;

ለ (int i = 36; i <60; i ++) {

ከሆነ (headbuf == 'd') {

ከሆነ (የፊት መሸፈኛ [i+1] == 'a') {

ከሆነ (የፊት መሸፈኛ [i+2] == 't') {

ከሆነ (የፊት መሸፈኛ [i+3] == 'a') {

// በመጨረሻ እኛ አለን

mypos = i+4;

i = 60;

}

}

}

}

}

tempfile.seek (mypos);

retval = headbuf [mypos+3];

retval = (retval << 8) | የጭንቅላት መከለያ [mypos+2];

retval = (retval << 8) | የጭንቅላት መከለያ [mypos+1];

retval = (retval << 8) | የጭንቅላት መከለያ [mypos];

እሺ የውሂብ ርዝመት እና ድግግሞሽ አለን!

የኦዲዮ ውሂቡ የውሂብ ርዝመት እሴትን የሚሠሩ 4 ባይት ይከተላል።

ደረጃ 8: ማቋረጥ ፣ ማቋረጥ…

ማቋረጥ ፣ ማቋረጥ…
ማቋረጥ ፣ ማቋረጥ…

በሚፈለገው ድግግሞሽ ላይ ወይም አቅራቢያ የሶፍትዌር ማቋረጫ ለመፍጠር የተደጋጋሚነት መረጃን እንጠቀማለን።

ማቋረጫው ሁል ጊዜ በትክክል ሊዘጋጅ አይችልም ፣ ግን በቂ ነው። ከፋይሉ የተነበበው ድግግሞሽ ወደ ያልተቀላቀለ ንዑስ ክፍል ይተላለፋል።

ባዶነት setintrupt (ተንሳፋፊ ፍሪክ) {float bitval = 8; // 8 ለ 8 ቢት ሰዓት ቆጣሪዎች 0 እና 2 ፣ 1024 ለ ሰዓት ቆጣሪ 1 ባይት

setocroa = (16000000/(freq*bitval)) - 0.5;

// የ setocroa እሴት -1 መቀነስ ይጠይቃል። ሆኖም ግን 0.5 ዙሮችን ወደ ቅርብ ወደ 0.5 ማከል

// የሰዓት ቆጣሪው ጥራት ውስን ነው

// በመጨረሻ በቢትቫል መጠን ይወሰናል

ክሊ (); // ማቋረጫዎችን ያሰናክሉ // የጊዜ ቆጣሪ 2 ማቋረጫ ያዘጋጁ

TCCR2A = 0; // ሙሉውን የ TCCR2A ምዝገባን ወደ 0 ያዋቅሩ

TCCR2B = 0; // ለ TCCR2B ተመሳሳይ

TCNT2 = 0; // የቆጣሪ ዋጋን ወደ 0 ያስጀምሩ

// አዘጋጅ ተዛማጅ መመዝገቢያ ለተደጋጋሚነት (hz) ጭማሪዎች

OCR2A = setocroa; // = (16*10^6) / (ድግግሞሽ*8) - 1 (<256 መሆን አለበት)

// የ CTC ሁነታን ያብሩ

TCCR2A | = (1 << WGM21); // ለ 8 ቅድመ -ተቆጣጣሪ CS21 ቢት ያዘጋጁ

TCCR2B | = (1 << CS21); // የሰዓት ቆጣሪን ማወዳደር ማቋረጥን ያንቁ

// TIMSK2 | = (1 << OCIE2A); // ይህ ይሠራል ፣ ልክ እንደ ቀጣዩ መስመር

sbi (TIMSK2, OCIE2A); // በሰዓት ቆጣሪ 2 ላይ መቋረጥን ያንቁ

sei (); // ማቋረጫዎችን ያንቁ

አስተዋይ አንባቢዎች sbi ን ያዩታል (TIMSK2 ፣ OCIE2A)

የምዝግብ ማስታወሻዎችን ለማቀናበር እና ለማፅዳት ሁለት (በይነመረብ የተገኘ) ተግባሮችን አዘጋጃለሁ-

// የመመዝገቢያ ቢት#ifndef cbi ን ለማፅዳት ይገልጻል

#ጥራት cbi (sfr ፣ bit) (_SFR_BYTE (sfr) & = ~ _BV (ቢት))

#ኤንዲፍ

// የምዝግብ ማስታወሻዎችን ለማቀናበር ይገልጻል

#ifndef sbi

#ጥራት sbi (sfr ፣ bit) (_SFR_BYTE (sfr) | = _BV (ቢት))

#ኤንዲፍ

እነዚህ ተግባራት ማቋረጫውን ለማዘጋጀት ወይም ለማፅዳት ቀላል ጥሪን ያቀርባሉ።

ስለዚህ ማቋረጫው እየሮጠ ነው ፣ እኛ ምን እናድርግ?

ደረጃ 9: ማቋረጦች እና ድርብ ማወዛወዝ

ማቋረጦች እና ድርብ ማወዛወዝ
ማቋረጦች እና ድርብ ማወዛወዝ
ማቋረጦች እና ድርብ ማወዛወዝ
ማቋረጦች እና ድርብ ማወዛወዝ

በ 22 ኪኸ ባይት የድምጽ መረጃ በየ 0.045 ሚሴ ይወጣል

512 ባይት (የመጠባበቂያ መጠን) በ 2.08 ሚሴ ውስጥ ይነበባል።

ስለዚህ ቋሚው በአንድ የጽሑፍ ዑደት ውስጥ ከ SDCard ሊነበብ አይችልም።

ሆኖም 512 ባይት በ 23.22 ሚ.ሜ ውስጥ ወደቡ ተፃፈ።

ስለዚህ እኛ ማድረግ ያለብን ቋሚው ባዶ በሚሆንበት ጊዜ ሁሉ የሚነበብ አዲስ ፋይል ማቀናበር እና አዲስ የውሂብ ማገጃ ከመጠየቁ በፊት ውሂቡን ለማግኘት በቂ ጊዜ አለን…

ይህ ድርብ ማባዛት ነው።

የተነበበው ፋይል በተደጋገመ ማቋረጥ ይቀዘቅዛል ፣ ግን ይፈጸማል።

ቡፋ እና ቡፍ የሚባሉ ሁለት 512 ባይት ባፋሪዎች አሉኝ።

ሰንደቅ ዓላማው እውነት ከሆነ እኛ ከፖርታ እናነባለን አለበለዚያ እኛ ከፖርትብ እናነባለን

የጠባቂው አቀማመጥ (bufcount) ወደ ቋሚው መጠን (BUF_SIZE 512) ሲደርስ ንባብ ወደ እውነት የሚባለውን ባንዲራ እናስቀምጣለን።

የባዶው ሉፕ አሠራር ይህንን ባንዲራ ይፈልጋል እና ብሎክ ማንበብ ይጀምራል-

ከሆነ (አንብብ) {ከሆነ (! aready) {

// የ SDCard ብሎክን ወደ bufa ማንበብ ያስጀምሩ

tempfile.read (bufa, BUF_SIZE);

} ሌላ {

// ወደ bufb የተነበበውን የ SDCard ብሎክን ያስጀምሩ

tempfile.read (bufb, BUF_SIZE);

}

readit = ሐሰት;

}

የተለመደው ባንዲራዎች ሲጨርሱ readit = ሐሰት።

በተቋረጠው የዕለት ተዕለት እንቅስቃሴ ውስጥ ባዶ / አንባቢው / ንባብ == ሐሰተኛ መሆኑን በመፈተሽ ባዶ ክፍተቱ እንደጨረሰ ማረጋገጥ አለብን።

በዚህ ሁኔታ እኛ ሌላ ንባብ እንደሚያስፈልግ እና ምልክት ሰጭ ባንዲራዎችን ለመቀያየር ለመቀየር ምልክት እናደርጋለን።

ኤስዲካርዱ አሁንም እያነበበ ከሆነ አንድ ንባብ (የ counter-; bufcount--;) ን መከታተል እና በኋላ እንደገና ለመሞከር ከተቋረጠው መውጣት አለብን። (በድምጽ ውፅዓት ምልክት ውስጥ ጠቅታዎች ይህ እንደተከሰተ ያመለክታሉ።)

ሁሉም ውሂቡ ሲነበብ ማቋረጫው ይሰረዛል ፣ ወደቡ እንደገና ወደ 128 መካከለኛ የቮልቴጅ እሴት ተቀናብሮ የድምጽ ፋይሉ ተዘግቷል።

Dac2.ino ስክሪፕትን ለመጀመሪያ ጊዜ ከማሄድዎ በፊት ድምጽዎን ወደ 50%ያዘጋጁ። ይህ በጣም ጮክ ይሆናል ፣ ግን ከ 100%የተሻለ ነው!

የእርስዎ የድምጽ መቆጣጠሪያ በተቃራኒ የሚሠራ ከሆነ በ 10 ኪ ፖታቲሞሜትር ተቃራኒ ጫፎች ላይ መሪዎቹን ይለውጡ።

እንዴት እንደሚሰማ ንገረኝ።

የሚመከር: