Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

WM8731MikroSine.ino 2.6KB

pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
pirms 10 gadiem
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // Simple sine wave & input level test for WM8731 Audio Codec Board
  2. //
  3. // Requires the MikroElektronika Audio Codec board or similar hardware
  4. // http://www.mikroe.com/add-on-boards/audio-voice/audio-codec-proto/
  5. //
  6. // When using AudioInputI2Sslave & AudioOutputI2Sslave with MikroE-506,
  7. // the sample rate will be the crystal frequency divided by 256. The
  8. // MikroE-506 comes with a 12.288 MHz crystal, for 48 kHz sample rate.
  9. // To get 44.1 kHz (as expected by the Teensy Audio Library) the crystal
  10. // should be replaced with 11.2896 MHz.
  11. //
  12. // Recommended connections:
  13. //
  14. // Mikroe Teensy 3.1
  15. // ------ ----------
  16. // SCK 9
  17. // MISO 13
  18. // MOSI 22
  19. // ADCL 23 (yes, ADCL & DACL connect together)
  20. // DACL 23
  21. // SDA 18
  22. // SCL 19
  23. // 3.3V +3.3V
  24. // GND GND
  25. //
  26. // For connection using I2S master mode (WM8731 in slave mode, with MCLK):
  27. // https://forum.pjrc.com/threads/53854?p=198733&viewfull=1#post198733
  28. // https://forum.pjrc.com/threads/55334?p=201494&viewfull=1#post201494
  29. //
  30. // This example code is in the public domain.
  31. #include <Audio.h>
  32. #include <Wire.h>
  33. #include <SPI.h>
  34. #include <SD.h>
  35. #include <SerialFlash.h>
  36. // GUItool: begin automatically generated code
  37. AudioSynthWaveform waveform1; //xy=245,160
  38. AudioInputI2Sslave i2sslave1; //xy=265,252
  39. AudioOutputI2Sslave i2sslave2; //xy=429,158
  40. AudioAnalyzeRMS rms2; //xy=436,323
  41. AudioAnalyzeRMS rms1; //xy=444,265
  42. AudioConnection patchCord1(waveform1, 0, i2sslave2, 0);
  43. AudioConnection patchCord2(waveform1, 0, i2sslave2, 1);
  44. AudioConnection patchCord3(i2sslave1, 0, rms1, 0);
  45. AudioConnection patchCord4(i2sslave1, 1, rms2, 0);
  46. AudioControlWM8731master wm8731m1; //xy=292,379
  47. // GUItool: end automatically generated code
  48. void setup() {
  49. wm8731m1.enable();
  50. AudioMemory(15);
  51. waveform1.begin(WAVEFORM_SINE);
  52. waveform1.frequency(440);
  53. waveform1.amplitude(0.9);
  54. wm8731m1.volume(0.50);
  55. wm8731m1.inputSelect(AUDIO_INPUT_MIC);
  56. // wm8731m1.inputSelect(AUDIO_INPUT_LINEIN); // not connected on MikroE-506
  57. }
  58. elapsedMillis msec;
  59. // Print a simple level meter
  60. void loop() {
  61. if (msec > 40) {
  62. if (rms1.available() && rms2.available()) {
  63. msec = 0;
  64. int level_left = rms1.read() * 30.0;
  65. int level_right = rms2.read() * 30.0;
  66. printchar(' ', 30 - level_left);
  67. printchar('<', level_left);
  68. Serial.print("||");
  69. printchar('>', level_right);
  70. Serial.println();
  71. }
  72. }
  73. }
  74. void printchar(char c, int num) {
  75. for (int i=0; i < num; i++) {
  76. Serial.write(c);
  77. }
  78. }