Sadržaj:

Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu: 5 koraka (sa slikama)
Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu: 5 koraka (sa slikama)

Video: Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu: 5 koraka (sa slikama)

Video: Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu: 5 koraka (sa slikama)
Video: ARDUINO UNO PROJECT:Ambient Light Sensor using Photoresistor 2024, Srpanj
Anonim
Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu
Senzor svjetla (fotootpornik) s Arduinom u Tinkercadu

Tinkercad projekti »

Naučimo čitati fotootpornik, tip promjenjivog otpornika osjetljivog na svjetlo, pomoću Arduinovog analognog ulaza. Naziva se i LDR (otpornik ovisan o svjetlu).

Do sada ste već naučili kontrolirati LED diode s Arduinovim analognim izlazom i čitati potenciometar, što je druga vrsta promjenjivog otpornika, pa ćemo u ovoj lekciji nadograditi te vještine. Upamtite da Arduino analogni ulazi (pinovi označeni A0-A6) mogu detektirati postupno mijenjajući električni signal i prevesti taj signal u broj između 0 i 1023.

Slika
Slika

Istražite uzorak kruga ugrađenog ovdje u radnu ravninu klikom na Start Simulation (Pokreni simulaciju) i klikom na fotootpornik (smeđi oval s iskrivljenom linijom po sredini), a zatim povucite klizač za svjetlinu kako biste prilagodili simulirani unos svjetlosti.

U ovoj lekciji ćete sami izgraditi ovaj simulirani krug uz uzorak. Za opcionalnu izgradnju fizičkog kruga, prikupite svoju Arduino Uno ploču, USB kabel, ploču za lemljenje, LED diodu, otpornike (220 ohma i 4,7 k ohma), fotootpornike i žice za matičnu ploču.

Možete ih pratiti virtualno pomoću Tinkercad kola. Ovu lekciju možete čak pogledati iz Tinkercada (potrebna je besplatna prijava)! Istražite ogledni krug i napravite svoj vlastiti pored njega. Tinkercad Circuits je besplatni program zasnovan na pregledniku koji vam omogućuje izgradnju i simulaciju sklopova. Savršen je za učenje, poučavanje i izradu prototipova.

Korak 1: Izgradite krug

Izgradite krug
Izgradite krug
Izgradite krug
Izgradite krug

Pogledajte krug ploče na slici. Za usporedbu, na slici, može biti korisno pogledati besplatnu verziju ovog uzorka sklopa. U ovom koraku izgradit ćete vlastitu verziju ovog kruga uz uzorak u radnoj ravnini.

Da biste nastavili, učitajte novi prozor Tinkercad Circuits i uz uzorak napravite vlastitu verziju ovog kruga.

Prepoznajte fotootpornik, LED diodu, otpornike i žice spojene na Arduino u radnoj ravnini Tinkercad Circuits.

Povucite Arduino Uno i ploču s ploču s komponentama na radnu plohu, pored postojećeg kruga.

Napajanje (+) i uzemljene (-) tračnice spojite na Arduino 5V i uzemljenje (GND), klikom za stvaranje žica.

Proširite tračnice za uzemljenje i uzemljenje na odgovarajuće sabirnice na suprotnom rubu matične ploče (izborno za ovaj krug, ali dobra uobičajena praksa).

Uključite LED u dva različita reda ploče tako da se katoda (negativna, kraća noga) poveže s jednom nogom otpornika (bilo gdje je 100-1K ohma u redu). Otpornik može ići u bilo kojoj orijentaciji jer otpornici nisu polarizirani, za razliku od LED dioda, koje za rad moraju biti povezane na određeni način.

Spojite drugu nogu otpornika na masu.

Spojite LED anodu (pozitivna, duža noga) na Arduino pin 9.

Povucite fotootpornik s ploče sa komponentama na matičnu ploču tako da se njegove nožice utaknu u dva različita reda.

Kliknite za stvaranje žice koja povezuje jednu nogu fotootpornika na napajanje.

Drugu nogu spojite na Arduino analogni pin A0.

Povucite otpornik s ploče s komponentama kako biste nogu fotootpornika spojenu s A0 spojili s masom i podesite njegovu vrijednost na 4,7 k ohma.

Korak 2: Kodirajte s blokovima

Kôd s blokovima
Kôd s blokovima

Upotrijebimo uređivač blokova kodova za osluškivanje stanja fotootpornika, a zatim LED postavimo na relativnu svjetlinu na temelju toga koliko svjetla senzor vidi. Možda ćete htjeti osvježiti pamćenje analognog LED izlaza u lekciji Fading LED.

Pritisnite gumb "Kod" da biste otvorili uređivač koda. Blokovi sive bilješke su komentari za bilježenje onoga što namjeravate učiniti svojim kodom, ali ovaj se tekst ne izvršava kao dio programa.

U uređivaču koda kliknite kategoriju Varijable.

Za spremanje vrijednosti otpora fotootpora, stvorite varijablu pod nazivom "sensorValue".

Povucite "set" blok. Spremit ćemo stanje našeg fotootpornika u varijablu

senzorVrijednost

Kliknite na kategoriju Input i povucite blok "analogni pin za čitanje" i postavite ga u blok "set" iza riječi "na"

Budući da je naš potenciometar spojen na Arduino na pin A0, promijenite padajući izbornik na A0.

Pritisnite kategoriju Output i povucite blok "print to serijski monitor".

Idite do kategorije Varijable i povucite svoju varijablu sensorValue na blok "ispis na serijski monitor" i provjerite je li padajući izbornik postavljen za ispis novim retkom. Po želji pokrenite simulaciju i otvorite serijski monitor kako biste provjerili dolaze li očitanja i mijenjaju se prilikom podešavanja senzora. Vrijednosti analognih ulaza su u rasponu od 0-1023.

Budući da želimo pisati na LED diodu s brojem između 0 (isključeno) i 255 (puna svjetlina), upotrijebit ćemo blok "mapa" da bismo za nas izvršili unakrsno umnožavanje. Dođite do kategorije Math i povucite blok "karta".

U prvom utoru povucite blok varijable sensorValue, a zatim postavite raspon od 0 do 255.

Povratak u kategoriju Output povucite analogni blok "set pin", koji prema zadanim postavkama kaže "set pin 3 to 0." Namjestite ga tako da postavi pin 9.

Povucite blok karte koji ste prethodno napravili u polje "na" bloka "postavi pin" da biste upisali prilagođeni broj u LED pin pomoću PWM -a.

Pritisnite kategoriju Upravljanje i povucite blok čekanja te ga prilagodite tako da program odgodi za 0,1 sekundu.

Korak 3: Objašnjen Arduino kod fotootpornika

Kad je uređivač koda otvoren, možete kliknuti padajući izbornik s lijeve strane i odabrati "Blokovi + tekst" da biste otkrili Arduino kôd koji generiraju blokovi koda. Pratite nas dok detaljnije istražujemo kôd.

int sensorValue = 0;

Prije

postaviti()

stvaramo varijablu za spremanje trenutne vrijednosti očitane s potenciometra. To se zove

int

jer je to cijeli broj ili bilo koji cijeli broj.

void setup ()

{pinMode (A0, INPUT); pinMode (9, OUTPUT); Serial.begin (9600); }

Unutar postavki, igle su konfigurirane pomoću

pinMode ()

funkcija. Pin A0 je konfiguriran kao ulaz, tako da možemo "slušati" električno stanje potenciometra. Pin 9 je konfiguriran kao izlaz za upravljanje LED diodama. Da bi mogao slati poruke, Arduino otvara novi serijski komunikacijski kanal s

Serial.begin ()

koji uzima argument brzine prijenosa (kojom brzinom komunicira), u ovom slučaju 9600 bita u sekundi.

void loop ()

{// očitavanje vrijednosti sa senzora sensorValue = analogRead (A0); // ispisujte očitanje senzora tako da znate njegov raspon Serial.println (sensorValue);

Sve nakon niza kosih crta

//

je komentar koji pomaže ljudima na jednostavnom jeziku razumjeti što program namjerava učiniti, ali nije uključen u program koji pokreće vaš Arduino. U glavnoj petlji funkcija koja se zove

analogRead ();

provjerava stanje pina A0 (što će biti cijeli broj od 0-1023) i pohranjuje tu vrijednost u varijablu

senzorVrijednost

// preslikavanje očitanja senzora u raspon za LED

analogWrite (9, karta (sensorValue, 0, 1023, 0, 255)); kašnjenje (100); // Pričekajte 100 milisekundi (i)}

Redak nakon sljedećeg komentara čini puno odjednom. Zapamtiti

analogWrite ()

uzima dva argumenta, pin broj (u našem slučaju 9) i vrijednost za upisivanje, koja bi trebala biti između 0 i 255. Ugrađena funkcija

karta()

uzima pet argumenata: broj za procjenu (promjenjiva varijabla senzora), očekivani minimum i očekivani maksimum te željene min i max. Dakle,

karta()

U našem slučaju, funkcija procjenjuje dolaznu vrijednost sensorValue i vrši unakrsno množenje kako bi smanjila izlaz s 0-1023 na 0-255. Rezultat se vraća u drugi argument od

analogWrite ();

podešavanje svjetline LED diode spojene na pin 9.

Korak 4: Izgradite fizički Arduino krug (izborno)

Izgradite fizički Arduino krug (izborno)
Izgradite fizički Arduino krug (izborno)

Da biste programirali svoj fizički Arduino Uno, morat ćete instalirati besplatni softver (ili dodatak za web uređivač), a zatim ga otvoriti. Različite fotoćelije imaju različite vrijednosti, pa ako vaš fizički krug ne radi, možda ćete morati promijeniti otpornik koji je uparen s njim. Saznajte više o razdjelnicima napona u lekciji o otpornicima na satu elektronike Instructables.

Ožičite Arduino Uno krug priključivanjem komponenti i žica kako bi odgovarali spojevima prikazanim ovdje u Tinkercad krugovima. Za detaljniji opis rada s vašom fizičkom Arduino Uno pločom pogledajte besplatni Arduino razred Instructables.

Kopirajte kôd iz prozora koda Tinkercad Circuits i zalijepite ga u praznu skicu u svom Arduino softveru ili kliknite gumb za preuzimanje (strelica prema dolje) i otvorite

rezultirajuća datoteka pomoću Arduina. Ovaj primjer možete pronaći i u softveru Arduino tako što ćete otići na Datoteka -> Primjeri -> 03. Analog -> AnalogInOutSerial.

Priključite USB kabel i odaberite ploču i priključak na izborniku Alati softvera.

Učitajte kôd i rukom zaklonite senzor od primanja svjetla i/ili osvijetlite senzor!

Otvorite serijski monitor kako biste promatrali vrijednosti senzora. Vjerojatno se stvarne vrijednosti neće proširiti sve do 0 ili sve do 1023, ovisno o vašim svjetlosnim uvjetima. Slobodno prilagodite raspon 0-1023 svom promatranom minimumu i promatranom maksimumu kako biste dobili maksimalni raspon izraza svjetline na LED-u.

Korak 5: Zatim pokušajte…

Sada kada ste naučili čitati fotootpornik i mapirati njegov izlaz za kontrolu svjetline LED diode, spremni ste primijeniti te i druge vještine koje ste do sada naučili.

Možete li zamijeniti LED diodu za drugu vrstu izlaza, poput servo motora, i stvoriti neki kôd koji odražava trenutnu razinu osvjetljenja senzora kao određeni položaj duž mjerača?

Pokušajte zamijeniti svoj fotootpornik za druge analogne ulaze, poput ultrazvučnog senzora udaljenosti ili potenciometra.

Saznajte više o tome kako nadzirati digitalne i analogne ulaze vašeg Arduina putem računala pomoću serijskog monitora.

Preporučeni: