Innehållsförteckning:

Ljussensor (fotoresistor) med Arduino i Tinkercad: 5 steg (med bilder)
Ljussensor (fotoresistor) med Arduino i Tinkercad: 5 steg (med bilder)

Video: Ljussensor (fotoresistor) med Arduino i Tinkercad: 5 steg (med bilder)

Video: Ljussensor (fotoresistor) med Arduino i Tinkercad: 5 steg (med bilder)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Juli
Anonim
Ljussensor (fotoresistor) med Arduino i Tinkercad
Ljussensor (fotoresistor) med Arduino i Tinkercad

Tinkercad -projekt »

Låt oss lära oss hur man läser en fotoresistor, en ljuskänslig typ av variabelt motstånd, med Arduinos analoga ingång. Det kallas också ett LDR (ljusberoende motstånd).

Hittills har du redan lärt dig att styra lysdioder med Arduinos analoga utgång och att läsa en potentiometer, som är en annan typ av variabelt motstånd, så vi bygger vidare på dessa färdigheter i den här lektionen. Kom ihåg att Arduinos analoga ingångar (stift markerade A0-A6) kan detektera en gradvis förändrad elektrisk signal och översätter den signalen till ett tal mellan 0 och 1023.

Bild
Bild

Utforska provkretsen som är inbäddad här i arbetsplanet genom att klicka på Starta simulering och klicka på fotoresistorn (brun oval med snirklig linje ner i mitten) och dra sedan reglaget för ljusstyrka för att justera den simulerade ljusinmatningen.

I den här lektionen kommer du att bygga denna simulerade krets själv längs provet. För att eventuellt bygga den fysiska kretsen, samla ihop ditt Arduino Uno -kort, USB -kabel, lödfritt brödbräda, en LED, motstånd (220 ohm och 4,7k ohm), fotoresistor och brödbrätsledningar.

Du kan följa med praktiskt taget med hjälp av Tinkercad Circuits. Du kan till och med se den här lektionen från Tinkercad (gratis inloggning krävs)! Utforska provkretsen och bygg din egen bredvid den. Tinkercad Circuits är ett gratis webbläsarbaserat program som låter dig bygga och simulera kretsar. Det är perfekt för lärande, undervisning och prototyper.

Steg 1: Bygg kretsen

Bygg kretsen
Bygg kretsen
Bygg kretsen
Bygg kretsen

Ta en titt på panelen på bilden. Det kan vara användbart att titta på en gratis trådversion av denna provkrets för jämförelse, på bilden. I det här steget kommer du att bygga din egen version av denna krets längs provet i arbetsplanet.

För att följa med, ladda upp ett nytt Tinkercad Circuits -fönster och bygg din egen version av denna krets längs provet.

Identifiera fotoresistorn, lysdioden, motstånden och ledningarna som är anslutna till Arduino i arbetsplanet för Tinkercad Circuits.

Dra en Arduino Uno och brödbräda från komponentpanelen till arbetsplanet, bredvid den befintliga kretsen.

Anslut brädbräda (+) och mark (-) skenor till Arduino 5V respektive jord (GND) genom att klicka för att skapa trådar.

Förläng kraft- och markskenor till sina respektive bussar på motsatta kanten av brödbrädet (valfritt för denna krets men god vanlig praxis).

Anslut lysdioden till två olika paneler så att katoden (negativt, kortare ben) ansluter till ett ben på ett motstånd (allt från 100-1K ohm är bra). Motståndet kan gå i båda riktningarna eftersom motstånden inte är polariserade, till skillnad från lysdioder, som måste anslutas på ett visst sätt för att fungera.

Anslut det andra motståndsbenet till marken.

Anslut LED -anoden (positivt, längre ben) till Arduino stift 9.

Dra en fotoresistor från komponentpanelen till din brödbräda, så att benen ansluts till två olika rader.

Klicka för att skapa en tråd som ansluter ett fotoresistorben till ström.

Anslut det andra benet till Arduino analoga stift A0.

Dra ett motstånd från komponentpanelen för att ansluta fotoresistorbenet som är anslutet till A0 med jord och justera dess värde till 4,7k ohm.

Steg 2: Kod med block

Kod med block
Kod med block

Låt oss använda kodblockredigeraren för att lyssna på fotoresistorns tillstånd och ställ sedan in en LED till en relativ ljusstyrka baserat på hur mycket ljus sensorn ser. Du kanske vill uppdatera ditt minne om LED -analog utgång i lektionen Fading LED.

Klicka på knappen "Kod" för att öppna kodredigeraren. De gråa noteringsblocken är kommentarer för att notera vad du tänker att din kod ska göra, men den här texten körs inte som en del av programmet.

Klicka på kategorin Variabler i kodredigeraren.

För att lagra motståndsvärdet för fotoresistorn, skapa en variabel med namnet "sensorValue".

Dra ut ett "set" -block. Vi lagrar tillståndet för vår fotoresistor i variabeln

sensorvärde

Klicka på inmatningskategorin och dra ut ett "analog lässtift" -block och placera det i "set" -blocket efter ordet "till"

Eftersom vår potentiometer är ansluten till Arduino på stift A0, ändra rullgardinsmenyn till A0.

Klicka på kategorin Utmatning och dra ut ett "skriv ut till seriell bildskärm" -block.

Navigera till kategorin Variabler och dra din variabel sensorValue till blocket "skriv ut till seriell bildskärm" och se till att rullgardinsmenyn är inställd på att skriva ut med en ny rad. Du kan också starta simuleringen och öppna den seriella bildskärmen för att kontrollera att avläsningar kommer in och ändras när du justerar sensorn. Analoga ingångsvärden sträcker sig från 0-1023.

Eftersom vi vill skriva till lysdioden med ett tal mellan 0 (av) och 255 (full ljusstyrka), kommer vi att använda "karta" -blocket för att göra lite korsmultiplikation för oss. Navigera till kategorin Matematik och dra ut ett "kart" -block.

I den första platsen drar du in ett sensorValue -variabelblock och anger sedan intervallet från 0 till 255.

Tillbaka i kategorin Output drar du ut ett analogt "set pin" -block, som som standard säger "set pin 3 to 0." Justera den för att ställa in stift 9.

Dra kartblocket du gjorde tidigare till fältet "set pin" blockets "to" för att skriva det justerade numret till LED -stiftet med PWM.

Klicka på kategorin Kontroll och dra ut ett väntblock och justera det för att fördröja programmet i.1 sekunder.

Steg 3: Fotoresistor Arduino -kod förklarad

När kodredigeraren är öppen kan du klicka på rullgardinsmenyn till vänster och välja "Block + Text" för att avslöja Arduino -koden som genereras av kodblocken. Följ med när vi utforskar koden mer detaljerat.

int sensorValue = 0;

Innan

uppstart()

skapar vi en variabel för att lagra det aktuella värdet avläst från potentiometern. Det heter

int

eftersom det är ett heltal eller ett heltal.

void setup ()

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

Inuti installationen konfigureras stiften med hjälp av

pinMode ()

fungera. Stift A0 är konfigurerat som en ingång, så vi kan "lyssna" på potentiometerns elektriska tillstånd. Stift 9 är konfigurerat som en utgång för att styra lysdioden. För att kunna skicka meddelanden öppnar Arduino en ny seriell kommunikationskanal med

Serial.begin ()

som tar ett överföringshastighetsargument (vilken hastighet att kommunicera), i detta fall 9600 bitar per sekund.

void loop ()

{// läs värdet från sensorn sensorValue = analogRead (A0); // skriv ut sensoravläsningen så att du känner till dess intervall Serial.println (sensorValue);

Allt efter en uppsättning snedstreck

//

är en kommentar som hjälper människor att förstå på ett enkelt språk vad programmet är avsett att göra, men ingår inte i programmet som din Arduino kör. I huvudslingan kallas en funktion

analogRead ();

kontrollerar tillståndet för stift A0 (som kommer att vara ett heltal från 0-1023) och lagrar det värdet i variabeln

sensorvärde

// mappa sensoravläsningen till ett område för lysdioden

analogWrite (9, map (sensorValue, 0, 1023, 0, 255)); fördröjning (100); // Vänta i 100 millisekunder

Raden efter nästa kommentar gör mycket på en gång. Kom ihåg

analogWrite ()

tar två argument, pin -numret (9 i vårt fall) och värdet som ska skrivas, som ska vara mellan 0 och 255. Inline -funktionen

Karta()

tar fem argument: antalet att utvärdera (den ständigt föränderliga sensorvariabeln), förväntat minimum och förväntat maximalt, och önskad min och max. Så det

Karta()

funktionen i vårt fall är att utvärdera den inkommande sensorValue, och göra lite korsmultiplikation för att skala ner utmatningen från 0-1023 till 0-255. Resultatet returneras till det andra argumentet av

analogWrite ();

inställning av ljusstyrkan för lysdioden ansluten till stift 9.

Steg 4: Bygg en fysisk Arduino -krets (tillval)

Bygg en fysisk Arduino -krets (tillval)
Bygg en fysisk Arduino -krets (tillval)

För att programmera din fysiska Arduino Uno måste du installera den kostnadsfria programvaran (eller plugin för webbredigeraren) och sedan öppna den. Olika fotoceller har olika värden, så om din fysiska krets inte fungerar kan du behöva byta motståndet som är parat med det. Läs mer om spänningsdelare i lektionen Instructables Electronics Class om motstånd.

Koppla upp Arduino Uno -kretsen genom att ansluta komponenter och ledningar för att matcha anslutningarna som visas här i Tinkercad Circuits. För en mer ingående genomgång av arbetet med ditt fysiska Arduino Uno-kort, kolla in den kostnadsfria Instructables Arduino-klassen.

Kopiera koden från kodfönstret för Tinkercad Circuits och klistra in den i en tom skiss i din Arduino -programvara, eller klicka på nedladdningsknappen (pil nedåt) och öppna

den resulterande filen med Arduino. Du kan också hitta detta exempel i Arduino -programvaran genom att navigera till Arkiv -> Exempel -> 03. Analog -> AnalogInOutSerial.

Anslut din USB -kabel och välj ditt kort och port i programvarans meny Verktyg.

Ladda upp koden och använd din hand för att täcka sensorn från att ta emot ljus, och/eller tända ett ljus på din sensor!

Öppna den seriella bildskärmen för att observera dina sensorvärden. Det är troligt att verkliga värden inte kommer att sträcka sig hela vägen till 0 eller ända till 1023, beroende på dina ljusförhållanden. Justera gärna 0-1023-intervallet till ditt observerade minimum och observerade maximalt för att få maximalt ljusstyrkauttrycksområde på lysdioden.

Steg 5: Testa sedan …

Nu när du har lärt dig att läsa en fotoresistor och kartlägga dess utgång för att styra ljusstyrkan på en LED, är du redo att tillämpa de och andra färdigheter du har lärt dig hittills.

Kan du byta ut lysdioden för en annan typ av utgång, som en servomotor, och skapa lite kod för att reflektera sensorns nuvarande ljusnivå som en viss position längs en mätare?

Prova att byta ut din fotoresistor för andra analoga ingångar, till exempel en ultraljudsavståndssensor eller potentiometer.

Lär dig mer om hur du övervakar din Arduinos digitala och analoga ingångar via datorn med hjälp av Serial Monitor.

Rekommenderad: