Programmacode - Vaste fasestanden
#include <Bounce2.h> // Library voor antidender op de drukknop
#include <LedCube.h> // Library van Arduinosite voor Led Cube
#define SIZE 3 // Definiëren van de grootte van de Cube voor de Library
#define COLS (SIZE*SIZE) // Definiëren van de kolommengroote voor de Library
byte negArray[COLS] = {2,3,4,5,6,7,8,9,10}; // Array maken voor Leds + Pinaanduiding voor Ledsbyte posArray[SIZE] = {A0,A1,A2}; // Array maken voor de Layers + Pinaanduidingen voor Layers
const int buttonPin = 11; // Pinaansluiting voor drukknop
int menuIndex = 0;
Bounce button = Bounce(); // Antidenderfunctie oproepen
LedCube cube(SIZE, posArray, negArray); // Oproepen van Led Cube Library
void setup(){ // Setup van de button en seriële uitlezing
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
button.attach(buttonPin);
button.interval(1);
for(int i = 0; i < 9; i++){
pinMode(negArray[i], OUTPUT);
}
for(int i = 0; i < 3; i++){
pinMode(posArray[i], OUTPUT);
}
Serial.begin(9600);
}
void loop(){ // Faseovergangen Loop
menu();
}
void menu(){ // Faseovergangen en aanduidingen van fasefuncties
boolean stateChanged = button.update();
int state = button.read();
if ( stateChanged && state == LOW ) { // Detectie van de neergaande flank
menuIndex++;
if(menuIndex == 4){
menuIndex = 1;
}
}
Serial.println(menuIndex); // Switchcase voor de faseovergangen
switch(menuIndex){
case 0:
fase0();
break;
case 1:
fase1();
break;
case 2:
fase2();
break;
case 3:
fase3();
break;
}
}
void fase0(){ // Fase 0 : Beginstand : Volledige Ledkubus aan!
for(int layer = 0; layer < 3; layer++){
for(int number = 0; number < 9 ; number++){
PixelOn(layer,number);
}
}
}
void fase1(){ // Fase 1 : na duw op knop van beginstand naar Layer 0 aan!
PixelOn(0,0); PixelOn(0,1);
PixelOn(0,2);
PixelOn(0,3);
PixelOn(0,4);
PixelOn(0,5);
PixelOn(0,6);
PixelOn(0,7);
PixelOn(0,8);
}
void fase2(){ // Fast twee: van Layer 0 alles aan naar Layer 1 alles aan!
PixelOn(1,0);
PixelOn(1,1);
PixelOn(1,2);
PixelOn(1,3);
PixelOn(1,4);
PixelOn(1,5);
PixelOn(1,6);
PixelOn(1,7);
PixelOn(1,8);
}
void fase3(){ // Fase drie: van Layer 1 alles aan naar Layer 2 alles aan!
PixelOn(2,0);
PixelOn(2,1);
PixelOn(2,2);
PixelOn(2,3);
PixelOn(2,4);
PixelOn(2,5);
PixelOn(2,6);
PixelOn(2,7);
PixelOn(2,8);
}
void PixelOn(int layer, int number){ // Aansturen van Leds afzonderlijk via functie
Clear(layer);
digitalWrite(posArray[layer], HIGH);
digitalWrite(negArray[number], LOW);
// eventueel delay(20000);
}
void Clear(int layer){ // Clear Functie
for(int i = 0; i < 9; i++){
digitalWrite(negArray[i], HIGH);
}
for(int i = 0; i < 3; i++){
digitalWrite(posArray[i], LOW);
}
}
/* VOORSTELLINGKUBUS
Vooraanzichtkubus
8 7 6 • 2 Boven
5 4 3 • 1
2 1 0 • 0 Onder
Links ----> Rechts
*/
// © copyright - Ruben Tuts - Student Electronics & ICT
#include <LedCube.h> // Library van Arduinosite voor Led Cube
#define SIZE 3 // Definiëren van de grootte van de Cube voor de Library
#define COLS (SIZE*SIZE) // Definiëren van de kolommengroote voor de Library
byte negArray[COLS] = {2,3,4,5,6,7,8,9,10}; // Array maken voor Leds + Pinaanduiding voor Ledsbyte posArray[SIZE] = {A0,A1,A2}; // Array maken voor de Layers + Pinaanduidingen voor Layers
const int buttonPin = 11; // Pinaansluiting voor drukknop
int menuIndex = 0;
Bounce button = Bounce(); // Antidenderfunctie oproepen
LedCube cube(SIZE, posArray, negArray); // Oproepen van Led Cube Library
void setup(){ // Setup van de button en seriële uitlezing
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
button.attach(buttonPin);
button.interval(1);
for(int i = 0; i < 9; i++){
pinMode(negArray[i], OUTPUT);
}
for(int i = 0; i < 3; i++){
pinMode(posArray[i], OUTPUT);
}
Serial.begin(9600);
}
void loop(){ // Faseovergangen Loop
menu();
}
void menu(){ // Faseovergangen en aanduidingen van fasefuncties
boolean stateChanged = button.update();
int state = button.read();
if ( stateChanged && state == LOW ) { // Detectie van de neergaande flank
menuIndex++;
if(menuIndex == 4){
menuIndex = 1;
}
}
Serial.println(menuIndex); // Switchcase voor de faseovergangen
switch(menuIndex){
case 0:
fase0();
break;
case 1:
fase1();
break;
case 2:
fase2();
break;
case 3:
fase3();
break;
}
}
void fase0(){ // Fase 0 : Beginstand : Volledige Ledkubus aan!
for(int layer = 0; layer < 3; layer++){
for(int number = 0; number < 9 ; number++){
PixelOn(layer,number);
}
}
}
void fase1(){ // Fase 1 : na duw op knop van beginstand naar Layer 0 aan!
PixelOn(0,0); PixelOn(0,1);
PixelOn(0,2);
PixelOn(0,3);
PixelOn(0,4);
PixelOn(0,5);
PixelOn(0,6);
PixelOn(0,7);
PixelOn(0,8);
}
void fase2(){ // Fast twee: van Layer 0 alles aan naar Layer 1 alles aan!
PixelOn(1,0);
PixelOn(1,1);
PixelOn(1,2);
PixelOn(1,3);
PixelOn(1,4);
PixelOn(1,5);
PixelOn(1,6);
PixelOn(1,7);
PixelOn(1,8);
}
void fase3(){ // Fase drie: van Layer 1 alles aan naar Layer 2 alles aan!
PixelOn(2,0);
PixelOn(2,1);
PixelOn(2,2);
PixelOn(2,3);
PixelOn(2,4);
PixelOn(2,5);
PixelOn(2,6);
PixelOn(2,7);
PixelOn(2,8);
}
void PixelOn(int layer, int number){ // Aansturen van Leds afzonderlijk via functie
Clear(layer);
digitalWrite(posArray[layer], HIGH);
digitalWrite(negArray[number], LOW);
// eventueel delay(20000);
}
void Clear(int layer){ // Clear Functie
for(int i = 0; i < 9; i++){
digitalWrite(negArray[i], HIGH);
}
for(int i = 0; i < 3; i++){
digitalWrite(posArray[i], LOW);
}
}
/* VOORSTELLINGKUBUS
Vooraanzichtkubus
8 7 6 • 2 Boven
5 4 3 • 1
2 1 0 • 0 Onder
Links ----> Rechts
*/
// © copyright - Ruben Tuts - Student Electronics & ICT
Programmacode - Animaties
#include <Bounce2.h> // Library voor antidender op de drukknop
#include <LedCube.h> // Library van Arduinosite voor Led Cube
#define SIZE 3 // Definiëren van de grootte van de Cube voor de Library
#define COLS (SIZE*SIZE) // Definiëren van de kolommengroote voor de Library
byte negArray[COLS] = {2,3,4,5,6,7,8,9,10}; // Array maken voor Leds + Pinaanduiding voor Leds byte posArray[SIZE] = {A0,A1,A2}; // Array maken voor de Layers + Pinaanduidingen voor Layers
const int buttonPin = 11; // Pinaansluiting voor drukknop
int menuIndex = 0;
Bounce button = Bounce(); // Antidenderfunctie oproepen
LedCube cube(SIZE, posArray, negArray); // Oproepen van Led Cube Library
void setup(){ // Setup van de button en seriële uitlezing
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
button.attach(buttonPin);
button.interval(1);
for(int i = 0; i < 9; i++){
pinMode(negArray[i], OUTPUT);
}
for(int i = 0; i < 3; i++){
pinMode(posArray[i], OUTPUT);
}
Serial.begin(9600);
}
void loop(){ // Faseovergangen Loop
menu();
}
void menu(){ // Faseovergangen en aanduidingen van fasefuncties
boolean stateChanged = button.update();
int state = button.read();
if ( stateChanged && state == LOW ) { // Detectie van de neergaande flank
menuIndex++;
if(menuIndex == 4){
menuIndex = 1;
}
}
Serial.println(menuIndex); // Switchcase voor de faseovergangen
switch(menuIndex){
case 0:
fase0();
break;
case 1:
fase1();
break;
case 2:
fase2();
break;
case 3:
fase3();
break;
}
}
void fase0(){ // Fase 0 : Beginstand : Volledige Ledkubus aan!
for(int layer = 0; layer < 3; layer++){
for(int number = 0; number < 9 ; number++){
PixelOn(layer,number);
}
}
}
void fase1(){ // Fase 1 : na duw op knop van beginstand naar Animatie 1!
for(byte d=25; d>2; d-=2)
{
for(byte l=1; l <= cube.getLevels(); l++)
{
cube.lightLevel(l, d);
}
}
}
void fase2(){ // Fast twee: van Ani 1 naar Helicopter animatie!
byte topSeq[8] = {0,3,6,7,8,5,2,1};
byte botSeq[8] = {8,5,2,1,0,3,6,7};
for(byte loops = 0, delay = 50; loops<=8; loops++)
{
for(byte s=0; s<8; s++)
{
byte seq[] = {2,topSeq[s], 1,4, 0,botSeq[s]};
cube.lightSequence(seq, sizeof(seq), delay);
}
if(loops < 5) delay-=10; else delay += 10;
}
}
void fase3(){ // Fase drie: van Helicopter Ani naar RandomDim!
for(byte level=0; level<cube.getLevels(); level++)
{
for(byte col=0; col<cube.getCols(); col++)
{
cube.lightPulse(level, col, 100);
}
}
}
void PixelOn(int layer, int number){ // Aansturen van Leds afzonderlijk via functie
Clear(layer);
digitalWrite(posArray[layer], HIGH);
digitalWrite(negArray[number], LOW);
// eventueel delay(20000);
}
void Clear(int layer){ // Clear Functie
for(int i = 0; i < 9; i++){
digitalWrite(negArray[i], HIGH);
}
for(int i = 0; i < 3; i++){
digitalWrite(posArray[i], LOW);
}
}
/* VOORSTELLINGKUBUS
Vooraanzichtkubus
8 7 6 • 2 Boven
5 4 3 • 1
2 1 0 • 0 Onder
Links ----> Rechts
*/
// © copyright - Ruben Tuts - Student Electronics & ICT
#include <LedCube.h> // Library van Arduinosite voor Led Cube
#define SIZE 3 // Definiëren van de grootte van de Cube voor de Library
#define COLS (SIZE*SIZE) // Definiëren van de kolommengroote voor de Library
byte negArray[COLS] = {2,3,4,5,6,7,8,9,10}; // Array maken voor Leds + Pinaanduiding voor Leds byte posArray[SIZE] = {A0,A1,A2}; // Array maken voor de Layers + Pinaanduidingen voor Layers
const int buttonPin = 11; // Pinaansluiting voor drukknop
int menuIndex = 0;
Bounce button = Bounce(); // Antidenderfunctie oproepen
LedCube cube(SIZE, posArray, negArray); // Oproepen van Led Cube Library
void setup(){ // Setup van de button en seriële uitlezing
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
button.attach(buttonPin);
button.interval(1);
for(int i = 0; i < 9; i++){
pinMode(negArray[i], OUTPUT);
}
for(int i = 0; i < 3; i++){
pinMode(posArray[i], OUTPUT);
}
Serial.begin(9600);
}
void loop(){ // Faseovergangen Loop
menu();
}
void menu(){ // Faseovergangen en aanduidingen van fasefuncties
boolean stateChanged = button.update();
int state = button.read();
if ( stateChanged && state == LOW ) { // Detectie van de neergaande flank
menuIndex++;
if(menuIndex == 4){
menuIndex = 1;
}
}
Serial.println(menuIndex); // Switchcase voor de faseovergangen
switch(menuIndex){
case 0:
fase0();
break;
case 1:
fase1();
break;
case 2:
fase2();
break;
case 3:
fase3();
break;
}
}
void fase0(){ // Fase 0 : Beginstand : Volledige Ledkubus aan!
for(int layer = 0; layer < 3; layer++){
for(int number = 0; number < 9 ; number++){
PixelOn(layer,number);
}
}
}
void fase1(){ // Fase 1 : na duw op knop van beginstand naar Animatie 1!
for(byte d=25; d>2; d-=2)
{
for(byte l=1; l <= cube.getLevels(); l++)
{
cube.lightLevel(l, d);
}
}
}
void fase2(){ // Fast twee: van Ani 1 naar Helicopter animatie!
byte topSeq[8] = {0,3,6,7,8,5,2,1};
byte botSeq[8] = {8,5,2,1,0,3,6,7};
for(byte loops = 0, delay = 50; loops<=8; loops++)
{
for(byte s=0; s<8; s++)
{
byte seq[] = {2,topSeq[s], 1,4, 0,botSeq[s]};
cube.lightSequence(seq, sizeof(seq), delay);
}
if(loops < 5) delay-=10; else delay += 10;
}
}
void fase3(){ // Fase drie: van Helicopter Ani naar RandomDim!
for(byte level=0; level<cube.getLevels(); level++)
{
for(byte col=0; col<cube.getCols(); col++)
{
cube.lightPulse(level, col, 100);
}
}
}
void PixelOn(int layer, int number){ // Aansturen van Leds afzonderlijk via functie
Clear(layer);
digitalWrite(posArray[layer], HIGH);
digitalWrite(negArray[number], LOW);
// eventueel delay(20000);
}
void Clear(int layer){ // Clear Functie
for(int i = 0; i < 9; i++){
digitalWrite(negArray[i], HIGH);
}
for(int i = 0; i < 3; i++){
digitalWrite(posArray[i], LOW);
}
}
/* VOORSTELLINGKUBUS
Vooraanzichtkubus
8 7 6 • 2 Boven
5 4 3 • 1
2 1 0 • 0 Onder
Links ----> Rechts
*/
// © copyright - Ruben Tuts - Student Electronics & ICT