Huhu grüßt euch,
ich wollt, endlich mal nicht nur schreiben an diesen Forum Teilnehmen, sondern euch einmal ein kleines Projekt von mir vorstellen. Es ist zwar nicht mit einen Raspberry Pi, aber mit einen anderen Microcontroller.
Mit dem Projekt wollte ich ein kleines und schnell gebautes Geschenk für meine Freundin erreichen. Wodurch ich schnell durch einige Technische und Personale Angelegenheiten streichen muss
Idee:
Ich wollte etwas bauen, was ich meiner Freundin schenken kann und dieses Ihr Zeigt das ich sie liebe. Da Frauen recht gut visuell zu begeistern sind, habe ich mich für etwas mit Leds entschieden.
Was bau ich nun?:
Nach langen hin und her habe ich mich für eine schick versteckte Steuerung in einer Holzbox, gepaart mit einer Plexiglasplatte mit etwas gefrästen entschieden. Diese Platte wird von Unten angestrahlt und durch die Übergänge der 2 Materialien Luft und Plexiglas, ist dort das Licht sichtbar.
Arbeitsschritte und derzeitige Stand:
- festlegen der gewünschten Funktionen
- 3d Zeichnung des Gehäuses mit Autocad und Festlegung der Maße
- erstellung der Vektorzeichnung zur Gravur
- planen der Elektrischenschaltung
- zusammentragen aller benötigter Teile und bestellen
- fräsen des Holzgehäuses, Plexiglasscheibe und der Bodenplatte
- aufbauen der Elektronik und verkabeln
- erste Test
- schreiben der Software
- grundieren der Bodenplatte
- Bugsuche
- lackieren der Bodenlatte
- kürzen der Kabel
- lackieren der Bodenplatte
- polieren des Glases
- erweiterung der Software mit zusätzlichen Funktionen und Stromsparfunktionen(und besser Kommentieren)
Probleme:
Das größte Problem war bis jetzt die Fertigung des Gehäuses. Dieses habe ich zusammen mit einen Freund hergestellt. Beim Herstellen gab immer wieder Probleme mit der Fräse, wodurch sich dieser Part auf über 10Wochen erstreckt hat. Auch gab es Verzögerungen durch Lieferprobleme des Arduino mini aus China musste und teilweise Unlust. Die Plexiglasplatte wurde leider auch etwas in Mitleidenschaft gezogen.
Teileliste bis jetzt:
- 3 Potentiometer von Alps
- 3 Potentiometer Kappen
- 1 Vandalismus Taster mit Led grün
- 1 Stück Plexiglas
- 1 Holzblock von Hobbyholz.de
- 1 Hohlbuchse für die Versorgungsspannung
- 1 Eco Netzteil 5V 1A
- 1 Arduino mini Pro 5V aus China
- 1 Widerstand 10k
- 1 Widerstand 330Ohm
- 2x 12 Polige Stiftleisten weiblich
- 1 Elko 680myf
- 1 Elko 220myF
- 1 Programmieradapter
- einige Kabel
- 6 2fach Klemmenleisten
- RGB Stripe mit 8 Leds
- Schrumpfschläuche
Anmerkungen:
- Die CAD Pläne kann ich leider nicht nachreichen, da sie bei einer neu Installation von meinen Computer verschwunden sind(das Falsche gesichert :s)
- bessere Bilder werde ich wahrscheinlich heute Abend veröffentlichen(vllt auch ein Video, wenn ich mit der Bug suche durch sein sollte
- Quellcode und Verkabelung wird nachgereicht wenn dieser Fertig und ohne Fehler ist
Quellcode:
// #define FORCE_SOFTWARE_SPI
// #define FORCE_SOFTWARE_PINS
#include "FastLED.h"
#include <stdio.h>
#include <stdlib.h>
///////////////////////////////////////////////////////////////////////////////////////////
//
// Move a white dot along the strip of leds. This program simply shows how to configure the leds,
// and then how to turn a single pixel white and then off, moving down the line of pixels.
//
// How many leds are in the strip?
#define NUM_LEDS 8
// Data pin that led data will be written out over
#define DATA_PIN 8
#define BUTTON_LED_PIN 6
#define BUTTON_PIN 2 //for Interrupt 0
struct led_d
{
int pin[3];
int old_color;
int new_color;
};
struct led_d potti_red = { A1, 0, 0 };
struct led_d potti_green = { A2, 0, 0 };
struct led_d potti_blue = { A3, 0, 0 };
int menu = 0;
int led_num = 0, whiteLed=0;
int leds_save; bool direktion = true; bool switch_color = false;
// This is an array of leds. One item for each led in your strip.
CRGB leds[NUM_LEDS];
// This function sets up the ledsand tells the controller about them
void setup() {
// sanity check delay - allows reprogramming if accidently blowing power w/leds
delay(100);
// Uncomment one of the following lines for your leds arrangement.
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
// Input Button Led
pinMode(BUTTON_LED_PIN, OUTPUT);
digitalWrite(BUTTON_LED_PIN, LOW);
//input Button key
attachInterrupt(0, change_state, FALLING);
//Input 3 Pottis
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
}
void SetAllLedsOneCollor(int green, int red, int blue, int delayx) {
for (int i = 0; i < NUM_LEDS; i = i + 1) {
leds[i] = CRGB( green, red, blue);
FastLED.show();
delay(delayx);
}
}
void SetOnLedOneCollor(int green, int red, int blue, int led, int delayx) {
leds[led] = CRGB( green, red, blue);
FastLED.show();
delay(delayx);
leds[led] = CRGB( 0, 0, 0);
FastLED.show();
}
void clearLeds(int delayx) {
for (int i = 0; i < NUM_LEDS; i = i + 1) {
leds[i] = CRGB( 0, 0, 0);
FastLED.show();
delay(delayx);
}
}
void change_state()
{
menu += 1 ;
if (menu == 5) {
menu = 0;
digitalWrite(BUTTON_LED_PIN, LOW);
}
}
void loop() {
if ((menu == 0) || ( menu == 1)) {
led_num ++;
}
if(led_num == NUM_LEDS){
led_num = 0;
direktion=!direktion;
}
if ((menu == 0) || ( menu == 1) || (menu == 3)) {
potti_red.new_color = analogRead(A1) / 4;
potti_green.new_color = analogRead(A2) / 4;
potti_blue.new_color = analogRead(A3) / 4;
if ((potti_red.old_color != potti_red.new_color) ||
(potti_green.old_color != potti_green.new_color) ||
(potti_blue.old_color != potti_blue.new_color) )
{
switch_color = true;
potti_red.old_color = potti_red.new_color;
potti_green.old_color = potti_green.new_color;
potti_blue.old_color = potti_blue.new_color;
}
}
switch (menu) {
case 0:
SetOnLedOneCollor(potti_green.old_color, potti_red.old_color, potti_blue.old_color, led_num, 200);
break;
case 1:
if (direktion) {
leds_save = led_num;
} else {
leds_save = NUM_LEDS - led_num - 1; //Rückwärts
}
SetOnLedOneCollor(potti_green.old_color, potti_red.old_color, potti_blue.old_color, leds_save, 200);
break;
case 2:
static uint8_t hue = 0;
FastLED.showColor(CHSV(hue++, 255, 255));
delay(50);
break;
case 3:
if (switch_color)
{
SetAllLedsOneCollor(potti_green.old_color, potti_red.old_color, potti_blue.old_color, 0);
switch_color = false;
}
delay(100); //Energie saving, sleep for atmel
break;
case 4:
digitalWrite(BUTTON_LED_PIN, HIGH);
clearLeds(0);
delay(100); //Energie saving, sleep for atmel
break;
}
}
Alles anzeigen
Stromverbrauch:
Idle Mode 5: ca. 25mA
Max: 250mA
Edit:
Hier sind weitere Bilder und 2 aktuelle Videos. Außerdem wurden noch weitere Informationen hinzugefügt