Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Dimmen von Lichtern mit PWM über Drucktasten

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
Breadboard (generisch)
× 1
Jumper (generisch)
Die von Ihnen verwendete Menge kann unterschiedlich sein, hängt von der verwendeten Methode ab.
× 11
LED (generisch)
Alle Farben wären ausreichend, aber ich empfehle 3 verschiedene Farben.
× 3
SparkFun Drucktastenschalter 12 mm
× 1
Widerstand 330 Ohm
× 4

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Dieses Projekt zeigt Ihnen, wie Sie LEDs (Leuchtdioden) mit Arduino ausblenden. Es ist in 3 Abschnitte unterteilt:

  • Lichter ausblenden
  • Fade-Lichter mit Druckknopf
  • Fade Lights mit Taste (Verbesserung der Verzögerung)

Fade-Lichter:

Am Ende dieses Abschnitts sollte Ihr Projekt so aussehen.

Wie Sie sehen, leuchten die Lichter heller, dann wird es allmählich wieder dunkler in der Reihenfolge einer Ampel. Jetzt können wir beginnen.

Der Schaltplan:

Wie Sie sehen, sind die LEDs mit den Pins 3, 6 und 9 verbunden. Sie können die LEDs an einen beliebigen Pin anschließen, aber Sie müssen daran denken, ihn anschließend im Code zu ändern.

Der Code:

Fügen Sie dies zunächst zu Ihrem Code hinzu. Es zeigt an, welche Komponenten, in diesem Fall, welche LEDs in welche Pins gehen.

int ledRed =9;int ledYellow =6;int ledGreen =3; 

Jetzt im void setup() Funktion, geben Sie an, ob die Pins Input oder Output sind.

void setup () { pinMode (ledRed, OUTPUT); pinMode (ledGelb, AUSGANG); pinMode(ledGreen, OUTPUT);} 

Fügen Sie schließlich Folgendes zur void loop() hinzu Funktion. Es sagt der MCU, was zu tun ist.

void loop() { // Dies lässt nur das rote Licht verblassen - ledRed //ledRed for (int i=0; i<=255; i++) { analogWrite(ledRed, i); Verzögerung (30); } for (int i=255; i>=0; i--) {analogWrite (ledRed, i); Verzögerung (30); }} 

Was hier passiert, ist, dass die MCU überprüft, ob die ganze Zahl 'i' . ist kleiner als 255 ist oder nicht. Wenn ja, der Wert von 'i' wird um eins erhöht. Der Prozess wird um 30 Millisekunden verzögert und dann neu gestartet. Sobald der Wert von 'i' gleich oder größer als 255 ist, wird es bei jeder Überprüfung um eins subtrahiert. Wenn der Wert 0 erreicht hat, wird der Vorgang noch einmal durchgeführt.

Wenn Sie jedoch die Zeit zum Ausblenden ändern möchten, müssen Sie alle delay() . ändern Funktionen in der gewünschten Menge. Das ist nicht sehr effizient. Um die Dinge einfacher und schneller zu machen, wenn Sie die delay() ändern möchten füge dies am Anfang deines Codes hinzu.

const int fade =30; 

Er setzt einen Standardwert, in diesem Fall ist es eine Standardzeit. Ändere jetzt jede delay() Wert in (einblenden) . Sie können es anders benennen, wenn Sie möchten. Als Ergebnis Ihr delay() Funktionen sollten so aussehen.

Verzögerung (Fade); 

Und der Code sollte so aussehen:

int ledRed =9;int ledYellow =6;int ledGreen =3;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode (ledGelb, AUSGANG); pinMode (ledGreen, OUTPUT);}void loop () {//ledRed for (int i =0; i <=255; i++) { analogWrite (ledRed, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledRed, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledGreen für (int i =0; i <=255; i++) {analogWrite (ledGreen, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledGreen, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); }} 

Fade-Lichter mit Druckknopf:

Nach diesem Abschnitt können Sie Ihrem Projekt eine Schaltfläche hinzufügen.

Wie Sie sehen, ändern sich die LEDs erst, wenn ich die Taste drücke. Jetzt können wir loslegen.

Der Schaltplan:

Sie haben vielleicht bemerkt, dass alle LEDs an derselben Stelle gehalten werden, aber es gibt einen zusätzlichen Druckknopf.

Der Code:

Zuerst müssen wir der MCU mitteilen, mit welchem ​​Pin die Taste verbunden ist. Fügen Sie dies dazu am Anfang Ihres Codes hinzu.

int-Schaltfläche =7;  

Jetzt im void setup() Funktion, fügen Sie dies hinzu, um der MCU mitzuteilen, ob die Schaltfläche Eingang oder Ausgang ist.

pinMode(Taste, INPUT); 

Fügen Sie dies auch der Funktion hinzu.

 digitalWrite(ledRed, LOW); digitalWrite (ledYellow, LOW); digitalWrite(ledGreen, HIGH); 

Es setzt ein Startlicht. Diesmal ist die Start-LED grün, aber Sie können sie auf Rot oder Gelb ändern, wenn Sie möchten.

Jetzt gibt es eine große Änderung in der void loop() Funktion. Alles, was in der Schleife() war wurde jetzt durch eine Funktion namensfadeLights() ersetzt (Der Name kann anders lauten, wenn Sie möchten). In der Schleife() es sollte jetzt sein:

void loop () { if (digitalRead (button) ==HIGH) { delay (15); // Software-Entprellung if (digitalRead (button) ==HIGH) { // Wenn die Taste gedrückt wird, wird die Funktion fadeLights (); // FadeLights heißt } } else { DigitalWrite (ledRed, LOW); // Wenn die Taste nicht gedrückt wird, ist die grüne LED digitalWrite (ledYellow, LOW); // wird eingeschaltet und die anderen nicht. digitalWrite (ledGrün, HOCH); }} 

Wie bereits erwähnt, ist das void fadeLights() Funktion wird das haben, was in der Schleife war.

void fadeLights () { for (int i =255; i>=0; i--) {// beginnt auf grün, muss also grün verblassen analogWrite (ledGreen, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledRed für (int i =0; i <=255; i++) {analogWrite (ledRed, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledRed, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledGreen für (int i =0; i <=255; i++) {analogWrite (ledGreen, i); verzögern (ausblenden); } } 

Wenn Ihr Projekt wie im Video funktioniert, haben Sie es richtig gemacht. Wenn die Reihenfolge nicht stimmt, überprüfen Sie:

  • wenn Ihr Code richtig geschrieben wurde
  • wenn Sie die LEDs mit den richtigen Pins verbunden haben

Und wenn sich Ihre Lichter nicht einschalten, überprüfen Sie

  • wenn Sie die LEDs mit den richtigen Pins verbunden haben
  • wenn Sie die Drähte richtig angeschlossen haben
  • wenn du die Formel richtig geschrieben hast

Fade Lights mit Taste (Verbesserung der Verzögerung):

Wie Sie vielleicht bemerkt haben, werden die Lichter immer schwächer, wenn ich den Knopf loslasse. Nach diesem Abschnitt können Sie Ihren Code so bearbeiten, dass die LEDs nur verblassen, wenn die Taste gedrückt wird.

Wie Sie hier sehen können, gehen die LEDs wieder in die Standardreihenfolge zurück, wenn ich die Taste loslasse:

Rot - AUS

Gelb - AUS

Grün - EIN

Der Schaltplan:

Der Schaltplan bleibt gleich, da wir keine weiteren Komponenten hinzufügen oder etwas anderes machen möchten - wir möchten immer noch, dass die LEDs verblassen.

Der Code:

Wir fügen keine Dinge mehr hinzu, also müssen Sie nichts zum Start hinzufügen. Da wir jedoch die Verzögerung ändern, müssen wir diese löschen.

const int fade =10; // das brauche ich nicht mehr 

Es gibt nichts zu ändern für das setup() Funktion. In der void-Schleife() , wir müssen ein else hinzufügen Aussage.

void loop () { if (digitalRead (button) ==HIGH) { delay (15); if (digitalRead (Taste) ==HIGH) {fadeLights (); } } else {// füge es hier hinzu digitalWrite (ledRed, LOW); digitalWrite (ledYellow, LOW); digitalWrite (ledGrün, HOCH); }}  

Das heißt, wenn die Taste nicht gedrückt wird, beendet das Programm fadeLights() und geht zum anderen -Anweisung, die die Standard-LED-Reihenfolge hat. Anders als früher - früher wurde der Button nicht einmal überprüft fadeLights() wurde angerufen.

Ändern Sie jetzt alle delay() Funktionen dazu:

for(int y =0; y <1000; y++){// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } 

In jeder Schleife überprüft der Mikroprozessor die Taste. Wenn es freigegeben wird, die Rückgabe Befehl wird aufgerufen, um fadeLights() zu stoppen . Nach meiner Schätzung dauert es wahrscheinlich ungefähr 10 Mikrosekunden, wenn jede for-Schleife ausgeführt wird, was bedeutet, dass wir es viele Male tun müssen, um die gewünschte Geschwindigkeit zu erreichen.

Ich hoffe, Ihnen hat dieses Tutorial gefallen und viel Glück bei Ihrem Projekt.

Code

  • Lichter ausblenden
  • Fade-Lichter mit Druckknopf
  • Fade Lights mit Push Button (Verbesserung der Verzögerung)
Fade-LichterArduino
int ledRed =9;int ledYellow =6;int ledGreen =3;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode (ledGelb, AUSGANG); pinMode (ledGreen, OUTPUT);}void loop () {//ledRed for (int i =0; i <=255; i++) { analogWrite (ledRed, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledRed, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledGreen für (int i =0; i <=255; i++) {analogWrite (ledGreen, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledGreen, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); }}
Fade-Lichter mit DruckknopfArduino
int ledRed =9;int ledYellow =6;int ledGreen =3;int button =7;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode (ledGelb, AUSGANG); pinMode (ledGrün, AUSGANG); pinMode (Taste, EINGANG); digitalWrite (ledRot, NIEDRIG); digitalWrite (ledYellow, LOW); digitalWrite (ledGreen, HIGH);}void loop () { if (digitalRead (button) ==HIGH) { delay (15); if (digitalRead (Taste) ==HIGH) {fadeLights (); } } Else { DigitalWrite (ledRed, LOW); digitalWrite (ledYellow, LOW); digitalWrite (ledGrün, HOCH); }}void fadeLights () { for (int i =255; i>=0; i--) { analogWrite (ledGreen, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledRed für (int i =0; i <=255; i++) {analogWrite (ledRed, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledRed, i); verzögern (ausblenden); } //ledYellow für (int i =0; i <=255; i++) {analogWrite (ledYellow, i); verzögern (ausblenden); } for (int i =255; i>=0; i--) {analogWrite (ledYellow, i); verzögern (ausblenden); } //ledGreen für (int i =0; i <=255; i++) {analogWrite (ledGreen, i); verzögern (ausblenden); }}
Fade Lights mit Push Button (Verbesserung der Verzögerung)Arduino
int ledRed =9;int ledYellow =6;int ledGreen =3;int button =7;const int fade =10;void setup() { pinMode(ledRed, OUTPUT); pinMode (ledGelb, AUSGANG); pinMode (ledGrün, AUSGANG); pinMode (Taste, EINGANG); digitalWrite (ledRot, NIEDRIG); digitalWrite (ledYellow, LOW); digitalWrite (ledGreen, HIGH);}void loop () { if (digitalRead (button) ==HIGH) { delay (15); if (digitalRead (Taste) ==HIGH) {fadeLights (); } } Else { DigitalWrite (ledRed, LOW); digitalWrite (ledYellow, LOW); digitalWrite (ledGrün, HOCH); }} Void fadeLights () { for (int i =255; i> =0; i--) { analogWrite (ledGreen, i); for(int y =0; y <1000; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } //ledYellow for (int i=0; i<=255; i++) {analogWrite (ledYellow, i); for(int y =0; y <400; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } for (int i=255; i>=0; i--) {analogWrite (ledYellow, i); for(int y =0; y <400; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } //ledRed for (int i=0; i<=255; i++) {analogWrite (ledRed, i); for(int y =0; y <1000; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } for (int i=255; i>=0; i--) {analogWrite (ledRed, i); for(int y =0; y <1000; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } //ledYellow for (int i=0; i<=255; i++) {analogWrite (ledYellow, i); for(int y =0; y <400; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } for (int i=255; i>=0; i--) {analogWrite (ledYellow, i); for(int y =0; y <400; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } } //ledGreen for (int i=0; i<=255; i++) {analogWrite (ledGreen, i); for(int y =0; y <1000; y++) {// wenn Taste losgelassen wird if (digitalRead(button) ==LOW) { Return; } } }}

Schaltpläne


Herstellungsprozess

  1. Arduino-Gyroskop-Spiel mit MPU-6050
  2. Anwesenheitssystem mit Arduino und RFID mit Python
  3. DHT11-Sensor mit LEDs und einem Piezo-Lautsprecher
  4. ULTRASCHALLLEVITATION-Maschine mit ARDUINO
  5. Unopad - Arduino MIDI-Controller mit Ableton
  6. Automatisches Pflanzenbewässerungssystem mit Arduino
  7. Einfacher Hindernissensor mit Arduino
  8. Finde mich
  9. So misst man die Masse der Erde mit Arduino
  10. 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno