Tech-dat/audio-dat/audio-output-dat/2025-01-20-18-14-13.png
... ...
Binary files /dev/null and b/Tech-dat/audio-dat/audio-output-dat/2025-01-20-18-14-13.png differ
Tech-dat/audio-dat/audio-output-dat/2025-01-20-18-15-57.png
... ...
Binary files /dev/null and b/Tech-dat/audio-dat/audio-output-dat/2025-01-20-18-15-57.png differ
Tech-dat/audio-dat/audio-output-dat/audio-output-dat.md
... ...
@@ -0,0 +1,10 @@
1
+
2
+## audio-output-dat
3
+
4
+### Single End Output
5
+
6
+![](2025-01-20-18-14-13.png)
7
+
8
+### Single End Output with / power isolation
9
+
10
+![](2025-01-20-18-15-57.png)
... ...
\ No newline at end of file
Tech-dat/audio-dat/tone-dat/2025-03-20-16-05-24.png
... ...
Binary files /dev/null and b/Tech-dat/audio-dat/tone-dat/2025-03-20-16-05-24.png differ
Tech-dat/audio-dat/tone-dat/tone-dat.md
... ...
@@ -0,0 +1,109 @@
1
+
2
+# tone-dat
3
+
4
+## tone melody by arduino
5
+
6
+https://docs.arduino.cc/built-in-examples/digital/toneMelody/
7
+
8
+![](2025-03-20-16-05-24.png)
9
+
10
+
11
+ #include "pitches.h"
12
+
13
+ // notes in the melody:
14
+ int melody[] = {
15
+
16
+ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
17
+ };
18
+
19
+ // note durations: 4 = quarter note, 8 = eighth note, etc.:
20
+ int noteDurations[] = {
21
+
22
+ 4, 8, 8, 4, 4, 4, 4, 4
23
+ };
24
+
25
+ void setup() {
26
+
27
+ // iterate over the notes of the melody:
28
+
29
+ for (int thisNote = 0; thisNote < 8; thisNote++) {
30
+
31
+ // to calculate the note duration, take one second divided by the note type.
32
+
33
+ //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
34
+
35
+ int noteDuration = 1000 / noteDurations[thisNote];
36
+
37
+ tone(8, melody[thisNote], noteDuration);
38
+
39
+ // to distinguish the notes, set a minimum time between them.
40
+
41
+ // the note's duration + 30% seems to work well:
42
+
43
+ int pauseBetweenNotes = noteDuration * 1.30;
44
+
45
+ delay(pauseBetweenNotes);
46
+
47
+ // stop the tone playing:
48
+
49
+ noTone(8);
50
+
51
+ }
52
+ }
53
+
54
+ void loop() {
55
+
56
+ // no need to repeat the melody.
57
+ }
58
+
59
+
60
+
61
+## simple tone by ESP32
62
+
63
+
64
+ #include <ESP_I2S.h>
65
+
66
+ const int frequency = 400; // frequency of square wave in Hz
67
+ const int amplitude = 500; // amplitude of square wave
68
+ const int sampleRate = 8000; // sample rate in Hz
69
+
70
+ i2s_data_bit_width_t bps = I2S_DATA_BIT_WIDTH_16BIT;
71
+ i2s_mode_t mode = I2S_MODE_STD;
72
+ i2s_slot_mode_t slot = I2S_SLOT_MODE_STEREO;
73
+
74
+ const int halfWavelength = (sampleRate / frequency); // half wavelength of square wave
75
+
76
+ int32_t sample = amplitude; // current sample value
77
+ int count = 0;
78
+
79
+ I2SClass i2s;
80
+
81
+ void setup() {
82
+ Serial.begin(115200);
83
+ Serial.println("I2S simple tone");
84
+
85
+ //i2s.setPins(I2S_SCK/BCLK, I2S_WS/LRC, I2S_SDOUT, I2S_SDIN, I2S_MCLK);
86
+ //i2s.setPins(12, 11, 13, -1, -1);
87
+ i2s.setPins(5, 25, 26, -1, -1);
88
+
89
+ // start I2S at the sample rate with 16-bits per sample
90
+ if (!i2s.begin(mode, sampleRate, bps, slot)) {
91
+ Serial.println("Failed to initialize I2S!");
92
+ while (1); // do nothing
93
+ }
94
+ }
95
+
96
+
97
+
98
+ void loop() {
99
+ if (count % halfWavelength == 0) {
100
+ // invert the sample every half wavelength count multiple to generate square wave
101
+ sample = -1 * sample;
102
+ }
103
+
104
+ i2s.write(sample); // Right channel
105
+ i2s.write(sample); // Left channel
106
+
107
+ // increment the counter for the next sample
108
+ count++;
109
+ }
Tech-dat/audio-output-dat/2025-01-20-18-14-13.png
... ...
Binary files a/Tech-dat/audio-output-dat/2025-01-20-18-14-13.png and /dev/null differ
Tech-dat/audio-output-dat/2025-01-20-18-15-57.png
... ...
Binary files a/Tech-dat/audio-output-dat/2025-01-20-18-15-57.png and /dev/null differ
Tech-dat/audio-output-dat/audio-output-dat.md
... ...
@@ -1,10 +0,0 @@
1
-
2
-## audio-output-dat
3
-
4
-### Single End Output
5
-
6
-![](2025-01-20-18-14-13.png)
7
-
8
-### Single End Output with / power isolation
9
-
10
-![](2025-01-20-18-15-57.png)
... ...
\ No newline at end of file
mechanics-dat/screws-dat/screws-dat.md
... ...
@@ -1,6 +1,8 @@
1 1
2 2
# screws-dat
3 3
4
+- [[screws]]
5
+
4 6
- M3x10
5 7
- M5x10
6 8
... ...
@@ -34,10 +36,16 @@ Countersunk Head M3*6, note length is the total length
34 36
![](2025-03-07-17-11-52.png)
35 37
36 38
37
-### Hex Head / socket head
39
+### Hex Head
40
+
41
+
42
+
43
+### Hex socket
38 44
39 45
![](2025-03-13-18-03-58.png)
40 46
47
+
48
+
41 49
### Button Head
42 50
43 51
M5*10 pan head