Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Zelf een USB-voeding LED-ventilator klok bouwen met Arduino Nano – Schema & Code

USB LED-licht ventilator analoge klok met Arduino NANO – Projectcode & Schakeling met tijdfunctie

Als je de video van de bekende Mini USB LED-licht ventilator klok hebt gezien, maak je nu klaar: we bouwen dezelfde LED analoge klok op basis van Arduino NANO, hallsensor, weerstanden, batterij, DC-motor en LED's.

De LED's draaien in een cirkel en tonen een analoge klok in propeller-display met alle drie wijzers voor uur, minuut en seconde, evenals de ronde vorm van een gewone pols- of wandklok.

Het mooiste aan dit project: je kunt de tijd instellen voor zowel minuten als seconden door de broncode naar de Arduino NANO te uploaden via USB-kabel. Laten we kijken hoe dat zit.

Benodigde componenten:

  • Arduino NANO
  • Hallsensor W130
  • R1 tot R16 = 330 Ω
  • R17 = 2,2 kΩ
  • R18 = 10 kΩ
  • LED 1 tot LED 11 = Rood licht
  • LED 12 tot LED 16 = Groen licht
  • LED 17 = Blauw licht
  • Batterij = 3,7 V, 240 mAh (9 V tot 12 V bij krachtigere motor voor hogere snelheid)
  • Schakelaar = AN/UIT Enkelpool (glijtoggle)
  • Overige: printplaat, speelgoed DC-motor, draden & kabels, soldeerbout, etc.

Aansluiting & Schakelingsschema

Hieronder het schakelingsschema voor de USB propeller LED ventilator analoge klok. Voor de versie met tijdfunctie, zie het tweede schema onderaan.

Procedure:

  1. Knip een klein stuk printplaat af volgens het schema.
  2. Plaats een groene LED in de gaten met de lange poot links. Buig aan de koperzijde de pootjes naar één kant (Groene LED's: LED 12 – LED 16 via R12 tot R16 en A5 tot A1 respectievelijk).
  3. Hetzelfde voor de overige rode LED's (LED 1 – LED 11 via R1 tot R11 en D2 tot D12 respectievelijk).
  4. Plaats de blauwe LED boven de groene LED's (Blauwe LED 17 via R17 en A7). R17 = 2,2 kΩ. Verbind de katode van deze LED met de katodes van de andere LED's. Verbind de anode met één uiteinde van R17, het andere uiteinde met Arduino +5V pin.
  5. Alle katodes van de LED's worden samengevoegd. Knip overbodige pootjes af.
  6. Plaats nu de weerstanden en buig de pootjes zoals bij de LED's. Knip overbodige pootjes.
  7. Soldeer de componenten volgens het schakelingsschema.
  8. Soldeer connectors aan de Arduino NANO.
  9. Verbind een draad van de gemeenschappelijke katode van de LED's naar de Arduino GND pin.

Verbind draden van de weerstanden naar Arduino Digitale pin "D" en Analog pin "A" als volgt:

  • R1 → D2, R2 → D3, R3 → D4, R4 → D5, R5 → D6, R6 → D7, R7 → D8, R8 → D9, R9 → D10, R10 → D11, R11 → D12
  • R12 → A1, R13 → A2, R14 → A3, R15 → A4, R16 → A5

Hallsensor aansluiten:

  • Uitgangspin → Arduino A0 pin
  • VCC pin → Arduino +5V pin
  • Sensor ground pin → Arduino GND pin

Als afwerking:

  1. Sluit de 3,7 V, 240 mAh batterij aan volgens schema; vergeet niet een enkelpolige glijschakelaar op de plusdraad voor AN/UIT.
  2. Monteer het hele project op een spaanderplaatje met de speelgoed DC-motor. Bij krachtigere motor voor hogere snelheid: 9 V tot 12 V batterij gebruiken.
  3. Upload de projectcode (hieronder) via USB-kabel en schakel het circuit AN. De ventilator toont de klok in LED-licht tijdens de propellerbeweging.

Projectcode

Je kunt de volgende broncode aanpassen en naar de Arduino NANO uploaden via USB-kabel.

Code via: hobbyprojects

int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; int LED6 = 7; int LED7 = 8; int LED8 = 9; int LED9 = 10; int LED10 = 11; int LED11 = 12; int LED12 = A1; int LED13 = A2; int LED14 = A3; int LED15 = A4; int LED16 = A5; int sensorPin = A0; int minuteSensor = A7; int hourSensor = A6; unsigned int n,ADCvalue,propeller_posn; unsigned long previousTime = 0; byte hours = 12; // set hours byte minutes = 15; // set minutes byte seconds = 00; // set seconds int val; void setup() { pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED4,OUTPUT); pinMode(LED5,OUTPUT); pinMode(LED6,OUTPUT); pinMode(LED7,OUTPUT); pinMode(LED8,OUTPUT); pinMode(LED9,OUTPUT); pinMode(LED10,OUTPUT); pinMode(LED11,OUTPUT); pinMode(LED12,OUTPUT); pinMode(LED13,OUTPUT); pinMode(LED14,OUTPUT); pinMode(LED15,OUTPUT); pinMode(LED16,OUTPUT); pinMode(sensorPin,INPUT_PULLUP); if(hours == 12) hours = 0; //**************************************** // Uncomment these lines for IR sensor testing /* Serial.begin(9600); while(1) { ADCvalue = analogRead(minuteSensor); Serial.print("minuteSensor "); Serial.println(ADCvalue); ADCvalue = analogRead(hourSensor); Serial.print("hourSensor "); Serial.println(ADCvalue); Serial.println(); delay(1000); } */ //**************************************** } void loop() { val = digitalRead(sensorPin); while (val == LOW) { val = digitalRead(sensorPin); } if (millis() >= (previousTime)) { previousTime = previousTime + 1000; seconds = seconds+1; if (seconds == 60) { seconds = 0; minutes = minutes+1; } if (minutes == 60) { minutes = 0; hours = hours+1; } if (hours == 12) { hours = 0; } } propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } drawMinuteMarker(); if ((propeller_posn==0) || (propeller_posn==5) || (propeller_posn==10) || (propeller_posn==15) || (propeller_posn==20) || (propeller_posn==25) || (propeller_posn==30) || (propeller_posn==35) || (propeller_posn==40) || (propeller_posn==45) || (propeller_posn==50) || (propeller_posn==55)) drawHourMarker(); if ((propeller_posn==0) || (propeller_posn==15) || (propeller_posn==30) || (propeller_posn==45)) drawQuarterMarker(); if((propeller_posn == hours*5) || (( propeller_posn == 0 ) && (hours == 0))) drawHoursHand(); if(propeller_posn == minutes) drawMinutesHand(); if(propeller_posn == seconds) drawSecondsHand(); delayMicroseconds(100); // LED pixel breedte (aanpassen aan motorsnelheid) displayClear(); drawInner_Circle(); delayMicroseconds(450); // gat tussen LED pixels/minuten markers (aanpassen aan motorsnelheid) n++; propeller_posn++; if(propeller_posn == 60) propeller_posn=0; } val = digitalRead(sensorPin); while (val == HIGH) { val = digitalRead(sensorPin); } } //========================= void displayClear() { digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); digitalWrite(LED7,LOW); digitalWrite(LED8,LOW); digitalWrite(LED9,LOW); digitalWrite(LED10,LOW); digitalWrite(LED11,LOW); digitalWrite(LED12,LOW); digitalWrite(LED13,LOW); digitalWrite(LED14,LOW); digitalWrite(LED15,LOW); digitalWrite(LED16,LOW); } void drawMinuteMarker() { digitalWrite(LED16,HIGH); } void drawHourMarker() { digitalWrite(LED15,HIGH); digitalWrite(LED14,HIGH); } void drawQuarterMarker() { digitalWrite(LED13,HIGH); digitalWrite(LED12,HIGH); } void drawHoursHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); } void drawMinutesHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); } void drawSecondsHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); digitalWrite(LED10,HIGH); digitalWrite(LED11,HIGH); } void drawInner_Circle() { digitalWrite(LED1,HIGH); delayMicroseconds(30); digitalWrite(LED1,LOW); } 

Hoe de tijd in te stellen in de LED-ventilator klok?

Voor basis IR-ontvanger met de hoofschakeling

Benodigde componenten:

  • R19 & R20 = 10 kΩ
  • IR Fototransistor LED (bij LED#13 voor minuutinstelling)
  • IR Fototransistor LED (bij LED#16 voor uurinstelling)

Verbind R19 met de eerste IR LED (bij LED#13 voor minuten) en R20 met de tweede IR (bij LED#16 voor uren). Verbind de gemeenschappelijke aansluiting van de IR LED's en beide weerstanden respectievelijk met GND en 5V van de Arduino NANO. Verbind een draadje van A7 pin naar tussen R19 en de tweede IR. Hetzelfde voor A6 pin naar R20 en de eerste IR.

Voor basis IR afstandsbediening zender

Benodigde componenten:

  • 9 V Batterij
  • Batterijklip
  • IR LED (Infrarood LED)
  • 1 kΩ weerstand
  • Tastschakelaar
  • Printplaat

Om een simpele IR zender te maken voor de tijdfunctie: sluit alle componenten in serie (9V batterij, IR LED, 1k weerstand, tastschakelaar op de pluspool). Deze zender wordt gericht op LED#13 en LED#16 om de tijd in te stellen.

De volgende code wordt gebruikt om de uur- en minuutspindel (minuut- en uurwijzers in gewone klok) van de analoge USB LED ventilator klok in te stellen en aan te passen.

Controleer de uitgang van de IR detectorschakeling via de Arduino Serial Monitor. Bijvoorbeeld: met normale kamerlicht > 500, met IR licht < 500. Pas de code of waarden aan volgens de gebruikte sensoren.

 propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } 

Om de minutenwijzer in te stellen: richt de IR afstandsbediening op de minutenmarker en druk de knop. Voor de uurwijzer: richt op de uurmarker en druk de knop.

Industriële technologie

  1. Arduino POV-klok: Bouw een Persistence-of-Vision LED-display
  2. Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
  3. Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
  4. Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
  5. Bouw een Betrouwbare Arduino Afteltimer met SparkFun 7‑Segment Display
  6. Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
  7. Bouw je eigen RC Porsche-auto met Arduino: Stap-voor-stap handleiding
  8. DIY Arduino USB Trackpad: Zet een Oude Laptop-Touchpad om in een Modern Invoerapparaat
  9. Objectkleuren detecteren met Arduino Nano en TCS3200-sensor
  10. LED Sequencer Bouwen met 555 Timer & 4017 Teller – Frequentiedeling & Debounce
  11. Professioneel LED nachtlamp schema – 230V/50Hz of 110V/60Hz netvoeding