Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Concept:
Ik heb een lamp gemaakt die altijd aandacht nodig heeft. Het is geïnspireerd door mijn vrouw. Ik ben een afgestudeerde student, dus ik ben altijd bezig met mijn schoolwerk. Mijn vrouw wil met me praten als ik thuiskom. Als ik weinig aandacht aan haar schenk, wordt ze nukkig en loop ik op eieren. Ik heb haar karakteristiek in deze lamp gestopt. Om de lamp aan te blijven doen, moet een gebruiker elk uur een sleutel opwinden. De lamp gaat uit wanneer de timer naar 0 minuten gaat.
Als je deze lamp maakt, behandel hem dan goed. (Tick-tock geluid is een bonus voor jou.)
Kooplijsten:
Arduino Nano (ATmega328P)
Basis bureaulamp
5V 5W USB-lamp
USB Type A Female Receptacle Breakout-bord
Metalen kloktoetsen
Kookwekker
Hall-effectsensor (A1301/A1302)
Magneten (6 X 2mm)
Platte kruiskopschroef 6/32 (2-inch lang)
Moeren, 6/32
Stap 1: Lasergesneden onderste deel en demonteren van de lamp
Voor het onderste deel heb ik acrylpanelen ontworpen en gesneden met behulp van een lasersnijmachine.
Demonteer de lamp.
Stap 2: Plaats magneten en sensor / sluit een USB-lamp aan
1. Plaats de hall-magneetsensor in het lichaamsdeel voor het detecteren van de magneet op het rotatiegedeelte.
2. Sluit een USB-lamp, hall-magnetische sensor en Arduino Nano aan.
3. Plaats magneten in de gaten.
Stap 3: Code en schema
Schematisch ^
Code
/////// HALL EFFECT SENSOR /////////// #define NOFIELD 505L #define TOMILLIGAUSS 1953L
// LED (USB Receptacle Breakout board) naar digitale pin 3
int led = 3;
// Hall-effectsensor naar analoge pin 0
int hal = A0;
// De onderstaande regels zijn van https://playground.arduino.cc/Code/HallEffect door Rob Tillaart
int. gauss;
int gaussX; int gauss2;
void setup () { pinMode (led, OUTPUT); pinMode (hal, INPUT); Serieel.begin(9600); }
void DoMeasurement()
{ int raw = analogRead (hal); lang gecompenseerd = onbewerkt - NOFIELD; // aanpassen relatief aan geen toegepast veld lange gauss = gecompenseerd * TOMILLIGAUSS / 1000; // schaal aanpassen aan Gauss gaussX = constrain (gauss, 0, 500); gauss2 = kaart (gaussX, 0, 500, 0, 255); Seriële.println(gauss2); // Serial.println (ruw);
analogWrite(led, gauss2);
}
lege lus()
{ DoMeasurement(); vertraging (100); }
Stap 4: Laatste stap
Gedaan.