Świecące pudełko

Moderator: frogmaker

pi
Moderator
Moderator
Posty: 18
Rejestracja: 09 sty 2018, 9:44

Świecące pudełko

Post autor: pi »

#include <Adafruit_NeoPixel.h> //Dołączenie biblioteki

//Konfiguracja linijki
Adafruit_NeoPixel linijka = Adafruit_NeoPixel( 8, A0, NEO_GRB + NEO_KHZ800);


const int period=50; // A little delay to avoid errors.
int err = 0;
int x = 0;
int y = 0;
int z = 0;
int mx = 4;
int my = 4;
int mz = 4;



void setup() {
linijka.begin(); //Inicjalizacja
linijka.show();

pinMode(2, INPUT_PULLUP); //Przycisk 1 jako wejście
pinMode(3, INPUT_PULLUP); //Przycisk 2 jako wejście
pinMode(4, INPUT_PULLUP); //Przycisk 3 jako wejście
pinMode(5, INPUT_PULLUP); //Przycisk 4 jako wejście
Serial.begin(9600); // Initializing Serail communication.



}

void loop() {
if (digitalRead(4) == HIGH) {

if (digitalRead(3) == LOW) {
err = err + 1;
x = x + mx*60;
if (x > mx*60) x = 0;

delay (300);
}
if (digitalRead(2) == LOW) {
err = err + 1;
y = y + my*60;
if (y > my*60) y = 0;

delay (300);
}
if (digitalRead(5) == LOW) {
err = err + 1;
z = z + mz*60;
if (z > mz*60) z = 0;

delay (300);
}
}

if (digitalRead(4) == LOW) {
err = 0;
x = 0;
y = 0;
z = 0;

if (digitalRead(3) == LOW) {
mx = mx + 1;
if (mx > 4) mx = 1;
Serial.println(mx);
delay (300);

}
if (digitalRead(2) == LOW) {
my = my + 1;
if (my > 4) my = 1;
Serial.println(my);
delay (300);
}
if (digitalRead(5) == LOW) {
mz = mz + 1;
if (mz > 4) mz = 1;
Serial.println(mz);
delay (300);
}

}

if (digitalRead(5) == LOW) {
if (digitalRead(4) == LOW) {
if (digitalRead(3) == LOW) {
if (digitalRead(2) == LOW) {
err = 0;
x = 0;
y = 0;
z = 0;
mx = 4;
my = 4;
mz = 4;
}
}
}

}

if (err > 0) {

linijka.setPixelColor(0, linijka.Color(x, y, z)); //Dioda nr 1 świeci
linijka.show();
}
else {
linijka.setPixelColor(0, linijka.Color(0, 0, 0)); //Dioda nr 1 świeci
linijka.show();

}
}
pi
Moderator
Moderator
Posty: 18
Rejestracja: 09 sty 2018, 9:44

Re: Świecące pudełko

Post autor: pi »

openSCAD:

$fn=100; //TO warto dodać na poczatku zawsze im większa liczba tym więcej wierzchołków w figurach więc są bardziej wygładzone, ale dłuzej renderuje
// stałe
a = 76; //szerokość
b = 68; //długość
c = 35; //wysokość
d = 26; //wysokość denka


difference(){
cube([a,b,c]);
translate([0,0,d])
cube([a,2,c-d]);
translate([0,0,d])
cube([2,b,c-d]);
translate([a-2,0,d])
cube([2,b,c-d]);
translate([0,b-2,d])
cube([a,2,c-d]);
translate([2,2,c-4])
cube([a-2,b-2,4]);
translate([3,3,2])
cube([a-6,b-6,c-4]);
translate([28,49,0])
cube([9,7,2]);
translate([38,49,0])
cube([4,7,2]);
translate([48,53,0])
cylinder(d=3,h=2);
translate([a-3,b-19,4])
cube([3,8,5]);
translate([20,3,26+2.5])
rotate([90,0,0])
cylinder(d=2,h=1);
translate([a-20,3,26+2.5])
rotate([90,0,0])
cylinder(d=2,h=1);
translate([20,b-2,26+2.5])
rotate([90,0,0])
cylinder(d=2,h=1);
translate([a-20,b-2,26+2.5])
rotate([90,0,0])
cylinder(d=2,h=1);
translate([3,3,0])
cube([a-6,40,2]);
translate([3,3,0])
cube([18.5-3,b-6,2]);
translate([28+4,44,0.5])
cube([a-6-32,b-6-44,1.5]);
translate([0,0,0])//wycinka zew. brzegow
cube([a,1,d]);
translate([0,0,0])
cube([1,b,d]);
translate([0,b-1,0])
cube([a,1,d]);
translate([a-1,0,0])
cube([1,b,d]);
}

//przestrzeń NANO
difference(){
translate([28,41,2])
cube([a-28-3,b-41-3,13-2]);
translate([29.5,41+3,2])
cube([43.5,b-41-3-6,15]);
translate([28,41+3+3,2])
cube([3,10,15]);
translate([28,41,2])
cube([a-28-3,2,11]);
translate([28+7,43,2])
cube([30,22,11]);
}

//
difference(){
translate([1,1,-1])
cube([a-2,b-2,1]);
translate([38,49,-1])
cube([4,7,2]);
translate([48,53,-1])
cylinder(d=3,h=2);
}

//łączniki
difference(){
translate([1,-3,-1])
cube([a-2,4,1]);
translate([2,-3,-1])
cube([a-4,4,1]);
}
//pokrywka
difference(){
translate([0,-b-2,-1])
cube([a,b,c-d]);
translate([21.5,-b-2+20,-1])
cylinder(d=36.5,h=1);
translate([3,-2-3-21,-1])
cube([a-6,21,1]);
translate([3,-b-2+3,-1+3])
cube([a-6,b-6,c-d-3]);
translate([2,-b-2+2,-1+4])
cube([a-4,b-4,c-d-4]);
translate([30,-2-22,-1+1])
cube([16,3,2]);
translate([21.5-2.5,-b-2+20-2.5,0])
cube([5,5,2]);
translate([0,-b-2,-1])
cube([a,1,c-d]);
translate([0,-b-2,-1])
cube([1,b,c-d]);
translate([0,-3,-1])
cube([a,1,c-d]);
translate([a-1,-b-2,-1])
cube([1,b,c-d]);
translate([3,-42,1])
cube([a-6,37,1]);
translate([3,-b-2+3,1])
cube([12,25,1]);
translate([3+12,-b-2+3,1])
cube([a-3-12-3,9,1]);
translate([3+25,-b-2+3+9,1])
cube([a-3-25-3,16,1]);
}
//zatrzaski na pokrywce
translate([a-20,-2-2,8-2.5])
rotate([90,0,0])
cylinder(d=2,h=1);
translate([20,-2-2,8-2.5])
rotate([90,0,0])
cylinder(d=2,h=1);

translate([a-20,-2-b+2,8-2.5])
rotate([-90,0,0])
cylinder(d=2,h=1);
translate([20,-2-b+2,8-2.5])
rotate([-90,0,0])
cylinder(d=2,h=1);

//pilar pod diodą
//difference(){
//translate([18.5,b-23.5,0])
//cube([6,7,c-4-3]);//c-4 daje 1mm pionowej przestrzeni na diodę
//translate([18.5,b-22.5,2])
// cube([6,5,25]);
//translate([19.5,b-23.5,2])
//cube([4,7,25]);
//translate([19.5,b-22.5,27])
//cube([4,5,1]);
//}

//pilary NANO
translate([28+1,41+3,0])
cube([2,2,7]);
translate([28+1+42,41+3,0])
cube([2,2,7]);
translate([28+1,41+3+16,0])
cube([2,2,7]);
translate([28+1+42,41+3+16,0])
cube([2,2,7]);

//zabezpieczenie na diodę
translate([21.5-4.5-2,-b-2+18,2])
cube([2,4,5]);
translate([21.5+4.5,-b-2+18,2])
cube([2,4,5]);

difference(){
translate([21.5-2,-b-2+20+5.5,2])
cube([4,2,5]);
translate([21.5-1,-b-2+20+5.5,2])
cube([2,2,3]);
}

//
difference(){
translate([21.5-2,-b-2+20-5.5-2,2])
cube([4,2,5]);
translate([21.5-1,-b-2+20-5.5-2,2])
cube([2,2,3]);
}

//
ODPOWIEDZ