Inhoudsopgave:
- Stap 1: Bouw het circuit
- Stap 2: Codeer met blokken
- Stap 3: Fotoresistor Arduino-code uitgelegd
- Stap 4: Bouw een fysiek Arduino-circuit (optioneel)
- Stap 5: Probeer vervolgens …
Video: Lichtsensor (Photoresistor) met Arduino in Tinkercad - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Tinkercad-projecten »
Laten we leren hoe we een fotoresistor, een lichtgevoelig type variabele weerstand, kunnen lezen met behulp van Arduino's analoge ingang. Het wordt ook wel een LDR (lichtafhankelijke weerstand) genoemd.
Tot nu toe heb je al geleerd om LED's te besturen met Arduino's analoge uitgang, en om een potentiometer te lezen, wat een ander type variabele weerstand is, dus we zullen in deze les voortbouwen op die vaardigheden. Onthoud dat Arduino's analoge ingangen (pinnen gemarkeerd met A0-A6) een geleidelijk veranderend elektrisch signaal kunnen detecteren en dat signaal vertalen in een getal tussen 0 en 1023.
Verken het voorbeeldcircuit dat hier in het werkvlak is ingebed door op Simulatie starten te klikken en op de fotoresistor te klikken (bruin ovaal met kronkelende lijn in het midden), en sleep vervolgens de schuifregelaar voor helderheid om de gesimuleerde lichtinvoer aan te passen.
In deze les bouwt u dit gesimuleerde circuit zelf naast het voorbeeld. Om optioneel het fysieke circuit te bouwen, verzamelt u uw Arduino Uno-bord, USB-kabel, soldeerloze breadboard, een LED, weerstanden (220 ohm en 4.7k ohm), fotoweerstand en breadboard-draden.
Met Tinkercad Circuits kun je virtueel volgen. Je kunt deze les zelfs vanuit Tinkercad bekijken (gratis inloggen vereist)! Verken het voorbeeldcircuit en bouw je eigen circuit ernaast. Tinkercad Circuits is een gratis browsergebaseerd programma waarmee je circuits kunt bouwen en simuleren. Het is perfect voor leren, onderwijzen en prototypen.
Stap 1: Bouw het circuit
Bekijk het afgebeelde breadboard-circuit. Het kan handig zijn om ter vergelijking naar een gratis bedrade versie van dit voorbeeldcircuit te kijken, afgebeeld. In deze stap bouwt u uw eigen versie van dit circuit naast het voorbeeld in het werkvlak.
Om verder te gaan, laadt u een nieuw Tinkercad Circuits-venster en bouwt u uw eigen versie van dit circuit naast het voorbeeld.
Identificeer de fotoresistor, LED, weerstanden en draden die zijn aangesloten op de Arduino in het werkvlak van Tinkercad Circuits.
Sleep een Arduino Uno en breadboard van het componentenpaneel naar het werkvlak, naast het bestaande circuit.
Verbind breadboard-voeding (+) en aarde (-) rails met respectievelijk Arduino 5V en aarde (GND), door te klikken om draden te maken.
Verleng de stroom- en grondrails naar hun respectievelijke bussen aan de tegenoverliggende rand van het breadboard (optioneel voor dit circuit, maar een goede gewoonte).
Steek de LED in twee verschillende rijen breadboard, zodat de kathode (negatieve, kortere poot) wordt aangesloten op een poot van een weerstand (overal van 100-1K ohm is prima). De weerstand kan in beide richtingen gaan omdat weerstanden niet gepolariseerd zijn, in tegenstelling tot LED's, die op een bepaalde manier moeten worden aangesloten om te kunnen functioneren.
Sluit het andere weerstandsbeen aan op aarde.
Sluit de LED-anode (positief, langer been) aan op Arduino pin 9.
Sleep een fotoresistor van het componentenpaneel naar uw breadboard, zodat de poten in twee verschillende rijen kunnen worden gestoken.
Klik om een draad te maken die een fotoresistorpoot met de voeding verbindt.
Sluit het andere been aan op Arduino analoge pin A0.
Sleep een weerstand van het componentenpaneel om de fotoresistorpoot die op A0 is aangesloten te verbinden met aarde, en stel de waarde in op 4,7 k ohm.
Stap 2: Codeer met blokken
Laten we de codeblokkeneditor gebruiken om naar de staat van de fotoweerstand te luisteren en vervolgens een LED instellen op een relatieve helderheid op basis van hoeveel licht de sensor ziet. Misschien wilt u uw geheugen van analoge LED-uitgang opfrissen in de les Fading LED.
Klik op de knop "Code" om de code-editor te openen. De grijze notatieblokken zijn opmerkingen om te noteren wat je van plan bent met je code, maar deze tekst wordt niet uitgevoerd als onderdeel van het programma.
Klik op de categorie Variabelen in de code-editor.
Om de weerstandswaarde van de fotoweerstand op te slaan, maakt u een variabele met de naam "sensorValue".
Sleep een "set" -blok naar buiten. We slaan de staat van onze fotoresistor op in de variabele
sensorWaarde
Klik op de invoercategorie en sleep een "analog read pin" -blok naar buiten en plaats het in het "set" -blok na het woord "to"
Aangezien onze potentiometer is verbonden met de Arduino op pin A0, wijzigt u de vervolgkeuzelijst in A0.
Klik op de categorie Uitvoer en sleep een blok "afdrukken naar seriële monitor".
Navigeer naar de categorie Variabelen en sleep uw variabele sensorValue naar het blok "afdrukken naar seriële monitor", en zorg ervoor dat de vervolgkeuzelijst is ingesteld om met een nieuwe regel af te drukken. Start optioneel de simulatie en open de seriële monitor om te controleren of er meetwaarden binnenkomen en veranderen wanneer u de sensor aanpast. Analoge ingangswaarden variëren van 0-1023.
Omdat we naar de LED willen schrijven met een getal tussen 0 (uit) en 255 (volledige helderheid), zullen we het "map" -blok gebruiken om wat kruisvermenigvuldiging voor ons uit te voeren. Navigeer naar de categorie Wiskunde en sleep een "kaart" -blok naar buiten.
Sleep in de eerste sleuf een sensorValue-variabel blok en stel vervolgens het bereik in van 0 tot 255.
Terug in de categorie Uitvoer, sleept u een analoog "set pin" -blok naar buiten, dat standaard "set pin 3 to 0" zegt. Pas het aan om pin 9 in te stellen.
Sleep het kaartblok dat u eerder hebt gemaakt naar het veld "naar" van het blok "set pin" om het aangepaste nummer met PWM naar de LED-pin te schrijven.
Klik op de categorie Besturing en sleep een wachtblok naar buiten en pas het aan om het programma 0,1 seconden te vertragen.
Stap 3: Fotoresistor Arduino-code uitgelegd
Wanneer de code-editor is geopend, kunt u op het vervolgkeuzemenu aan de linkerkant klikken en "Blocks + Text" selecteren om de Arduino-code weer te geven die door de codeblokken wordt gegenereerd. Volg mee terwijl we de code in meer detail onderzoeken.
int sensorWaarde = 0;
voor de
opstelling()
maken we een variabele om de huidige waarde op te slaan die van de potentiometer wordt gelezen. Het heet
int
omdat het een geheel getal is, of een willekeurig geheel getal.
ongeldige setup()
{ pinMode (A0, INPUT); pinMode(9, UITGANG); Serieel.begin(9600); }
Binnen de setup worden pinnen geconfigureerd met behulp van de
pinMode()
functie. Pin A0 is geconfigureerd als ingang, zodat we kunnen "luisteren" naar de elektrische toestand van de potentiometer. Pin 9 is geconfigureerd als een uitgang om de LED aan te sturen. Om berichten te kunnen versturen opent de Arduino een nieuw serieel communicatiekanaal met
Serieel.begin()
waarvoor een baudrate-argument nodig is (welke snelheid moet worden gecommuniceerd), in dit geval 9600 bits per seconde.
lege lus()
{// lees de waarde van de sensor sensorValue = analogRead (A0); // druk de sensoraflezing af zodat u het bereik weet Serial.println (sensorValue);
Alles na een reeks schuine strepen
//
is een opmerking, die mensen helpt om in gewone taal te begrijpen waar het programma voor bedoeld is, maar het is niet opgenomen in het programma dat uw Arduino uitvoert. In de hoofdlus, een functie genaamd
analoogLees();
controleert de status van pin A0 (die een geheel getal van 0-1023 zal zijn), en slaat die waarde op in de variabele
sensorWaarde
// wijs de sensorwaarde toe aan een bereik voor de LED
analogWrite(9, map(sensorValue, 0, 1023, 0, 255)); vertraging (100); // Wacht 100 milliseconde (s)}
De regel na de volgende opmerking doet veel tegelijk. Onthouden
analoogWrite()
heeft twee argumenten, het pinnummer (9 in ons geval) en de waarde die moet worden geschreven, die tussen 0 en 255 moet liggen. De inline-functie
kaart()
duurt vijf argumenten: het te evalueren aantal (de steeds veranderende sensorvariabele), het verwachte minimum en verwachte maximum, en de gewenste min en max. Dus de
kaart()
functie is in ons geval het evalueren van de binnenkomende sensorValue en het doen van een kruisvermenigvuldiging om de uitvoer te verkleinen van 0-1023 naar 0-255. Het resultaat wordt geretourneerd in het tweede argument van
analoogWrite();
de helderheid instellen van de LED die is aangesloten op pin 9.
Stap 4: Bouw een fysiek Arduino-circuit (optioneel)
Om je fysieke Arduino Uno te programmeren, moet je de gratis software (of plug-in voor de webeditor) installeren en vervolgens openen. Verschillende fotocellen hebben verschillende waarden, dus als uw fysieke circuit niet werkt, moet u mogelijk de bijbehorende weerstand wijzigen. Leer meer over spanningsdelers in de les Instructables Electronics Class over weerstanden.
Sluit het Arduino Uno-circuit aan door componenten en draden aan te sluiten op de verbindingen die hier in Tinkercad Circuits worden getoond. Voor een meer diepgaande uitleg over het werken met je fysieke Arduino Uno-bord, bekijk de gratis Instructables Arduino-klasse.
Kopieer de code uit het Tinkercad Circuits-codevenster en plak deze in een lege schets in uw Arduino-software, of klik op de downloadknop (pijl naar beneden) en open
het resulterende bestand met behulp van Arduino. Je kunt dit voorbeeld ook vinden in de Arduino-software door te navigeren naar Bestand -> Voorbeelden -> 03. Analog -> AnalogInOutSerial.
Sluit uw USB-kabel aan en selecteer uw bord en poort in het menu Tools van de software.
Upload de code en gebruik je hand om de sensor te bedekken tegen het ontvangen van licht, en/of schijn een licht op je sensor!
Open de seriële monitor om uw sensorwaarden te bekijken. Het is waarschijnlijk dat de echte wereldwaarden niet helemaal naar 0 of helemaal naar 1023 zullen gaan, afhankelijk van uw lichtomstandigheden. Voel je vrij om het bereik van 0-1023 aan te passen aan je waargenomen minimum en waargenomen maximum om het maximale helderheidsuitdrukkingsbereik op de LED te krijgen.
Stap 5: Probeer vervolgens …
Nu je hebt geleerd een fotoresistor te lezen en de output ervan in kaart te brengen om de helderheid van een LED te regelen, ben je klaar om die en andere vaardigheden die je tot nu toe hebt geleerd toe te passen.
Kun je de LED verwisselen voor een ander type output, zoals een servomotor, en een code maken om het huidige lichtniveau van de sensor weer te geven als een bepaalde positie langs een meter?
Probeer uw fotoresistor om te wisselen voor andere analoge ingangen, zoals een ultrasone afstandssensor of potentiometer.
Leer meer over het bewaken van de digitale en analoge ingangen van uw Arduino via de computer met behulp van de seriële monitor.
Aanbevolen:
Temperatuur- en lichtsensor: 8 stappen
Temperatuur- en lichtsensor: dit instructable is voor een basistemperatuur- en lichtsensor. Dat is het zo'n beetje
Eenvoudige lichtsensor met een LED (analoog): 3 stappen
Eenvoudige lichtsensor met een LED (analoog): Hallo! In deze instructable laat ik je zien hoe je een eenvoudige lichtsensor met een LED maakt. In principe schakelt dit circuit de LED gewoon in wanneer deze wordt blootgesteld aan licht. Voor mij is dit circuit een beetje nutteloos omdat je hier niet veel mee kunt doen, maar ik denk
Arduino-lichtsensor: 5 stappen
Arduino-lichtsensor: dit is een lichtsensor die Arduino gebruikt om het te maken, het is gemakkelijk en iedereen kan het zelf doen. Het kan u helpen om het licht Luminance waar u ook bent te voelen. Als je het maakt, bereid je eerst de materialen voor en bouw je het circuit op, en schrijf dan t
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Digitale lichtsensor met LM358: 5 stappen
Digitale lichtsensor met LM358: Sensoren maken het werken met elk project leuk en eenvoudig, er bestaan duizenden sensoren en we krijgen de keuze om de juiste sensor te kiezen voor onze projecten of behoeften. Maar niets is beter dan je eigen doe-het-zelfsensoren te ontwerpen om te werken met een brede ra