Office kubus Hour Glass (3 / 4 stap)

Stap 3: Software

De software is geschreven in Processing en gedownload via de Arduino IDE.  De code bevat een lus die 9 uur duurt, goed 10 om te zetten van de weergave terug naar de oorspronkelijke positie. Maar hopelijk, u zal worden verlaten van het "Bureau" na de tweede lus van de vier uur en de macht de gadget uit. Bij het aandrijven op zal op beginstand zetten naar de servo naar de uitgangspositie. Binnen deze hoofdlus, die is ingesteld op altijd worden uitgevoerd, zijn twee vier uur loops en twee lussen van één uur.

Uitsplitsing van de code: daadwerkelijke code in cursief, opmerkingen in vet. Hier is een link naar de code, zodat u niet hoeft te knippen en plakken als u wenst te gebruiken.

https://github.com/robboz4/Hour-Glass/tree/July-entry

Als u besluit om het gebruik van de codes vermeld alle verklaringen met betrekking tot het gebruik van Adafruit bibliotheken.

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

Grondslag bevat voor debug verklaringen voor de seriële poort, de Servo-bibliotheek en de I2C-bibliotheek.

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

Deze twee zijn de bibliotheken voor de Adafruit LED matrix en de rugzak. Er is een blok van tekst met een beschrijving van het gebruik van deze bibliotheken die wordt vermeld in de code.

#define ochtend 0
#define middag 1
#define MAX_SEQ_NUM 17

Adafruit_8x8matrix matrix = Adafruit_8x8matrix();

Servo myservo;
int pos = 0;
int interval;
Const int buttonPin = 2;     het nummer van de drukknop pin
Const int ledPin = 13;      het nummer van de LED-pin
int buttonState = 0;

Definities voor het gebruik later in de code.

VOID Setup {}

Serial.begin(9600);


Serial.println ("8 x 8 LED Matrix Test mod door robbo");

matrix.begin(0x70);  pas in het adres van de I2C

matrix.setBrightness(2);
matrix.Clear();
myservo.attach(9,544,2300); Servo instellen
myservo.write(POS);

Initialiseer de LED-pin als uitgang:
pinMode (ledPin, OUTPUT);
Initialiseer de drukknop pin als input:
pinMode (buttonPin, INPUT);
digitalWrite(buttonPin,HIGH);
}

Instellen van de matrix, servo, drukknop en seriële poort (voor debug verklaringen).

typedef struct _led
{
char volgorde;
int x;
int y;
} led_t;

Een array om de LED-indeling (een pin-nummer van 0 betekent geen LED) te definiëren
Elk matrixlid heeft een volgnummer en de pincode van een LED.
Het volgnummer bepaalt de volgorde waarin ze in- of uitschakelen overschakelen

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}}
};

de routine van de lus wordt uitgevoerd over en weer forever:
void loop
{

char interval = ochtend;
int seqNum = 0;
/ / seqNum voor 0 initialiseren het LED-array om de bovenste helft op.
int i, j, k, beperking geldt;
int delay_mult = 60; Demo modus optie.
matrix.Clear();
matrix.blinkRate(0);
matrix.writeDisplay();

//Demo modusknop testen
buttonState = digitalRead(buttonPin);

Controleer als de drukknop ingedrukt is.
Als het is, is de buttonState hoog:

Als (buttonState == HIGH) {}
LED inschakelen:
digitalWrite (ledPin, laag);
Serial.println ("Hour Glass Cube! \n");  matrix.setTextSize(1);
matrix.setTextWrap(false);  We willen niet dat tekst laten teruglopen zodat het mooi rollen
matrix.setTextColor(LED_ON);
voor (int8_t x = 0; x > =-36; x--) {}
matrix.Clear();
matrix.setCursor(x,0);
matrix.Print("Club");
matrix.writeDisplay();
delay(100);
}
matrix.setRotation(3);
voor (int8_t x = 7; x > =-36; x--) {}
matrix.Clear();
matrix.setCursor(x,0);
matrix.Print("Robbo");
matrix.writeDisplay();
delay(100);
}
matrix.setRotation(0);
}
else {}
LED uitschakelen:
digitalWrite (ledPin, hoge);
delay_mult = 60;
Serial.println ("kubus Hour Glass demo! \n");
matrix.setTextSize(1);
matrix.setTextWrap(false);  We willen niet dat tekst laten teruglopen zodat het mooi rollen
matrix.setTextColor(LED_ON);
voor (int8_t x = 0; x > =-36; x--) {}
matrix.Clear();
matrix.setCursor(x,0);
matrix.Print("demo");
matrix.writeDisplay();
delay(100);
}
matrix.setRotation(3);

voor (int8_t x = 7; x > =-36; x--) {}
matrix.Clear();
matrix.setCursor(x,0);
matrix.Print("mode");
matrix.writeDisplay();
delay(100);
}
matrix.setRotation(0);
}

//End van knop test. Daarin worden weergegeven voor het afdrukken van een bericht van de Demo-modus als ingedrukt. Ik heb ook ingeschakeld de boordcomputer LED

terwijl (1) //do dit voor eeuwig bit!
{
voor (k = 0; k < MAX_SEQ_NUM; k ++)
{
Als (interval == ochtend)
{
voor (ik = 0; ik < 4; i ++)
{
voor (j = 0; j < 7; j ++)
{
Als (ledArray [i] [j] .order > seqNum)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
anders
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
voor (ik = 4; ik < 8; i ++)
{
voor (j = 0; j < 7; j ++)
{
Als (ledArray [i] [j] .order < = seqNum & & ledArray [i] [j] .order! = 0)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
anders
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
anders
{

voor (ik = 4; ik < 8; i ++)
{
voor (j = 0; j < 7; j ++)
{
Als (ledArray [i] [j] .order > seqNum)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
anders
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
voor (ik = 0; ik < 4; i ++)
{
voor (j = 0; j < 7; j ++)
{
Als (ledArray [i] [j] .order < = seqNum & & ledArray [i] [j] .order! = 0)
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
anders
{
matrix.drawPixel (ledArray [i] [j] .x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
//Depending op de ochtend of middag variabele, lezen de array naar het volgnummer en de LED in de matrix (x, y-positie) in- of uitschakelen dienovereenkomstig.
seqNum ++;
Als (buttonState == HIGH)
{
((3750 * delay_mult * 4)/16 vertraging) ;// ziet er dicht bij een minuut. Daarom meerdere door 60 uurtje ~ = 225.000.
delay(900000);
}
anders
{
delay(3750); Demo-modus.
}
}

De weergave draaien
interval = (interval == ochtend)? NAMIDDAG: 'S OCHTENDS;

Als (interval == middag)
{
POS = 180;
myservo.write(POS);
delay(1000);
voor (pos = 0; pos < 180; pos += 3) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 3 graden
myservo.write(POS);                servo naar positie in de variabele 'pos' vertellen
wacht 1 minute(debug) voor de servo om de positie te bereiken gebruik het uur mulitplier 225k
Als (buttonState == HIGH)
{
delay(3750 * delay_mult) ;// ziet er dicht bij een minuut. Daarom meerdere door 60 uurtje ~ = 225.000.
delay(60000);
}
anders
{
vertraging (1000); //demo-modus.
}
}
}
anders
{

voor (pos = 179; pos > 0; pos-= 3) / / gaat van 180 graden tot 0 graden
{/ / in stappen van-3 graad
myservo.write(POS);                servo naar positie in de variabele 'pos' vertellen
wacht 1m (debug) voor de servo om de positie te bereiken gebruik het uur mulitplier 225k
Als (buttonState == HIGH)
{

delay(60000);
}
anders
{
delay(1000); Demo-modus.
}
}
}

seqNum = 0;
}

}

Gerelateerde Artikelen

Project RE_ door Samuel Bernier

Project RE_ door Samuel Bernier

UPcycling met een UP!Persoonlijke en draagbare 3D-Printer.Dit experiment van Project RE_ verkent 3D printen als een DIY instrument voor upcycling. Op maat gemaakte deksels zijn gemaakt met behulp van lage kosten 3D printen. Ze zijn afgekapt of geschr
DIY zelf drenken hond schotel

DIY zelf drenken hond schotel

Hier is een gemakkelijke manier om uw honden schotel of kom vol met water zodat hij of zij zal niet gaan dorst! Onlangs ik was bij de ijzerhandel en had een 4" PVC-koppeling in mijn hand en had een ah-ha moment! Ik besefte meteen hoe ik een zelf-dren
3 x 3 LED kubus programmering tips (Arduino gebaseerd)

3 x 3 LED kubus programmering tips (Arduino gebaseerd)

hoe maak je dat kubus doen wat je wilt het!Mij volger naar de instructable hier en een 3 x 3 LED kubus geleid door een Arduino gebouwd. Ik was erg blij! Maar het kan alleen een routine. Opnieuw en opnieuw en opnieuw en opnieuw en opnieuw... Dus heb i
Een draagbare Pachinko met behulp van Office Pins

Een draagbare Pachinko met behulp van Office Pins

Dit is een eenvoudige woodcraft project. Duurt slechts ongeveer 1 ~ 2 dagen te maken.Het ontwerp is geïnspireerd door Taiwanese Pachinkos & de mini-game 'Lucky Hit' uit het spel 'Shenmue'.(Gelieve excuus mijn beperkte keuze van woorden in dit Instruc
De verbazingwekkende papier puzzel doos: Rubiks kubus of kalender

De verbazingwekkende papier puzzel doos: Rubiks kubus of kalender

Een jaar heeft 12 maanden, en een kubus heeft 6 gezichten, dus hoe kan een heel jaar passen op een kubus? Download deze ongelooflijke papier puzzel om de oplossing te vinden (of Bekijk de video, maar het is niet helemaal zo spannend als het bedrijf d
Chuck TV doorsnede kubus DIY werkmodel

Chuck TV doorsnede kubus DIY werkmodel

achtergrond: In de TV-show "Chuck" (NBC maandag 8 PM EST) de held, Chuck neer laadt alle regeringen top geheimen als een reeks van gecodeerde beelden uit de computer snijden.In seizoen 2 (2009) we zien het elkaar kruisen - een witte doorzichtige
Airplay kubus spreker

Airplay kubus spreker

Bedankt voor het controleren van mijn instuctable op hoe ik mijn minimale kubus spreker gebouwd.Dit is mijn tweede wifi luidspreker bouwen. Het integreert met mijn andere 4 diy wifi sprekers om een volledig multi-room audio systeem dat centraal wordt
Glass Clock with LED backlight

Glass Clock with LED backlight

This clock incorporates LEDs and mirrors behind a glass face.  Er waren 20 of 30 verschillende ruiten om uit te kiezen in de hobby winkel, maar ik koos voor dit één vanwege zijn textuur en het uniek lichtreflecties.  In dit instructable, misschien le
Rubik's kubus Speaker draadloos

Rubik's kubus Speaker draadloos

In dit instructable ga ik om u te tonen hoe maak je een Rubik's kubus die beschikt over een luidspreker en is volledig functioneel. Het is compatibel met alle draadloze Bluetooth-apparaten of kan worden gebruikt met een 3,5 mm audio jack. De geïntegr
GEMAKKELIJK How-to maken een visitekaartje kubus

GEMAKKELIJK How-to maken een visitekaartje kubus

wat u nodig zult hebben:6 visitekaartjes.5 minuten.WAAROM MAKEN EEN VISITEKAARTJE KUBUS?Er zijn vele redenen om een visitekaartje kubus maken! Mijn reden, gekiemde echter vanuit een bepaald kantoor spuwde met mijn manager en I. (allemaal in goede leu
Slimme Lamp Chic'on kubus

Slimme Lamp Chic'on kubus

Deze instructables toont hoe het bouwen van een slimme lamp kundig voor verbinden het serviceplatform van de Chic'on. (Meer informatie op http://www.chicon.fr)Sinds 27 maart 2016 is er nu een nieuwe versie van chicon ecosysteem op regel. Kunt u uw An
Maken van de L3D kubus: idee tot Product in 4 maanden

Maken van de L3D kubus: idee tot Product in 4 maanden

Vier maanden geleden waren we geschroefd.Maar dat legt de kar voor het paard - die zoals wij allen weten geen nee is. Ten eerste, een korte achtergrond: Ik ben deel van een volumetrische imaging company, Looking Glass. We uitgevonden volumetrische af
3 x 3 x 3 LED kubus schild

3 x 3 x 3 LED kubus schild

Wat moet in uw kit:1 – PCB27-LED's2 – 6 pins voor Arduino2-8 pinnen voor Arduino3 – weerstanden1 – schuim gids1 – kleine draad1 – middellange draad1 – grote draadU zult: Wire Cutters van ijzer, soldeer, solderen, Wire Strippers, veiligheid Googles, h
Gekleurd hout kubus Mario

Gekleurd hout kubus Mario

als u op zoek bent naar een eenvoudige weekend project te kleden uw gameroom, geven dit gekleurd houten kubus Mario project een keer te proberen.Hebt u nodig:3/4" vierkant stokjes (populier zal werken)Donker en vlek (Controleer uw lokale hardware win