Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Funduino-Cube programmieren #1: LEDs – Teil 1

Posted on 30. Dezember 202229. April 2023 by Stefan Draeger

In diesem ersten Beitrag möchte ich dir zeigen, wie du die LEDs am Funduino-Cube programmieren kannst.

Funduino-Cube programmieren #1: LEDs
Funduino-Cube programmieren #1: LEDs

Ich habe dir bereits gezeigt wie du LEDs am Arduino programmierst, der Funduino-Cube verfügt über einen Arduino Nano V3 und daher würde dieses nichts Neues werden. Aber dieses Board verfügt über ein paar Aktoren, welche wir nutzen wollen.

Im ersten Teil möchte ich dir zeigen, wie du LEDs mit dem Fotowiderstand (LDR) und dem 3 Achsen Lagesensor steuern kannst.

farbige 8mm LED am Funduino-Cube
farbige 8mm LED am Funduino-Cube
analoger 3 Achsen Lagesensor am Funduino-Cube
analoger 3 Achsen Lagesensor am Funduino-Cube
NeoPixel Bar am Funduino-Cube
NeoPixel Bar am Funduino-Cube
Fotowiderstand (LDR) am Funduino-Cube
Fotowiderstand (LDR) am Funduino-Cube

Ein großer Vorteil des Funduino-Cube ist, dass eine aufwändige und ggf. fehleranfällige Schaltung entfällt, wir können also quasi mit der Programmierung direkt beginnen.

  • Fotowiderstand & LEDs
  • Analoger 3 Achsen Lagesensor & NeoPixel Bar
    • Programmieren

Fotowiderstand & LEDs

Der Fotowiderstand ist am Pin analogen Pin A7 angeschlossen und liefert je nach Helligkeit einen Wert zwischen 0 (für dunkel) und 1023 (für maximale Helligkeit).

Mit diesem Fotowiderstand oder auch LDR genannt können wir nun die drei, farbigen, 8 mm LEDs steuern.

//Fotowiderstand / LDR am analogen Pin A7 angeschlossen
#define ldr A7

//LED rot am digitalen Pin D5 angeschlossen
#define ledRot 5
//LED gelb am digitalen Pin D4 angeschlossen
#define ledGelb 4
//LED gruen am digitalen Pin D3 angeschlossen
#define ledGruen 3

//Array mit den Pins der LEDs
int leds[] = { ledRot, ledGelb, ledGruen };

//Feld zum speichern der zuletzt aktivierten LED
int lastActiveLed = -1;

void setup() {
  //definieren das die Pins der LEDs als Ausgang dienen
  pinMode(ledRot, OUTPUT);
  pinMode(ledGelb, OUTPUT);
  pinMode(ledGruen, OUTPUT);
}

/** 
Zurucksetzen / deaktivieren der LEDs
*/
void reset() {
  digitalWrite(ledRot, LOW);
  digitalWrite(ledGelb, LOW);
  digitalWrite(ledGruen, LOW);
}

void loop() {
  //lesen des aktuellen Wertes des analogen Fotowiderstandes
  int value = analogRead(ldr);
  //mappen des analogen Wertes auf die Anzahl der LEDs
  //ein Array beginnt mit dem Index 0!
  int activeLed = map(value, 0, 1023, 0, 2);
  //Wenn der ermittelte Wert ungleich der zuletzt aktivierten LED ist, dann...
  if (lastActiveLed != activeLed) {
    //ueberschreiben des Wertes
    lastActiveLed = activeLed;
    //deaktivieren aller LEDs
    reset();
    //aktivieren der neuen LED
    digitalWrite(leds[activeLed], HIGH);
  }
}

Wenn wir diesen Code aufspielen, dann können wir mit einer Taschenlampe den Fotowiderstand beleuchten und somit die rote LED zum Leuchten bringen. Wenn wir diesen jedoch abdunkeln, dann leuchtet die grüne LED.

Analoger 3 Achsen Lagesensor & NeoPixel Bar

Den 3 Achsen Lagesensor können wir über die 3 nachfolgenden analogen Pins auslesen.

3 Achsen LagesensorAnschluss am Arduino Nano
XA1
YA2
ZA3

Die 8fach NeoPixel Bar ist am digitalen Pin D8 angeschlossen.

Für den NeoPixel benötigen wir zum Programmieren noch eine Bibliothek, hier verwende ich ich die Adafruit NeoPixel Bibliothek welche du entweder vom GitHub Repository adafruit / Adafruit_NeoPixel als ZIP-Datei herunterladen oder ganz bequem über den Bibliotheksverwalter der Arduino IDE.

Der Weg über den Bibliotheksverwalter der Arduino IDE ist deutlich einfacher, denn dort braucht man nur nach „Adafruit NeoPixel“ suchen und an dem entsprechenden Eintrag die Schaltfläche „INSTALL“ klicken.

Programmieren

Nachfolgend möchte ich dir zeigen, wie du die Lage Y auslesen kannst und je nach Lage der Platine eine LED aktivierst.

#include <Adafruit_NeoPixel.h>

//Der Pin der Y-Achse des 3 Achsen Lagesensors
//ist am analogen Pin A2 angeschlossen
#define yAchse A2

//NeoPixel Bar am digitalen Pin D11 angeschlossen
#define neoPixel 11

//Anzahl der NeoPixel
const int NUM_PIXEL = 8;

Adafruit_NeoPixel bar = Adafruit_NeoPixel(NUM_PIXEL, neoPixel, NEO_GRB + NEO_KHZ800);

//Positionen des Lagesensors, diese können variieren und sollten vorher geprüft werden
const int ZERO_POS = 326;
const int MAX_POS = 400;
const int MIN_POS = 262;

//Wert für die Farbe rot
uint32_t red = bar.Color(255, 0, 0);
//RGB Wert für die Farbe schwarz
uint32_t black = bar.Color(0, 0, 0);

void setup() {
  //beginn der kommunikation mit der RGB NeoPixel Bar
  bar.begin();
  //die Helligkeit setzen 0 dunkel -> 255 ganz hell
  bar.setBrightness(100);
  //anzeigen der Pixelfarben
  bar.show();
}

void loop() {
  // lesen des aktuellen Wertes der Y-Achse
  int yAxisValue = analogRead(yAchse);
  //Feld zum speichern des Wertes für die zu aktivierende LED
  int activeLED = 0;
  //Wenn der Wert kleiner als 326 ist, dann..
  if (yAxisValue < 326) {
    //mappen des Wert von 326 bis zum niedrigsten von 262 auf die ersten 4 LEDs
    activeLED = map(yAxisValue, 326, 262, 4, 0);
  } else {
    //mappen des Wert von 326 bis zu den höchsten von 400 auf die letzten 4 LEDs
    activeLED = map(yAxisValue, 326, 400, 4, 8);
  }

  //Schleife über alle LEDs
  for (int i = 0; i < NUM_PIXEL; i++) {
    //Feld für die Farbe
    uint32_t color;
    //Wenn der aktuelle Zähler gleich der zu aktivierenden LED ist,dann...
    if (i == activeLED) {
      //Farbe rot zuweisen
      color = red;
    } else {
      //ansonsten, Farbe schwarz zuweisen
      color = black;
    }
    //setzen der Farbe an der LED mit dem Index i
    bar.setPixelColor(i, color);
  }
  //anzeigen aller LEDs
  bar.show();
  //kleine Pause von 25 ms.
  delay(125);
}

Wenn wir diesen Code auf den Funduino-Cube bzw. dem verbauten Arduino Nano überspielen, dann können wir mit dem Bewegen der Platine über die y-Achse die LEDs auf der NeoPixel Bar aktivieren bzw. bewegen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}