The Dod 1 день назад
Сommit
aa9f0450fe
4 измененных файлов: 43 добавлений и 0 удалений
  1. 9
    0
      README.md
  2. Двоичные данные
      petsound.fzz
  3. 34
    0
      petsound.ino
  4. Двоичные данные
      petsound_bb.png

+ 9
- 0
README.md Просмотреть файл

@@ -0,0 +1,9 @@
1
+### Petsound
2
+[Petsound](https://www.discogs.com/release/2557998-The-Beach-Boys-Pet-Sounds) is a pillow or plush toy that makes a sound when you pet it. It has a velostat sheet that senses pressure, and we define "petting" as significant variaton of that pressure.
3
+
4
+#### [Video](https://tooot.im/@zvinj/113906516287736785)
5
+
6
+![Schematic diagram](petsound_bb.png)
7
+
8
+
9
+Pet detection is done by an arduino nano that sets and `ISD1820` sampling boards's `P-L` pin to high while petting is detected. The audio out of the board goes to a class D 2.5W audio amplifier.

Двоичные данные
petsound.fzz Просмотреть файл


+ 34
- 0
petsound.ino Просмотреть файл

@@ -0,0 +1,34 @@
1
+#define SENSORPIN A7
2
+#define OUTPIN 13
3
+#define DELAYMILLIS 50
4
+#define NSAMPLES 20
5
+#define MINCHANGE 13
6
+#define ON HIGH
7
+#define OFF LOW
8
+
9
+int samples[NSAMPLES] = {0};
10
+int index;
11
+
12
+void setup() {
13
+  pinMode(OUTPIN, OUTPUT);
14
+  Serial.begin(115200);
15
+  index = 0;
16
+}
17
+
18
+void loop() {
19
+  samples[index] = analogRead(SENSORPIN);
20
+  index = (index + 1) % NSAMPLES;
21
+  int maxlevel = -1;
22
+  int minlevel = 2000;
23
+  for (int i = 0; i < NSAMPLES; i++) {
24
+    if (samples[i] < minlevel) {
25
+      minlevel = samples[i];
26
+    }
27
+    if (samples[i] > maxlevel) {
28
+      maxlevel = samples[i];
29
+    }
30
+  }
31
+  Serial.println(maxlevel - minlevel);
32
+  digitalWrite(OUTPIN, (maxlevel - minlevel) > MINCHANGE ? ON : OFF);
33
+  delay(DELAYMILLIS);
34
+}

Двоичные данные
petsound_bb.png Просмотреть файл


Загрузка…
Отмена
Сохранить