Dziś zaczniemy od projektu halloween'owego z arduino, drukiem 3D i lampkami LED. Będziemy potrzebować podstawowego zestawu edukacyjnego lub MEGA, kilku kabli, diód LED w różnych kolorach, drukarki 3D i lutownicy. Zaczniemy od drukowania dyń i domku pliki STL dostępne na końcu artykułu.
Teraz musimy nadać naszym dyniom trochę życia. Otwieramy code-designer, wybieramy Education-Board i wchodzimy w zakładkę kod źródłowy. Teraz napiszemy program który sprawi, że nasza dioda będzie wyglądała jak paląca się świeczka, którą możemy zapalić i zgasić przy pomocy przycisku. Tak powinien wyglądać nasz program:
bool dynia = false; // Zmienna "dynia" przechowuje stan lamki LED - false oznacza wyłączoną, a true włączoną.
// Funkcja zmienia jasność lamki LED w losowy sposób.
void swiatlo_dynia() {
analogWrite(7, random(50, 255)); // Ustaw jasność LED w zakresie od 50 do 255.
delay(random(50, 250)); // Poczekaj losowy czas od 50 do 250 milisekund.
}
void setup() {
pinMode(2, INPUT); // Konfiguruje pin 2 jako wejście (do odczytu stanu przycisku).
pinMode(7, OUTPUT); // Konfiguruje pin 7 jako wyjście (do sterowania lampką LED).
}
void loop() {
if (digitalRead(2) == 0) {
// Jeśli przycisk jest wciśnięty (stan niski), przełącz stan lampki LED (włącz/wyłącz).
if (dynia) {
dynia = false; // Jeśli była włączona, wyłącz lamkę LED.
digitalWrite(7, LOW);
} else {
dynia = true; // Jeśli była wyłączona, włącz lamkę LED.
digitalWrite(7, HIGH);
}
delay(400); // Opóźnienie, aby uniknąć przypadkowego przełączania.
}
if (dynia)
swiatlo_dynia(); // Jeśli lamka LED jest włączona, uruchom funkcję "swiatlo_dynia".
}
Teraz lutujemy nasze diody z odpowiednimi rezystorami, podłączamy kabelki i wkładamy nasze diody do dyń i do domku. Aby włożyć światełka do domku najlepiej przykleić na gorący klej kawałek filamentu z drukarki 3d tak aby światełka były dalej od okien, dzięki temu nasze światło będzie widoczne w każdym okienku.
Tak podłączone LEDy podłączamy do naszej płytki (Kabelki odchodzące od rezystorów idą do uziemienia czyli pinu GND, a kabelki odchodzące od dłuższej nóżki LEDów podłączamy do pinów D7 - dynia D8 - domek).
Powyżej podłączeni dyni - GND + D7.
Powyżej podłączenie domku - GND + D8 (zamiast VCC)
Po podłączeniu nasza dynia powinna sprawiać wrażenie jakby w środku była świeczka po kliknięciu przycisku D2.
Mamy program sterujący światłami dyni, teraz musimy oświetlić jeszcze nasz dom strachów. Modyfikujemy nasz program tak aby przycisk D3 włączał i wyłączał światło w naszym domku. Program powinien wyglądać tak:
bool dynia = false; // Zmienna "dynia" przechowuje stan lamki LED - false oznacza wyłączoną, a true włączoną.
bool domek = false; // Zmienna "domek" przechowuje stan oświetlenia domku - false oznacza wyłączone, a true włączone.
// Funkcja zmienia jasność lamki LED w losowy sposób.
void swiatlo_dynia() {
analogWrite(7, random(50, 255)); // Ustaw jasność LED w zakresie od 50 do 255.
delay(random(50, 250)); // Poczekaj losowy czas od 50 do 250 milisekund.
}
void setup() {
pinMode(3, INPUT); // Konfiguruje pin 3 jako wejście (do odczytu stanu przycisku "dynia").
pinMode(2, INPUT); // Konfiguruje pin 2 jako wejście (do odczytu stanu przycisku "domek").
pinMode(7, OUTPUT); // Konfiguruje pin 7 jako wyjście (do sterowania lampką LED).
pinMode(8, OUTPUT); // Konfiguruje pin 8 jako wyjście (do sterowania oświetleniem domku).
}
void loop() {
if (digitalRead(2) == 0) {
// Jeśli przycisk "dynia" jest wciśnięty (stan niski), przełącz stan lampki LED (włącz/wyłącz).
if (dynia) {
dynia = false; // Jeśli była włączona, wyłącz lamkę LED.
digitalWrite(7, LOW);
} else {
dynia = true; // Jeśli była wyłączona, włącz lamkę LED.
digitalWrite(7, HIGH);
}
delay(400); // Opóźnienie, aby uniknąć przypadkowego przełączania.
}
if (digitalRead(3) == 0) {// Jeśli przycisk "domek" jest wciśnięty (stan niski), przełącz stan oświetlenia domku (włącz/wyłącz).
if (domek) {
domek = false; // Jeśli było włączone, wyłącz oświetlenie domku.
digitalWrite(8, LOW);
} else {
domek = true; // Jeśli było wyłączone, włącz oświetlenie domku.
digitalWrite(8, HIGH);
}
delay(400); // Opóźnienie, aby uniknąć przypadkowego przełączania.
}
if (dynia) {
swiatlo_dynia(); // Jeśli lamka LED jest włączona, uruchom funkcję "swiatlo_dynia".
}
}
Teraz wystarczy przygotować nasze dekoracje do sesji zdjęciowej i gotowe.
Linki do dyni i domku:
https://www.thingiverse.com/thing:6238747
https://www.thingiverse.com/thing:6241966