Foreword Traveling across the expanses of the Internet, I came across one uninteresting category of toys - "clickers." I was especially pleased with the
Office Clicker . Stupidity is of course utter, but there is something in it. You can write some script that will play instead of me, but this is too trite. I decided to make a hardware clicker, but not just a hardware clicker, but a warm-tube clicker! Interesting? I ask under the cat!
')
Warm "lamp" circuitry The scheme came to my mind a very non-trivial, it was based on the automobile high-beam bulb (which I will proudly call a “lamp”):
Parts ratings:
R1 = 10 KOhm (multiturn); R2 = 5 ohms (5 W); R3 = 470 OHM (0.25 W); R4 = 100 Ω (0.25 W); C1 = 47 μF (25 V). The principle of the scheme is as follows:
"Lamp" cooled (cools); Voltage U1 <U2; The comparator supplies the enable signal to the transistor T1; Transistor T1 open; The relay contacts are closed; A current begins to flow through the “lamp” => it heats up; The resistance of the "lamp" increases; The voltage U1 grows and approaches U2; When U1> U2, the comparator stops signaling at T1; Transistor T1 is closed; Relay contacts open; U1> U2, but gradually U1 decreases; GOTO 1. The frequency of the generated signal depends on:
time constant t = R5 * C1; warm-up time (and cooling) "lamp". By changing the voltage U2, we change the heating time of the “lamp”, respectively - the more U2 the lower the frequency will be.
Resistor R4 and Zener diode D1 (for voltage 3.3V) are used to generate a control signal for the next node - the Arduino Duo board.
Interface As you already understood, I chose the Arduino Duo board as the interface board between the “tube” relay and the computer.
The principle of operation is very simple:
when in the "clicker" transistor V1 is closed, the Arduino receives a 3.3V control signal when the transistor is open - 0V; Arduino interprets 3.3V as a guide for pressing the paint button; Arduino interprets 0V as a guide to let go of LMB. Here is the program for Arduino, which I wrote about this:
# define VACUUM_LINE 13 void setup() { pinMode(VACUUM_LINE, INPUT_PULLUP); Mouse.begin(); } void loop() { if (digitalRead(VACUUM_LINE) == HIGH) { Mouse.press(); delay(10); } if (digitalRead(VACUUM_LINE) == LOW) { Mouse.release(); delay(10); } }
We are testing Instead of a thousand words, I suggest watching one video:
VIDEO Thanks for attention! I hope my article has helped to improve your mood!