Office kub Hour Glass (3 / 4 steg)

Steg 3: programvara

Programmet är skrivet i bearbetning och laddas ner via Arduino IDE. Koden innehåller en loop som tar timmar att slutföra, väl 10 att sätta skärmen tillbaka till ursprungsläget. Men förhoppningsvis, du kommer att lämna "Kontoret" efter den andra fyra timmars loop och power gadget. När förmåga på återställs servo till utgångsläget. Inuti denna viktigaste loop, som är inställd att köra för evigt, finns två fyra timmars loopar och två en timme slingor.

Koden uppdelning: faktiska koden i kursiv stil, kommentarer i fet. Här är en länk till koden så du behöver inte klippa och klistra in om du vill använda den.

https://github.com/robboz4/Hour-Glass/Tree/July-Entry

Om du bestämmer dig att använda koderna bifoga alla uttalanden om användningen av Adafruit bibliotek.

#include < SoftwareSerial.h >
#include < Servo.h >
#include < Wire.h >

Basen innehåller för debug uttalanden till den seriella porten, den Servo och I2C biblioteket.

#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Dessa två är bibliotek för Adafruit ledde matrisen och ryggsäck. Det finns ett block av text som beskriver användningen av dessa bibliotek som anges i koden.

#define morgon 0
#define eftermiddag 1
#define MAX_SEQ_NUM 17

Adafruit_8x8matrix matrix = Adafruit_8x8matrix();

Servo myservo;
int pos = 0;
int-intervall.
CONST int buttonPin = 2; numrera av tryckknapp PIN-koden
CONST int ledPin = 13. antal LED stift
int buttonState = 0;

Definitioner för användning senare i koden.

void setup() {

Serial.BEGIN(9600);

Serial.println ("8 x 8 LED Matrix Test mod av Robban");

Matrix.BEGIN(0x70); passera i adressen till I2C
matrix.setBrightness(2);
Matrix.Clear();
myservo.attach(9,544,2300); Ställ in Servo
myservo.write(POS);

initiera LED stift som en utgång:
pinMode (ledPin, produktionen);

initiera tryckknapp PIN-koden som indata:
pinMode (buttonPin, ingång);
digitalWrite(buttonPin,HIGH);
}

Ställ in matrisen, servo, tryckknapp och seriell port (för debug uttalanden).

TypeDef struct _led
{
char ordning;
int x;
int y;
} led_t;

En matris definiera LED layout (en pin-kod 0 betyder ingen LED)
Alla matrismedlemmar har ett sekvensnummer och en LED pin-kod.
Sekvensnumret bestämmer vilken ordning där de slå på eller av

CONST led_t ledArray [8] [7] = {
/ * elem 0 * / {{6, 0, 0}, {4, 0, 1}, {2, 0, 2}, {1, 0, 3}, {3, 0, 4}, {5, 0, 5}, {7, 0, 6}},
/ * elem 1 * / {{0, 1, 0}, {11, 1, 1}, {9, 1, 2}, {8, 1, 3}, {10, 1, 4}, {12, 1, 5}, {0, 1, 6}},
/ * elem 2 * / {{0, 2, 0}, {0, 2, 1}, {14, 2, 2}, {13, 2, 3}, {15, 2, 4}, {0, 2, 5}, {0, 2, 6}},
/ * elem 3 * / {{0, 3, 0}, {0, 3, 1}, {0, 3, 2}, {16, 3, 3}, {0, 3, 4}, {0, 3, 5}, {0, 3, 6}},
/ * elem 4 * / {{0, 4, 0}, {0, 4, 1}, {0, 4, 2}, {16, 4, 3}, {0, 4, 4}, {0, 4, 5}, {0, 4, 6}},
/ * elem 5 * / {{0, 5, 0}, {0, 5, 1}, {15, 5, 2}, {9, 5, 3}, {14, 5, 4}, {0, 5, 5}, {0, 5, 6}},
/ * elem 6 * / {{0, 6, 0}, {12, 6, 1}, {8, 6, 2}, {4, 6, 3}, {7, 6, 4}, {13, 6, 5}, {0, 6, 6}},
/ * elem 7 * / {{11, 7, 0}, {5, 7, 1}, {3, 7, 2}, {1, 7, 3}, {2, 7, 4}, {6, 7, 5}, {10, 7, 6}}
};

loop rutinen körs för evigt om och om igen:
ogiltiga loop()
{

char intervall = morgon;
int seqNum = 0;
/ / seqNum 0 initiera arrayen LED att ha den övre halvan på.
int i, j, k, gräns;
int delay_mult = 60. demo-läge.
Matrix.Clear();
matrix.blinkRate(0);
matrix.writeDisplay();

//Demo mode knappen Testa
buttonState = digitalRead(buttonPin);

Kontrollera om tryckknappen trycks.
om det är, är buttonState hög:

om (buttonState == hög) {
Aktivera LED:
digitalWrite (ledPin, låg);
Serial.println ("kub Hour Glass! \n"); matrix.setTextSize(1);
matrix.setTextWrap(false); Vi vill inte att texten ska radbrytas så att den rullar fint
matrix.setTextColor(LED_ON);
för (int8_t x = 0, x > =-36; x--) {
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("Club");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(3);
för (int8_t x = 7, x > =-36; x--) {
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("Robbo");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(0);
}
annat {
Inaktivera LED:
digitalWrite (ledPin, hög);
delay_mult = 60.
Serial.println ("kub Hour Glass demo! \n");
matrix.setTextSize(1);
matrix.setTextWrap(false); Vi vill inte att texten ska radbrytas så att den rullar fint
matrix.setTextColor(LED_ON);
för (int8_t x = 0, x > =-36; x--) {
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("demo");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(3);
för (int8_t x = 7, x > =-36; x--) {
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("mode");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(0);
}

//End av knappen test. Det sätter upp displayen att skriva ut ett meddelande som säger Demo-läge om du trycker. Jag vände också på ombord LED

samtidigt (1) //do lite detta för evigt!
{
för (k = 0; k < MAX_SEQ_NUM; k ++)
{
om (intervall == morgon)
{
för (jag = 0; jag < 4; i ++)
{
för (j = 0; j < 7; j ++)
{
om (ledArray [i] [j] .order > seqNum)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
annat
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
för (jag = 4; jag < 8; i ++)
{
för (j = 0; j < 7; j ++)
{
om (ledArray [i] [j] .order < = seqNum & & ledArray [i] [j] .order! = 0)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
annat
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
annat
{
för (jag = 4; jag < 8; i ++)
{
för (j = 0; j < 7; j ++)
{
om (ledArray [i] [j] .order > seqNum)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
annat
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
för (jag = 0; jag < 4; i ++)
{
för (j = 0; j < 7; j ++)
{
om (ledArray [i] [j] .order < = seqNum & & ledArray [i] [j] .order! = 0)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
annat
{

matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
//Depending på morgonen eller eftermiddagen variabel, läsa matrisen till ordningsnummer och som LED i matrisen (x, y-position) eller inaktivera följaktligen.
seqNum ++;
om (buttonState == hög)
{
fördröja ((3750 * delay_mult * 4)/16) ;// ser nära en minut. Därför flera av 60 timme ~ = 225 000.
Delay(900000);
}
annat
{
Delay(3750); Demo-läge.
}
}

Rotera displayen
intervall = (intervall == morgon)? EFTERMIDDAG: MORGONEN;

om (intervall == eftermiddag)
{
POS = 180;
myservo.write(POS);
Delay(1000);
för (pos = 0; pos < 180; pos += 3) / / går från 0 grader till 180 grader
{/ / i steg 3 examen
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Waits 1 minute(debug) för servo att nå ställning använda timme mulitplier 225k
om (buttonState == hög)
{
Delay(3750 * delay_mult) ;// ser nära en minut. Därför flera av 60 timme ~ = 225 000.
Delay(60000);
}
annat
{
fördröjning (1000); //demo läge.
}
}
}
annat
{

för (pos = 179; pos > 0; pos-= 3) / / går från 180 grader till 0 grader
{/ / steg i-3 grader
myservo.write(POS); berätta servo gå för att placera i variabel "pos"
Waits 1m (debug) för servo att nå ställning använda timme mulitplier 225k
om (buttonState == hög)
{

Delay(60000);
}
annat
{
Delay(1000); demo-läge.
}
}
}

seqNum = 0;
}

}

Se Steg
Relaterade Ämnen

Projekt RE_ av Samuel Bernier

UPcycling med en upp!Personliga och bärbara 3D-skrivare.Detta experiment av projektet RE_ utforskar 3D-utskrifter som en DIY verktyg för upcycling. Kundanpassade lock skapas med låg kostnad 3D-utskrifter. De är sedan klippt eller skruvas på standard...

Glass Clock with LED backlight

This clock incorporates LEDs and mirrors behind a glass face. Det fanns 20 eller 30 olika glasrutor att välja mellan på hobby butik, men jag valde här en på grund av dess konsistens och unika reflektioner. Detta instructable, du kanske lär dig en ell...

Spel kub Hack

det kom till min kännedom att GreenCub gör dessa spel kuber från återvunnet delar. Om du inte har en gamecube att återvinna, gå till denna webbplats, gör han flera olika designer av office arrangörer från återvunnet spel produkter. http://www.etsy.co...

LÄTT instruktioner göra ett visitkort kub

vad du behöver:6 visitkort.5 minuter.VARFÖR GÖRA EN BUSINESS CARD KUB?Det finns många anledningar att göra en visitkort kub! Min anledning, dock vuxit från ett särskilt kontor spottade med min manager och I. (alla i god roligt om du läser detta, Mark...

En bärbar Pachinko använder Office stift

Detta är en enkel woodcraft projekt. Tar bara ca 1 ~ 2 dagar att göra.Utformningen är inspirerad av taiwanesiska Pachinkos & mini-spelet "Lucky Hit" från spelet "Shenmue".(Ursäkta mitt begränsade val av ord i detta Instructable)Ste...

JAG AV GLASS!!! Milkshake

På dessa kvällar som du bara måste ha en milkshake och det är för sent för en snabb springa till snabb mat och det finns nr glass, detta recept är perfekta botemedlet. Det är snabbt och enkelt och på vårt hus, har vi nästan alltid alla ingredienser.S...

Mango Kulfi glass utan en Popsicle mögel

Kulfi är en indisk version av glass men mycket krämigare och tät än vanlig glass. Mango kulfi är fryst mjölk baserad indisk dessert. Det är en perfekt tid att bokföra Mango Kulfi som mango säsongen här i Indien. Det är anledningen till att jag valde...

Målat trä kub Mario

om du letar efter en enkel helg projekt att dekorera din spelrum, ge detta målat trä kub Mario projekt ett försök.Du behöver:3/4" fyrkantiga dubbar (poppel fungerar)Mörk och fläcken (kolla din lokala järnaffär för scratch och buckla erbjudanden!)Röd...

Hur man gör glass (3 smaker: vanilj, choklad och Dragon frukt med vattenmelon)

det är alltid bra att ha glass i denna brännande varm dag att koppla av. Om att ha en glass med din favorit smak av frukt eller andra skulle saker (du nämna det) vara bra. Dessutom med detta recept kan du göra din glass med en trevlig krämighet och k...

GRATIS mini glass i en restaurang

göra riktig glass i någon restaurang diner stil!Detta instructable är bra för tre situationer:1. mycket sena nätter på Denny's, IHOP, eller var som helst med halv-n-halv i lilla UHT plastmuggar.2. underhållande barnen ' bout "gamla tymee heirloom&quo...

Sugar infunderas äpple-kanel glass

Normalt, är färska bitar av äpple frusen i isen grädde så hårt som en rock. Men om du ingjuta dem med en sockerlösning, de förblir mjuk och välsmakande. Denna sockerlösning fungerar som ett slags anti-freeze eftersom det har en lägre fryspunkt än app...

Vattenmelon glass Parfait

Vattenmelon glass parfait är lager av choklad, glass, vattenmelon kuber och blandade nötter. Det är gott och ögat tilltalande dessert.Steg 1: Ingredienser för vattenmelon glass2 dl vattenmelon60 gram Dessert toppning mix1/4 dl kall mjölk2 tsk sockerS...

TUTTIFRUTTI: Färgglada kanderad frukt kuber från rå Papaya

Tutti-fruktig, en färgglad kombination av hackade och kanderade frukter används i dekoration och glass. I Indien tutti-fruktig är tillverkad av rå papaya. Här är den stegvisa instructable om hur man gör tutti-fruktig hemma.Steg 1: råvaror Rå Papaya:...

En mängd Bacon Cheesecakes, med Maple-Bacon glass

för denna tävling, jag ville göra något riktigt bra. Så efter några trodde, jag beslutade att Bacon Cheesecake skulle vara helt fantastiskt... Visst, jag kunde bara ta någon annans recept och tillsätt bacon, men jag ville ha något riktigt bra. Jag to...

123d office/skola multiverktyget för skrivare 3-d

Hej. För att göra detta behöver du en 3-d skrivare. Detta är en multi-användning arrangör för användning i skolan och på kontoret. Den innehåller en 3 hål, en lim stick hållare (för liten skola barnen), en sax hållare, en häftapparat, en pennhållare,...

Kub världen

Jag var du surfar på webben, slumpmässigt att klicka, när jag plötsligt kom över tanken på icke-sfäriska glober - jordglober av jorden som inte är faktiskt jordglober - dodecahedrons, octahedrons och kuber.Jag bestämde mig för jag måste göra en, så h...

3D-modellering och skriva ut din egen skugga kub

En initialer skugga kub är en kub där varje vy av kuben (överst, front och sida-vy) är profilen av en annan bokstav. Detta kommer från boken Gödel, Escher, Bach, av Douglas Hofstadter. En skugga kub är en riktigt trevlig grundläggande 3D design utman...

Hur man gör läckra glass eller Smoothie av snö!

För närvarande här på östkusten finns 2 fot snö på marken. Jag har gjort glass snö i år, mut det skulle vända vattnig quckly. Det också inte smakar som riktig glass, mer av en snö kon. Det finns mer än tillräckligt med snö att experimentera med. Det...

3 ingrediens Vegan kaffe glass

Jag älskar kaffe!Men vad jag älskar nästan lika mycket som kaffe är glass. Dock älskar ibland glass inte oss alla tillbaka. Veganer och dem som är laktosintoleranta är vanligtvis förpassas till den mindre menyn för sorbet. Missförstå mig inte, jag ha...