This commit is contained in:
2026-02-12 21:00:02 -08:00
parent 77f8236347
commit 8bdbf227ca
1141 changed files with 1010880 additions and 2 deletions

View File

@@ -0,0 +1,22 @@
# ADS1015
![ADS1015](https://pschatzmann.github.io/arduino-audio-tools/doc/resources/ads1015.jpeg)
The ADS1015 is a 12 bit ADC which is connected via I2C.
### Pins:
| ADS1015 | ESP32
|---------|---------------
| VDD | 3.3
| GND | GND
| SCL | SCL GPIO22
| SDA | SDA GPIO21
| ADDR | GND
| ALRT | -
| A0 | Analog Source (e.g. Electic Guitar)
## Conclusion
The sampling rate is too low to be usefull.

View File

@@ -0,0 +1,68 @@
/**
* @file experiment-ads1015-serial.ino
* @author Phil Schatzmann
* @brief We can use the ADS1015 to provide analog signals. Unfortunatly it is not
* suited for audio because it is too slow.
* @version 0.1
* @date 2022-12-07
*
* @copyright Copyright (c) 2022
*
*/
#include "Wire.h"
#include "Adafruit_ADS1015.h"
#include "AudioTools.h"
const int sample_rate = 3300;
const int buffer_size = 50;
Adafruit_ADS1015 ads1015(0x48);
TimerAlarmRepeating sound_timer;
NBuffer<int16_t> buffer(buffer_size,3);
// callback to record the sound data into a buffer
void write_sample(void *ptr) {
sound_t sample = ads1015.readADC_Differential_0_1();
buffer.write(sample);
}
// Arduino Setup
void setup(void) {
Serial.begin(115200);
// setup microphone
ads1015.begin();
ads1015.setGain(GAIN_SIXTEEN); // GAIN_TWO GAIN_FOUR GAIN_EIGHT GAIN_SIXTEEN
// start the timer to record the data
long waitUs = 1000000 / sample_rate;
sound_timer.start(write_sample, waitUs, US);
}
void printSampleRate() {
static long next_time;
if (millis()>next_time){
next_time = next_time+1000;
Serial.print("sample rate: ");
Serial.println(buffer.sampleRate());
}
}
void printSamples() {
static sound_t array[50][2];
size_t len = buffer.readFrames(array);
for (int j=0;j<len;j++){
Serial.print(array[j][0]);
Serial.print(" ");
Serial.println(array[j][1]);
}
}
// Arduino loop - repeated processing
void loop() {
// copy sound data from samples to I2S
printSamples();
printSampleRate();
}