Soek Kode

Les 98-2: Hoe om 'n LED aan en af te skakel met 'n drukknop met Arduino

Les 98-2: Hoe om 'n LED aan en af te skakel met 'n drukknop met Arduino

Hierdie projek wys jou hoe om 'n LED met 'n drukknop met behulp van 'n Arduino te beheer. In plaas daarvan om die LED vanself te laat flikker, besluit jy wanneer dit aangaan: hou die knop ingedruk en die LED skakel aan, laat los en dit skakel af. Dit is die natuurlike volgende stap ná 'n gewone flikker-skets, want dit stel twee idees bekend wat in byna elke Arduino-projek voorkom wat jy ooit sal bou — die lees van 'n digitale inset, en die gebruik van daardie inset om 'n besluit in kode te maak.

all projects of lesson 98, breadbaors and components
all projects of lesson 98, breadbaors and components

Die werklike waarde hier is om te leer hoe 'n mikrobeheerder die fisiese wêreld aanvoel. 'n Drukknop is die eenvoudigste menslike insettoestel wat daar is, maar dieselfde patroon — lees 'n inset, toets 'n toestand, dryf 'n uitset — is presies hoe jy 'n limietskakelaar op 'n 3D-drukker sou lees, 'n deur wat oopgaan op 'n sekuriteitstelsel sou opspoor, of 'n motor vanaf 'n beheerpaneel sou aanskakel. Sodra jy hierdie een stroombaan verstaan, kan jy die LED vir byna enigiets omruil.

Hier is 'n paar praktiese dinge wat jy met dieselfde tegniek kan bou:

  • 'n Oombliklike deurklokkie of oproepknoppie wat 'n lamp laat brand terwyl dit ingedruk word.
  • 'n "dodemansskakelaar" wat slegs 'n relais (en wat dit ook al aandryf) geaktiveer hou terwyl die knop ingehou word.
  • 'n Handmatige toetsknop vir 'n masjien, waar 'n aanduider-LED bevestig dat die inset geregistreer word.
  • 'n Startknop vir 'n motordrywer of pomp, met die LED wat as 'n statuslig dien.
  • 'n Eenvoudige speletjie-zoemer waar die eerste speler wat druk wen en die LED die wenner aankondig.
  • 'n Kalibrasie- of "leer"-knop op 'n sensorprojek wat oplig terwyl die modus aktief is.

Hardeware en Komponente

Die onderdelenlys is doelbewus klein, wat is waarom dit 'n uitstekende eerste insetprojek maak:

  • 'n Arduino-bord — Uno, Nano, Mega, of enige versoenbare bord.
  • Een LED, hetsy 5 mm of 3 mm, in enige kleur.
  • Een weerstand vir die LED, enigiets van 200 Ω tot 1000 Ω.
  • Een oombliklike drukknopskakelaar.
  • 'n Broodbord en 'n paar DuPont-verbindingsdrade.
LED-5mm-amber
LED-5mm-amber

As jy wonder hoekom 'n weerstand hoegenaamd nodig is, loop die transkripsie deur die wiskunde (in video by 03:49). 'n Tipiese LED val ongeveer 2 V oor homself en wil ongeveer 10 mA stroom hê. Met 'n 5 V-toevoer, moet die oorblywende 3 V deur die weerstand geval word, so Ohm se wet gee R = 3 V / 0.01 A = 300 Ω. Enigiets van 300 Ω tot ongeveer 1000 Ω sal werk — hoe hoër die waarde, hoe dowwer die LED, maar hoe veiliger en doeltreffender dit is. Die stroom is nie krities nie; jy ruil bloot helderheid vir laer stroomverbruik.

Bedradingsgids

Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch

Die stroombaan is dieselfde LED-stroombaan wat jy vir 'n flikker-skets sou gebruik, met 'n drukknop bygevoeg. Die LED se anode (die langer been) verbind deur die weerstand aan Arduino-pen 3, en die katode (die korter been, gemerk deur die plat kant van die plastiekrand) gaan na grond. Die drukknop verbind tussen pen 2 en grond.

Een detail wat die moeite werd is om te weet: die drukknop het vier bene, maar hulle is intern gepaar. Twee van die bene is permanent aan mekaar verbind, en die ander twee is permanent aan mekaar verbind — om die knop te druk oorbrug die twee pare. As jy 'n multimeter het, gebruik sy kontinuïteit (piep) -modus om te vind watter bene reeds verbind is wanneer die knop nie gedruk word nie; daardie twee is die paar wat jy nie moet gebruik nie. Kies een been uit elk van die twee onafhanklike pare (in video by 07:50).

330_ohm_resistor
330_ohm_resistor

Hoe die Kode Werk

Die skets is kort, en byna alles daarvan is konfigurasie wat jy kan aanpas. Die drie reëls aan die bokant is die wat jy werklik sal aanraak:

const int pushButtonPin = 2;//define a pin number for push button
const int LEDPin = 3;//define a pin that is connected to LED
const int delayLED = 0;//how long the LED should stay ON

pushButtonPin is die digitale pen waaraan die knop bedraad is. Verander dit as jy die knop na 'n ander pen skuif — onthou net om die fisiese draad te skuif om te pas.

LEDPin is die pen wat die LED aandryf. Enige digitale pen sal doen, maar hou in gedagte dat pene 0 en 1 deur die reeksverbinding gebruik word, so dit is die beste om hulle te vermy.

delayLED is die interessantste instelling. Dit beheer hoe lank die LED aan bly nadat jy die knoppie loslaat, gemeet in millisekondes. Om dit op 0 te stel beteken die LED skakel af op die oomblik wat jy jou vinger lig. Om dit op 1000 te stel hou die LED vir een vol sekonde aan nadat dit losgelaat is, en 5000 hou dit vir vyf sekondes aan (in video by 16:31). Hierdie enkele getal verander heeltemal hoe die projek voel, en dit is 'n goeie manier om te sien hoe 'n veranderlike in kode direk vertaal in gedrag wat jy kan waarneem.

Twee ander dinge in die opstelling is die moeite werd om op te let. Eerstens, die knoppie-pen is gekonfigureer met INPUT_PULLUP eerder as gewone INPUT:

pinMode(pushButtonPin, INPUT_PULLUP);//define a pin for push button switch

Dit aktiveer die Arduino se interne pull-up weerstand, wat die pen op 'n stabiele HOË vlak hou wanneer die knoppie nie gedruk is nie. Sonder dit sal 'n swewende insetpen toevallige elektriese geraas opvang en random lesings gee, en jy sal 'n eksterne weerstand nodig hê om dit reg te maak. Met die interne pull-up geaktiveer, bly die bedrading eenvoudig: een kant van die knoppie na die pen, die ander kant na grond. Wanneer jy die knoppie druk, word die pen afgetrek na grond en lees LAAG (in video by 14:08).

Tweedens, die reeksmonitor word begin teen 9600 baud sodat jy die toestandsveranderinge kan sien soos dit gebeur:

Serial.begin(9600);//initialize the serial monitor
Serial.println("Robojax LED with push button");//print this text on Serial Monitor

In die hoof-lus is die logika 'n eenvoudige if/else. Die kode lees die knoppie-pen en vergelyk dit met LOW. As die knoppie gedruk is, gaan die LED-pen HOOG, die boodskap "LED ON" word gedruk, en die skets wag vir delayLED millisekondes. As die knoppie nie gedruk is nie, gaan die LED-pen LAAG en die LED skakel af. Omdat loop() oor en oor loop, gebeur hierdie kontrole duisende kere per sekonde, so die reaksie voel onmiddellik.

Lewendige Demonstrasie

Met delayLED op 1000 gestel, laat die druk van die knoppie die LED lig en dit bly vir 'n sekonde aan nadat jy dit loslaat. Verlaag die waarde na 5000 en die LED bly vir vyf sekondes aan — lank genoeg dat jy van die knoppie kan wegstap en dit steeds aan kan sien. Stel dit op 0 en die LED volg jou vinger presies: druk, aan; loslaat, af (in video by 17:02).

Sodra die kode opgelaai is, kan jy die Arduino van USB ontkoppel en dit van 'n battery of 'n 5 V adapter aandryf. Die bord het nie 'n rekenaar nodig om te werk nie — die program word in sy geheue gestoor en begin outomaties elke keer wanneer dit aangeskakel word (in video by 12:27).

As jy eerder wil hê die LED moet aan bly na 'n enkele druk en afskakel op die volgende druk, is dit 'n ander gedrag genaamd toggling, en dit word gedek in Les 98-3: Hoe om 'n Toggle LED Aan/af te skakel met 'n Druk-knoppie met Arduino. Die druk-knoppie bedrading is identies, so jy kan hierdie presiese stroombaan hergebruik.

Verwante projekte uit hierdie video

Hoofstukke

  • [00:00] Oorsig van die 10 projekte in hierdie video
  • [01:00] Inleiding tot die Arduino stap-vir-stap kursus
  • [02:29] Wat 'n LED is: simbool, anode, katode, en fisiese vorm
  • [03:49] Bereken die LED weerstand met Ohm se wet
  • [07:32] Bedrading van die LED en druk-knoppie op die broodbord
  • [08:50] Verduideliking van die kode: penne, opstelling, en die hoof-lus
  • [12:43] Hoe 'n druk-knoppie skakelaar werk
  • [13:22] Bedrading van die druk-knoppie na pen 2 en grond
  • [13:43] Kode deurloop: INPUT_PULLUP en lees van die knoppie
  • [16:14] Demonstrasie: verander delayLED van 1 s na 5 s na 0
  • [19:52] Praktiese toepassings van 'n druk-knoppie toggle

Beelde

2 pin tactile push button switch
2 pin tactile push button switch
Arduino wiring for LED  with resistor
Arduino wiring for LED with resistor
Arduino schematic for LED
Arduino schematic for LED
Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
alle projekte van les 98, broodborde en komponente
alle projekte van les 98, broodborde en komponente
alle projekte van les 98, broodborde en komponente
alle projekte van les 98, broodborde en komponente
LED-5mm-amber
LED-5mm-amber
934-Lessson 98-LED-2: Arduino code push button to turn LED ON and OFF
Taal: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Lêers📁

Arduino Biblioteke (zip)

Gebruikershandleiding