Динамик работает, активируя электромагнит, который находится рядом с «обычным» магнитом. Это вызывает вибрацию, в результате чего возникает звук. Логика подсказывает, что вместо подачи тока на динамик, мы можем генерировать ток (даже если он очень слабый), оказывая на его мембрану физическое воздействие. Затем этот ток может быть обнаружен и интерпретирован в сигналы микроконтроллером, таким как Arduino.

Вам нужно будет найти динамик, которым вы готовы пожертвовать ради этого проекта. Можно найти такой практически где угодно – например, на музыкальной открытке или в старом будильнике.

После получения динамика подключите провода к его двум выводам.

Далее подключите все компоненты в соответствии с приведенной далее схемой.

Загрузите следующий код в Arduino IDE. Вам, вероятно, потребуется откалибровать его, поскольку вы можете не использовать тот же динамик, что и в нашем случае, поэтому мы объясним, как это сделать, далее.
int shockMin = 996; // вам может потребоваться изменить это
int shockMax = 1010; // вам может потребоваться изменить это
void setup() {
pinMode(11, OUTPUT);
// Serial.begin(9600); // раскомментируйте это для организации калибровки
}
void loop() {
int shock = analogRead(A0);
int lightval = map(shock, shockMin, shockMax, 0, 255);
if (lightval > 0) {
analogWrite(11, lightval);
}
else {
analogWrite(11, 0);
}
// Serial.println(shock); // раскомментируйте это для организации калибровки
}
Нажмите пальцем на центр динамика, и светодиод должен замигать. Если нет, вам нужно будет откалибровать его на следующем шаге.
Если ваш светодиод уже удовлетворительно мигает, вы можете пропустить этот шаг. В противном случае выполните следующие действия:
- Удалите «//» в строках «// Serial.begin(9600);».
- Загрузите код и откройте последовательный монитор.
- Нажмите на центр динамика и наблюдайте, как меняются значения.
- Измените переменные shockMin и shockMax на оптимальные значения.
Например, если последовательный монитор считывает 700 как состояние вашего датчика без нажатия, а когда вы нажимаете на него, значение может подниматься до 860, измените shockMax примерно на 900 (чуть выше показания датчика) и shockMin примерно до 680. После этого снова загрузите код в Arduino, и все должно теперь работать как надо.
© digitrode.ru