Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [ hier ] und treten Sie heute bei!
Lichtempfindliches Array
Dieses Programm wandelt die Messwerte eines lichtabhängigen Widerstands in eine entsprechende Anzahl beleuchteter LED-Lichter um und schafft so einen einfachen Indikator für die Helligkeit des Lichts.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Elite Explorer Kit |
300+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
|---|---|
- |
|
Verdrahtung
Schaltplan
Code
Bemerkung
Sie können die Datei
04_light_sensitive_array.inodirekt unter dem Pfadelite-explorer-kit-main\fun_project\04_light_sensitive_arrayöffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
1/*
2 The code reads the ambient light level through a photoresistor and lights up
3 a certain number of LEDs based on the light level. The LEDs serve as a "light level bar."
4
5 Board: Arduino Uno R4
6 Component: Photoresistor and LED
7*/
8
9// Constants for the number of LEDs and their pins
10const int NbrLEDs = 8;
11const int ledPins[] = { 5, 6, 7, 8, 9, 10, 11, 12 };
12
13// Pin for the photoresistor
14const int photocellPin = A0;
15
16// Variables to store sensor and LED level values
17int sensorValue = 0; // value read from the sensor
18int ledLevel = 0; // sensor value converted into LED 'bars'
19
20void setup() {
21 // Initialize all LED pins as outputs
22 for (int led = 0; led < NbrLEDs; led++) {
23 pinMode(ledPins[led], OUTPUT);
24 }
25}
26
27void loop() {
28 sensorValue = analogRead(photocellPin); // Read the ambient light level from the photoresistor
29 ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); // Map the sensor value to the number of LEDs to be lit
30
31 // Update the state of each LED based on the mapped value
32 for (int led = 0; led < NbrLEDs; led++) {
33 if (led < ledLevel) {
34 digitalWrite(ledPins[led], HIGH); // Turn ON LEDs that are below the level
35 } else {
36 digitalWrite(ledPins[led], LOW); // Turn OFF LEDs that are above the level
37 }
38 }
39}
Wie funktioniert das?
Hier ist eine schrittweise Erklärung des Codes:
Konstanten- und Variablendefinitionen:
NbrLEDs: Definiert die Anwesenheit von 8 LEDs.ledPins[]: LEDs sind an die Arduino-Pins 5 bis 12 angeschlossen.photocellPin: Der Fotowiderstand ist an den A0-Pin des Arduino angeschlossen.sensorValue: Diese Variable speichert den vom Fotowiderstand gelesenen Wert.ledLevel: Diese Variable speichert die Anzahl der LEDs basierend auf der Umwandlung des sensorValue.setup():Konfiguriert die Pins 5 bis 12 als Ausgang, um die LEDs anzusteuern.
loop():Liest den analogen Wert des Fotowiderstands vom Pin A0, typischerweise im Bereich von 0 bis 1023. Verwendet die Funktion map, um den Wert des Fotowiderstands von 300-1023 auf den Bereich 0-8 abzubilden. Das bedeutet, dass, wenn die Messung des lichtabhängigen Widerstands 300 beträgt, keine LEDs leuchten werden; wenn die Messung 1023 oder höher ist, werden alle 8 LEDs leuchten.
Die nachfolgende for-Schleife überprüft jede LED. Wenn ihr Index kleiner als ledLevel ist, wird die LED eingeschaltet; andernfalls wird sie ausgeschaltet.