INHOUDSOPGAWE:

Lichtsensor (fotoresistor) met Arduino in Tinkercad: 5 stappe (met foto's)
Lichtsensor (fotoresistor) met Arduino in Tinkercad: 5 stappe (met foto's)

Video: Lichtsensor (fotoresistor) met Arduino in Tinkercad: 5 stappe (met foto's)

Video: Lichtsensor (fotoresistor) met Arduino in Tinkercad: 5 stappe (met foto's)
Video: ARDUINO lichtsensor 2024, Julie
Anonim
Lichtsensor (fotoresistor) Met Arduino in Tinkercad
Lichtsensor (fotoresistor) Met Arduino in Tinkercad

Tinkercad -projekte »

Kom ons leer hoe om 'n fotoresistor, 'n ligsensitiewe tipe veranderlike weerstand, te lees met behulp van Arduino's Analog Input. Dit word ook 'n LDR (ligafhanklike weerstand) genoem.

Tot dusver het u al geleer om LED's te beheer met die analoog -uitgang van Arduino, en om 'n potensiometer te lees, wat 'n ander soort veranderlike weerstand is, sodat ons in hierdie les op hierdie vaardighede sal voortbou. Onthou dat die analoog insette van Arduino (penne gemerk A0-A6) 'n geleidelik veranderende elektriese sein kan opspoor en die sein vertaal in 'n getal tussen 0 en 1023.

Beeld
Beeld

Ontdek die monsterbaan wat hier in die werkvlak ingebed is deur op Start Simulasie te klik en op die fotoresistor (bruin ovaal met kronkelende lyn in die middel) te klik, en sleep dan die skuifknop om die gesimuleerde liginset aan te pas.

In hierdie les bou u hierdie gesimuleerde stroombaan langs die monster. Om die fisiese stroombaan moontlik te bou, moet u u Arduino Uno -bord, USB -kabel, soldeerlose broodbord, 'n LED, weerstande (220 ohm en 4,7k ohm), fotoresistor en broodborddrade bymekaarmaak.

U kan feitlik volg met behulp van Tinkercad Circuits. U kan hierdie les selfs vanuit Tinkercad sien (gratis aanmelding is nodig)! Verken die steekproefbaan en bou u eie reg langsaan. Tinkercad Circuits is 'n gratis blaaier-gebaseerde program waarmee u stroombane kan bou en simuleer. Dit is ideaal vir leer, onderrig en prototipering.

Stap 1: Bou die stroombaan

Bou die stroombaan
Bou die stroombaan
Bou die stroombaan
Bou die stroombaan

Kyk na die broodbordbaan op die foto. Dit kan handig wees om na 'n gratis bedrade weergawe van hierdie monsterbaan te kyk vir vergelyking, op die foto. In hierdie stap bou u u eie weergawe van hierdie kring langs die monster in die werkvlak.

Laai 'n nuwe Tinkercad Circuits -venster op om te volg en bou u eie weergawe van hierdie stroombaan langs die monster.

Identifiseer die fotoresistor, LED, weerstande en drade wat aan die Arduino gekoppel is in die werkvlak van die Tinkercad Circuits.

Sleep 'n Arduino Uno en broodbord van die komponentpaneel na die werkvlak, langs die bestaande kring.

Koppel broodbordkrag (+) en grond (-) relings aan onderskeidelik Arduino 5V en grond (GND) deur te klik om drade te skep.

Steek krag- en grondrails uit na hul onderskeie busse aan die teenoorgestelde rand van die broodbord (opsioneel vir hierdie kring, maar goeie praktyk).

Koppel die LED in twee verskillende broodbordrye sodat die katode (negatiewe, korter been) by een been van 'n weerstand aansluit (oral is 100-1K ohm goed). Die weerstand kan in beide rigtings beweeg omdat resistors nie gepolariseer is nie, anders as LED's, wat op 'n sekere manier verbind moet word om te funksioneer.

Koppel die ander weerstandsbeen aan die grond.

Draai die LED -anode (positiewe, langer been) na die Arduino -pen 9.

Sleep 'n fotoresistor van die komponentpaneel na u broodbord, sodat die bene in twee verskillende rye aansluit.

Klik om 'n draad te maak wat een fotoresistor -been met krag verbind.

Koppel die ander been aan die Arduino analoog pen A0.

Sleep 'n weerstand van die komponentpaneel om die fotoresistorbeen wat met A0 gekoppel is, met grond te verbind en pas die waarde daarvan tot 4,7k ohm aan.

Stap 2: Kodeer met blokke

Kode met blokke
Kode met blokke

Kom ons gebruik die kodeblokke -redakteur om na die toestand van die fotoresistor te luister, en stel dan 'n LED op 'n relatiewe helderheid gebaseer op hoeveel lig die sensor sien. U wil u geheue van analoog LED -uitvoer in die Fading LED -les verfris.

Klik op die knoppie "Kode" om die kode -redakteur oop te maak. Die grys notasieblokke is opmerkings om aan te teken wat u van plan is om met u kode te doen, maar hierdie teks word nie as deel van die program uitgevoer nie.

Klik op die kategorie veranderlikes in die kode -redakteur.

Om die weerstandswaarde van die fotoresistor op te slaan, skep 'n veranderlike met die naam "sensorValue".

Sleep 'n "stel" blok uit. Ons sal die toestand van ons fotoresistor in die veranderlike stoor

sensorwaarde

Klik op die kategorie Invoer en sleep 'n blok "analoog leespen" en plaas dit in die blok "stel" na die woord "na"

Aangesien ons potensiometer op pin A0 aan die Arduino gekoppel is, verander die aftreklys na A0.

Klik op die kategorie Uitvoer en sleep 'n blok "druk na seriële monitor".

Navigeer na die kategorie veranderlikes en sleep u veranderlike sensorValue na die blok "druk na seriële monitor" en maak seker dat die aftreklys met 'n nuwe reël gedruk word. U kan ook die simulasie begin en die seriële monitor oopmaak om te verifieer dat die lesings binnekom en verander wanneer u die sensor aanpas. Analoog insetwaardes wissel van 0-1023.

Aangesien ons aan die LED wil skryf met 'n getal tussen 0 (af) en 255 (volle helderheid), gebruik ons die "kaart" -blok om kruisvermenigvuldiging vir ons te doen. Gaan na die kategorie Wiskunde en sleep 'n "kaart" -blok uit.

Sleep in die eerste gleuf 'n sensorValue -veranderlike blok in en stel dan die reeks van 0 tot 255 in.

Sleep terug in die kategorie Uitset 'n analoog "set pin" -blok, wat standaard "stel pen 3 op 0." sê Pas dit aan om pen 9 te stel.

Sleep die kaartblok wat u vroeër gemaak het, na die "stel pen" blok se "na" veld om die aangepaste getal met behulp van PWM aan die LED -pen te skryf.

Klik op die kategorie Beheer en sleep 'n wagblok uit en pas dit aan om die program vir 1 sekondes te vertraag.

Stap 3: Fotoresistor Arduino -kode verduidelik

As die kode -redakteur oop is, kan u op die keuselys aan die linkerkant klik en 'Blokke + teks' kies om die Arduino -kode wat deur die kodeblokke gegenereer word, te openbaar. Volg dit terwyl ons die kode in meer besonderhede ondersoek.

int sensorValue = 0;

Voor die

stel op()

skep ons 'n veranderlike om die huidige waarde wat deur die potensiometer gelees is, op te slaan. Dit word genoem

int

omdat dit 'n heelgetal of enige heelgetal is.

leemte opstelling ()

{pinMode (A0, INVOER); pinMode (9, UITGANG); Serial.begin (9600); }

Binne die opstelling word penne gekonfigureer met behulp van die

pinMode ()

funksie. Speld A0 is as 'n invoer opgestel, sodat ons na die elektriese toestand van die potensiometer kan 'luister'. Speld 9 is gekonfigureer as 'n uitset om die LED te beheer. Om boodskappe te kan stuur, maak die Arduino 'n nuwe seriële kommunikasiekanaal oop met

Serial.begin ()

wat 'n baud rate argument (watter spoed om te kommunikeer) neem, in hierdie geval 9600 bits per sekonde.

leemte lus ()

{// lees die waarde van die sensor sensorValue = analogRead (A0); // druk die sensorlesing af sodat u die reeks Serial.println (sensorValue) ken;

Enigiets na 'n stel strepies

//

is 'n opmerking wat mense help om in eenvoudige taal te verstaan wat die program bedoel is om te doen, maar dit is nie ingesluit in die program wat u Arduino uitvoer nie. In die hooflus word 'n funksie genoem

analogRead ();

kontroleer die toestand van pen A0 (wat 'n heelgetal van 0-1023 sal wees) en stoor die waarde in die veranderlike

sensorwaarde

// kaart die sensorlesing tot 'n bereik vir die LED

analogWrite (9, kaart (sensorValue, 0, 1023, 0, 255)); vertraging (100); // Wag vir 100 millisekonde (s)}

Die reël wat die volgende opmerking volg, doen baie tegelyk. Onthou

analogWrite ()

neem twee argumente, die speldnommer (9 in ons geval), en die waarde om te skryf, wat tussen 0 en 255 moet wees. Die inlynfunksie

kaart ()

neem vyf argumente: die getal wat geëvalueer moet word (die steeds veranderende sensorveranderlike), die verwagte minimum en verwagte maksimum, en die gewenste min en maks. Sodat die

kaart ()

funksie in ons geval is om die inkomende sensorwaarde te evalueer en kruisvermenigvuldiging te doen om die uitset van 0-1023 tot 0-255 af te skaal. Die resultaat word in die tweede argument van

analogWrite ();

stel die helderheid in van die LED wat aan pen 9 gekoppel is.

Stap 4: Bou 'n fisiese Arduino -stroombaan (opsioneel)

Bou 'n fisiese Arduino -stroombaan (opsioneel)
Bou 'n fisiese Arduino -stroombaan (opsioneel)

Om u fisiese Arduino Uno te programmeer, moet u die gratis sagteware (of inprop vir die webredakteur) installeer en dit dan oopmaak. Verskeie fotoselle het verskillende waardes, dus as u fisiese stroombaan nie werk nie, moet u die weerstand wat daaraan gekoppel is, verander. Lees meer oor spanningsverdelers in die les Instructables Electronics Class oor weerstande.

Koppel die Arduino Uno -stroombaan aan deur komponente en drade aan te sluit om aan te pas by die verbindings wat hier in Tinkercad Circuits getoon word. Kyk na die gratis Instructables Arduino-klas vir 'n meer diepgaande uitleg oor die werk met u fisiese Arduino Uno-bord.

Kopieer die kode uit die Tinkercad Circuits -kodevenster en plak dit in 'n leë skets in u Arduino -sagteware, of klik op die aflaai -knoppie (pyl na onder) en maak oop

die gevolglike lêer met behulp van Arduino. Jy kan hierdie voorbeeld ook vind in die Arduino -sagteware deur na File -> Voorbeelde -> 03. Analog -> AnalogInOutSerial te gaan.

Koppel u USB -kabel en kies u bord en poort in die sagteware se gereedskapskieslys.

Laai die kode op en gebruik u hand om die sensor te bedek teen lig, en/of 'n lig op u sensor te laat skyn!

Maak die seriële monitor oop om u sensorwaardes waar te neem. Dit is waarskynlik dat die waardes van die werklike wêreld nie tot 0 of tot 1023 strek nie, afhangende van u beligtingstoestande. Pas die 0-1023-reeks aan tot u waargenome minimum en waargenome maksimum om die maksimum helderheidsuitdrukkingsbereik op die LED te kry.

Stap 5: Probeer dan …

Noudat u geleer het om 'n fotoresistor te lees en die uitset daarvan in kaart te bring om die helderheid van 'n LED te beheer, is u gereed om die en ander vaardighede toe te pas wat u tot dusver geleer het.

Kan u die LED vir 'n ander tipe uitvoer vervang, soos 'n servomotor, en 'n kode skep om die sensor se huidige ligvlak as 'n sekere posisie langs 'n meter te weerspieël?

Probeer om u fotoresistor uit te ruil vir ander analoog insette, soos 'n ultrasoniese afstandsensor of potensiometer.

Lees meer oor hoe u die digitale en analoge insette van u Arduino via die rekenaar met behulp van die seriële monitor kan monitor.

Aanbeveel: