#include <MIDI.h>
/*************************************************************
BOTONERA 2000
x NATANIEL GARCIA
2021 (HECHO EN PANDEMIA 2.0)
Version 7.0
*************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
void(* resetFunc) (void) = 0; // ESTO RESETEA LA BOTONERA
MIDI_CREATE_DEFAULT_INSTANCE();
// DECLARAR LAS VARIABLES DE DONDE ESTAN CONECTADOS LOS BOTONES
const int boton[8] = {5, 6, 0, 13, 3, 2, A4, A5};
const int botonMaster = 4; // BOTON PARA CAMBIAR DEL MODO PLAY AL MODO SETUP
// DECLARAR LAS VARIABLES PARA EL LOOP DE CADA BOTON
int estadoboton[8] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int anteriorboton[8] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int ButtonState10 = 0;
int LastButtonState10 = 0;
// VARIABLES PARA EL LOOP DE LOS POTENCIOMETROS
int pot[4]; // 3 POTENCIOMETROS Y LA ENTRADA DE PEDAL DE EXPRESION
int potant[4];
int potes[4] = {1, 3, 0, 2}; // DONDE ESTAN ENCHUFADOS
int ccpot[4] = {80, 81, 82, 11}; // CC DE CADA POTE EN EL MODO PLAY
// DECLARAR LAS VARIABLES DE LOS LEDS, DONDE ESTAN CONECTADOS
const int ledpin[6] = {11, 12, 7, 10, 8, 9};
// VARIABLES PARA DETERMINAR SI CADA BOTON DEBE ENVIAR O NO SEAL POR MEDIO DE SWITCH Y CASE (UNICAMENTE MASTER, EL RESTO LO HACE POR EL ESTADO DEL LED - VARIABLE MEMLED, INCLUSO 7 Y 8)
int ACTIVARMASTER = 127; // PARA EL BOTON PLAY/SETUP
// VARIABLE PARA DETERMINAR EL CANAL MIDI POR EL QUE ENVIAN SEAL LOS POTENCIOMETROS Y LOS 2 BOTONES DE ARRIBA
int CANAL = 1;
// VARIABLE NUMERO DE CC DE LOS 8 BOTONES
int CC[8] = {14, 15, 16, 17, 18, 19, 3, 9};
// VARIABLE PARA DETERMINAR EL CC MIDI QUE ENVIAN LOS POTENCIOMETROS Y LOS 2 BOTONES DE ARRIBA POR LOS CANALES 11 AL 16
int BOTVARIABLE[8];
int POTVARIABLE[8];
// DECLARAR LAS VARIABLES PARA GUARDAR EN MEMORIA QUE LEDS ESTAN PRENDIDOS EN EL MODO PLAY
int MEMLED[8];
// DECLARAR LAS VARIABLES PARA GUARDAR EN MEMORIA QUE CANAL ESTA SELECCIONADO EN EL MODO SETUP
int MEMCANAL[6];
// DECLARAR LAS VARIABLES PARA APAGAR LOS LEDS DEL MODO ANTERIOR
int APAGARLEDS = 0; // PARA LOS LEDS DEL MODO SETUP
int APAGARLEDS2 = 0; // PARA LOS LEDS DEL MODO PLAY
// VARIABLE PARA CAMBIAR DEL MODO SETUP AL MODO PLAY
int MODOPLAY = 1;
// VARIABLE PARA VER SI SE VA A USAR CON LA LEXICON MPX1 O CON SOFTWARE
int LEXICON[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int APAGAR[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int UNAVEZ = 0; // ESTA VARIABLE ES PARA EJECUTAR LA CONFIGURACION DE ELECCION ENTRE SOFTWARE Y LEXICON UNA SOLA VEZ
// VARIABLES PARA MANTENER APRETADO UN BOTON
unsigned long botonapretado[8];
unsigned long tiempoapretado = 1500; // TIEMPO QUE DEBE ESTAR PRESIONADO PARA ACCEDER AL SETUP DE LEX PC INDIVIDUAL
unsigned long tiemporeset = 3000; // TIEMPO PARA RESETEAR LA BOTONERA
unsigned long tiempoLUCECITAS = 5000;
unsigned long resetpresionado;
unsigned long LUCECITAS;
// VARIABLE PARA PODER USAR BOTONES 3 Y 4 COMO OPCION Y QUE NO QUEDE EN UN LOOP INFINITO
int VECES[6];
// VARIABLE PARA EL JUEGO DE LUCES DEL COMIENZO
int INTRO = 0;
// VARIABLE PARA EJECUTAR SOLO UNA VEZ EL USO DEL CANAL 1 EN EL MODO SETUP
int modoconfig = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
// put your setup code here, to run once:
MIDI.begin(MIDI_CHANNEL_OMNI);
//Serial.begin(115200); // ESTO SERIA PARA USAR EL ARDUINO POR USB
// ESTABLECER LOS PINS QUE USAN LOS BOTONES COMO ENTRADA Y ACTIVA LA RESISTENCIA INCORPORADA
for (int i = 0; i < 8; i++){ // PARA LOS 8 BOTONES
pinMode(boton[i], INPUT_PULLUP);
}
pinMode(botonMaster, INPUT_PULLUP); // PARA EL SWITCH DE MODOPLAY
// ESTABLECER LOS PINS DONDE ESTAN LOS LEDS COMO SALIDA
for (int i = 0; i < 6; i++){
pinMode(ledpin[i], OUTPUT);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
// put your main code here, to run repeatedly:
unsigned long tiempo = millis(); // ACA SE DEFINE LA VARIABLE TIEMPO PARA UTILIZAR LA OPCION DE BOTON PRESIONADO
while (INTRO == 0){
intro();
INTRO = 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
while (UNAVEZ == 0){ // CUANDO SE PRENDE LA BOTONERA SE ELIGE ENTRE MODO LEXICON (BOTON 3) Y PC (BOTON 4)
digitalWrite(ledpin[3] , HIGH); // LA DIFERENCIA ESTA EN EL MODO EN QUE EL PRENDIDO Y APAGADO DE LOS BOTONES SE COMPORTA
digitalWrite(ledpin[2] , HIGH); // SE PRENDEN LAS DOS LUCES DE LOS BOTONES 3 Y 4
estadoboton[2] = digitalRead(boton[2]);
estadoboton[3] = digitalRead(boton[3]);
if (estadoboton[2]!= anteriorboton[2] || estadoboton[3] != anteriorboton[3] ) { // SI SE PRESIONA EL BOTON 3 SE ACTIVA EL MODO LEXICON
if (estadoboton[2] == LOW){
for (int i = 0; i < 8; i++){
LEXICON[i] = 1; // MODO LEXICON ACTIVADO
}
for (int i = 0; i < 6; i++){
APAGAR[i] = 0; // EL MODO DE APAGAR BOTON ES MEDIANTE EL VALOR 0
}
APAGAR[6] = 127; // EN EL MODO LEXICON LOS BOTONES 7 Y 8 PRENDEN CADA VEZ QUE SE PRESIONAN
APAGAR[7] = 127;
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , LOW);
UNAVEZ = 1;
eligio3();
}
if (estadoboton[3] == LOW){ // SI SE PRESIONA EL BOTON 4 SE ACTIVA EL MODO PC
for (int i = 0; i < 8; i++){
LEXICON[i] = 0; // MODO LEXICON APAGADO MODO PC ACTIVADO
}
for (int i = 0; i < 6; i++){
APAGAR[i] = 127; // EL MODO DE APAGAR BOTON ES REPITIENDO EL MENSAJE 127 (BOTON ACTIVADO)
}
APAGAR[6] = 0; // EN EL MODO PC 7 Y 8 FUNCIONAN COMO TOGGLE CC
APAGAR[7] = 0;
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
UNAVEZ = 1; // PARA QUE SE EJECUTE SOLO UNA VEZ
eligio4();
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CHEQUEAR EL ESTADO DEL BOTON PLAY/SETUP (BOTON10)
ButtonState10 = digitalRead(botonMaster);
// comparar el estado ACTUAL del boton10 con el anterior PARA DETERMINAR SI FUE ACCIONADO
if (ButtonState10 != LastButtonState10) { // si el estado cambio ES PORQUE FUE ACCIONADO
if (ButtonState10 == LOW) {
// si el estado PASO DE HIGH A LOW FUE ACTIVADO EL MODO PLAY
switch (ACTIVARMASTER) { // SE USA EL SWITCH PARA INCORPORAR LAS DOS OPCIONES, 0 Y 127 PARA QUE SE TOMEN COMO ACTIVADO
case 127:
ACTIVARMASTER = 0;
MODOPLAY = 1;
break;
case 0:
ACTIVARMASTER = 127;
MODOPLAY = 1;
}
}
if (ButtonState10 == HIGH) {
// si el estado PASO DE LOW A HIGH FUE ACTIVADO EL MODO SETUP
switch (ACTIVARMASTER) {
case 127:
ACTIVARMASTER = 0;
MODOPLAY = 0;
break;
case 0:
ACTIVARMASTER = 127;
MODOPLAY = 0;
}
}
// un poco de delay para evitar el bouncing
delay(50);
}
// guardar el estado actual como el estado anterior - DE ESTA MANERA VOLVERA EL LOOP SOLO SI CAMBIA NUEVAMENTE EL ESTADO DEL BOTON PARA EL OTRO LADO
LastButtonState10 = ButtonState10;
///////////////////////////////////////////////////////////////////////////////
switch (MODOPLAY){
case 1: // MODOPLAY ACTIVADO, LOS SEIS BOTONES SE USAN PARA ACTIVAR O DESACTIVAR LOS FX, LOS BOTONES QUE QUEDAN Y LOS POTES VAN POR CANAL 1
APAGARLEDS = 0; // PARA QUE SE EJECUTE EL APAGADO DE LEDS CUANDO SE CAMBIE AL MODOSETUP
if (APAGARLEDS2 == 0){ // LOOP PARA APAGAR LOS LEDS QUE ESTABAN PRENDIDOS EN EL MODOSETUP (EL MODOSETUP ES EL MODOPLAY = 0)
apagartodo();
APAGARLEDS2 = 1; // ESTO ASEGURA QUE EL LOOP SE EJECUTE UNA SOLA VEZ, CUANDO ENTRA EN EL MODOPLAY
}
for (int i = 0; i < 6; i++){
if (MEMLED[i] == 1) { // ESTA SERIE DE LOOPS RESTITUYEN LOS LEDS QUE HABIAN QUEDADO PRENDIDOS ANTES
digitalWrite(ledpin[i] , HIGH);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// LA VARIABLE POT LEE LA ENTRADA ANALOGICA Y LO ALMACENA, SI ESE VALOR CAMBIA SE ENVIA A TRAVES DE MIDI CC
for (int i = 0; i < 3; i++){
pot[i] = (analogRead(potes[i])/8); // LEE LOS POTES, ES DECIR EL PIN DE ENTRADA Y LO ALMACENA EN POT
if (pot[i] != potant[i]){ // COMPARA POT CON EL ESTADO ANTERIOR POTANT, SI CAMBIO CONTINUA
MIDI.sendControlChange ( ccpot[i], pot[i], 1 ); // ENVIA EL CCPOT CON EL VALOR POT POR EL CANAL 1
}
potant[i] = pot[i]; // ACTUALIZA EL ESTADO DE POT PARA EL PROXIMO LOOP
delay(10);
}
///////////////////////////////////////////////////////////////////////////////////////////////
for (int i = 0; i < 6; i++){ // LOOP PARA LOS 6 BOTONES
estadoboton[i] = digitalRead(boton[i]);
if (estadoboton[i] != anteriorboton[i]) {
if (estadoboton[i] == LOW) {
switch (MEMLED[i]) {
case 0:
MIDI.sendControlChange ( CC[i], 127 ,1 );
digitalWrite(ledpin[i] , HIGH);
MEMLED[i] = 1;
if (LEXICON[i] == 0) {
delay(50);
MIDI.sendControlChange ( CC[i], 0 ,1 );
}
break;
case 1:
MIDI.sendControlChange ( CC[i], APAGAR[i] ,1 );
digitalWrite(ledpin[i] , LOW);
MEMLED[i] = 0;
if (LEXICON[i] == 0) {
delay(50);
MIDI.sendControlChange ( CC[i], 0 ,1 );
}
break;
}
}
delay(50);
}
anteriorboton[i] = estadoboton[i];
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for (int i = 06; i < 8; i++){ // LOOP PARA BOTONES 7 Y 8
estadoboton[i] = digitalRead(boton[i]);
if (estadoboton[i] != anteriorboton[i]) {
if (estadoboton[i] == LOW) {
switch (MEMLED[i]) {
case 0:
MIDI.sendControlChange ( CC[i], 127 ,1 );
digitalWrite(ledpin[i] , HIGH);
MEMLED[i] = 1;
if (LEXICON[i] == 1) {
delay(50);
MIDI.sendControlChange ( CC[i], 0 ,1 );
}
break;
case 1:
MIDI.sendControlChange ( CC[i], APAGAR[i] ,1 );
digitalWrite(ledpin[i] , LOW);
MEMLED[i] = 0;
if (LEXICON[i] == 1) {
delay(50);
MIDI.sendControlChange ( CC[i], 0 ,1 );
}
break;
}
}
delay(50);
}
anteriorboton[i] = estadoboton[i];
}
break;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 0: // MODOSETUP ACTIVADO, CADA UNO DE LOS SEIS BOTONES ACTUA COMO SELECTOR DE CANAL MIDI DEL 11 AL 16, LOS DOS BOTONES Y LOS POTES SE CAMBIAN AL CANAL SELECCIONADO CON CC NUEVOS
APAGARLEDS2 = 0; // PARA QUE SE EJECUTE EL APAGADO DE LEDS CUANDO SE CAMBIA AL MODOPLAY
if (APAGARLEDS == 0){ // LOOP PARA APAGAR LOS LEDS QUE ESTABAN PRENDIDOS EN EL MODOPLAY
apagartodo();
APAGARLEDS = 1; // SE ASEGURA QUE EL LOOP SE EJECUTE UNA SOLA VEZ
if (modoconfig == 0){
CANAL = 1;
BOTVARIABLE[6] = 3;
BOTVARIABLE[7] = 9;
POTVARIABLE[0] = 80;
POTVARIABLE[1] = 81;
POTVARIABLE[2] = 82;
POTVARIABLE[3] = 11;
modoconfig = 1;
}
}
for (int i = 0; i < 6; i++){
if (MEMCANAL[i] == 1) { // ESTA SERIE DE LOOPS ES PARA RESTITUIR LA SELECCION DE CANAL DE LA INSTANCIA DE MODOSETUP ANTERIOR
digitalWrite(ledpin[i] , HIGH);
}
}
////////////////////////////////////////////////////////////////////////////
for (int i = 0; i < 3; i++){ // MISMO COMPORTAMIENTO QUE EN EL MODOPLAY PERO CON EL CC VARIABLE Y EL CANAL TAMBIEN
pot[i] = (analogRead(potes[i])/8);
if (pot[i] != potant[i]){
MIDI.sendControlChange ( POTVARIABLE[i], pot[i], CANAL );
}
potant[i] = pot[i];
delay(10);
}
//////////////////////////////////////////////////////////////////////////////////////////////
for (int i = 0; i < 6; i++){ // LOOP PARA LOS 6 BOTONES EN MODOSETUP
estadoboton[i] = digitalRead(boton[i]);
if (estadoboton[i] != anteriorboton[i]) {
anteriorboton[i] = estadoboton[i];
if (estadoboton[i] == LOW) {
VECES[2] = 1;
VECES[3] = 1;
botonapretado[i] = tiempo;
apagartodo();
for (int i = 0; i < 6; i++)
MEMCANAL[i] = 0;
switch (i){
case 0:
digitalWrite(ledpin[0] , HIGH);
CANAL = 11;
MEMCANAL[0] = 1;
BOTVARIABLE[6] = 20;
BOTVARIABLE[7] = 21;
POTVARIABLE[0] = 102;
POTVARIABLE[1] = 103;
POTVARIABLE[2] = 104;
POTVARIABLE[3] = 83;
break;
case 1:
digitalWrite(ledpin[1] , HIGH);
CANAL = 12;
MEMCANAL[1] = 1;
BOTVARIABLE[6] = 22;
BOTVARIABLE[7] = 23;
POTVARIABLE[0] = 105;
POTVARIABLE[1] = 106;
POTVARIABLE[2] = 107;
POTVARIABLE[3] = 85;
break;
case 2:
digitalWrite(ledpin[2] , HIGH);
CANAL = 13;
MEMCANAL[2] = 1;
BOTVARIABLE[6] = 24;
BOTVARIABLE[7] = 25;
POTVARIABLE[0] = 108;
POTVARIABLE[1] = 109;
POTVARIABLE[2] = 110;
POTVARIABLE[3] = 86;
break;
case 3:
digitalWrite(ledpin[3] , HIGH);
CANAL = 14;
MEMCANAL[3] = 1;
BOTVARIABLE[6] = 26;
BOTVARIABLE[7] = 27;
POTVARIABLE[0] = 111;
POTVARIABLE[1] = 112;
POTVARIABLE[2] = 113;
POTVARIABLE[3] = 87;
break;
case 4:
digitalWrite(ledpin[4] , HIGH);
CANAL = 15;
MEMCANAL[4] = 1;
BOTVARIABLE[6] = 28;
BOTVARIABLE[7] = 29;
POTVARIABLE[0] = 114;
POTVARIABLE[1] = 115;
POTVARIABLE[2] = 116;
POTVARIABLE[3] = 89;
break;
case 5:
digitalWrite(ledpin[5] , HIGH);
CANAL = 16;
MEMCANAL[5] = 1;
BOTVARIABLE[6] = 30;
BOTVARIABLE[7] = 31;
POTVARIABLE[0] = 117;
POTVARIABLE[1] = 118;
POTVARIABLE[2] = 119;
POTVARIABLE[3] = 90;
break;
}
}
if (i == 0){
LUCECITAS = tiempo - botonapretado[0];
if (LUCECITAS >= tiempoLUCECITAS) { // SI EL TIEMPO APRETADO SUPERA LUCECITAS ENTRA EN MODO NAVIDEO
apagartodo();
NAVIDA();
}
}
if (i == 5){ // MANTENIENDO EL BOTON 6 PRESIONADO RESETEA LA BOTONERA
resetpresionado = tiempo - botonapretado[5];
if (resetpresionado >= tiemporeset) {
digitalWrite(ledpin[5] , LOW);
resetFunc();
}
}
if (tiempo - botonapretado[i] >= tiempoapretado) { // MISMO COMPORTAMIENTO QUE EL BOTON 1
if (VECES[i] < 2){
UNAVEZ = 0;
while (UNAVEZ == 0){
apagartodo();
MEMCANAL[i] = 0;
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[2] , HIGH);
estadoboton[2] = digitalRead(boton[2]);
estadoboton[3] = digitalRead(boton[3]);
if (estadoboton[2] != anteriorboton[2] || estadoboton[3] != anteriorboton[3]) {
if (estadoboton[2] == LOW){
LEXICON[i] = 1; // MODO LEXICON ACTIVADO (PARA ESTE BOTON ES MODO TOGGLE)
APAGAR[i] = 0; // EL MODO DE APAGAR BOTON ES MEDIANTE EL VALOR 0
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
UNAVEZ = 1;
eligio3();
VECES[i] = VECES[i] + 1;
}
if (estadoboton[3] == LOW){
LEXICON[i] = 0; // MODO LEXICON APAGADO MODO PC ACTIVADO (PARA ESTE BOTON ES MODO NO TOGGLE)
APAGAR[i] = 127; // EL MODO DE APAGAR BOTON ES REPITIENDO EL MENSAJE 127 (BOTON ACTIVADO)
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
UNAVEZ = 1; // PARA QUE SE EJECUTE SOLO UNA VEZ
eligio4();
VECES[i] = VECES[i] + 1;
}
}
}
}
}
// un poco de delay para evitar el bouncing
delay(50);
}
// guardar el estado actual como el estado anterior para la proxima vez
//anteriorboton[2] = estadoboton[2];
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for (int i = 6; i < 8; i++){ // LOOP PARA LOS BOTONES 7 Y 8 EN EL MODOSETUP
estadoboton[i] = digitalRead(boton[i]);
if (estadoboton[i] != anteriorboton[i]) {
if (estadoboton[i] == LOW) {
VECES[2] = 1;
VECES[3] = 1;
botonapretado[i] = tiempo;
switch (MEMLED[i]) {
case 1:
MIDI.sendControlChange ( BOTVARIABLE[i], 127 ,CANAL );
MEMLED[i] = 0;
if (LEXICON[i] == 1) {
delay(50);
MIDI.sendControlChange ( BOTVARIABLE[i], 0 ,CANAL );
}
break;
case 0: // SE APAGA EL BOTON
MIDI.sendControlChange ( BOTVARIABLE[i], APAGAR[i] ,CANAL );
MEMLED[i] = 1;
if (LEXICON[i] == 1) {
delay(50);
MIDI.sendControlChange ( BOTVARIABLE[i], 0 ,CANAL );
}
break;
}
}
if (tiempo - botonapretado[i] >= tiempoapretado) { // MISMO COMPORTAMIENTO QUE EL BOTON 1 PERO CON LAS OPCIONES AL REVES
UNAVEZ = 0;
while (UNAVEZ == 0){
apagartodo();
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[2] , HIGH);
estadoboton[2] = digitalRead(boton[2]);
estadoboton[3] = digitalRead(boton[3]);
if (estadoboton[2] != anteriorboton[2] || estadoboton[3] != anteriorboton[3]) {
if (estadoboton[2] == LOW){
LEXICON[i] = 1; // MODO LEXICON ACTIVADO (PARA ESTE BOTON ES MODO NO TOGGLE)
APAGAR[i] = 127; // EL MODO DE APAGAR BOTON ES MEDIANTE EL VALOR 0
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
UNAVEZ = 1;
eligio3();
}
if (estadoboton[3] == LOW){
LEXICON[i] = 0; // MODO LEXICON APAGADO MODO PC ACTIVADO (PARA ESTE BOTON ES MODO TOGGLE)
APAGAR[i] = 0; // EL MODO DE APAGAR BOTON ES REPITIENDO EL MENSAJE 127 (BOTON ACTIVADO)
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
UNAVEZ = 1; // PARA QUE SE EJECUTE SOLO UNA VEZ
eligio4();
}
}
}
}
// un poco de delay para evitar el bouncing
delay(50);
}
// guardar el estado actual como el estado anterior para la proxima vez
anteriorboton[i] = estadoboton[i];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
break;
}
}
void eligio3(){
digitalWrite(ledpin[2] , HIGH);
delay(500);
digitalWrite(ledpin[2] , LOW);
delay(500);
digitalWrite(ledpin[2] , HIGH);
delay(500);
digitalWrite(ledpin[2] , LOW);
delay(500);
digitalWrite(ledpin[2] , HIGH);
delay(500);
digitalWrite(ledpin[2] , LOW);
delay(500);
digitalWrite(ledpin[2] , HIGH);
delay(500);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , LOW);
UNAVEZ = 1;
}
void eligio4(){
digitalWrite(ledpin[3] , HIGH);
delay(500);
digitalWrite(ledpin[3] , LOW);
delay(500);
digitalWrite(ledpin[3] , HIGH);
delay(500);
digitalWrite(ledpin[3] , LOW);
delay(500);
digitalWrite(ledpin[3] , HIGH);
delay(500);
digitalWrite(ledpin[3] , LOW);
delay(500);
digitalWrite(ledpin[3] , HIGH);
delay(500);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , LOW);
UNAVEZ = 1;
}
void apagartodo(){
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[0] , LOW);
}
void intro(){
digitalWrite(ledpin[0] , HIGH); //SUBE
delay(75);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[1] , HIGH);
delay(75);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[2] , HIGH);
delay(75);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , HIGH);
delay(75);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[4] , HIGH);
delay(75);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[5] , HIGH);
delay(75);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[4] , HIGH); // BAJA
delay(75);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[3] , HIGH);
delay(75);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[2] , HIGH);
delay(75);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[1] , HIGH);
delay(75);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[0] , HIGH); // SUBE
delay(75);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[1] , HIGH);
delay(75);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[2] , HIGH);
delay(75);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , HIGH);
delay(75);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[4] , HIGH);
delay(75);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[5] , HIGH);
delay(75);
digitalWrite(ledpin[5] , LOW);
delay(1000);
}
void NAVIDA() {
int luces = 1;
delay(1000);
digitalWrite(ledpin[0] , HIGH); //SUBE
delay(100);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[1] , HIGH);
delay(100);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[2] , HIGH);
delay(100);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[3] , HIGH);
delay(100);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[4] , HIGH);
delay(100);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[5] , HIGH);
delay(100);
digitalWrite(ledpin[5] , LOW);
delay(250);
while (luces = 1){
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
digitalWrite(ledpin[0] , HIGH);
digitalWrite(ledpin[2] , HIGH);
digitalWrite(ledpin[4] , HIGH);
delay (750);
digitalWrite(ledpin[0] , LOW);
digitalWrite(ledpin[2] , LOW);
digitalWrite(ledpin[4] , LOW);
digitalWrite(ledpin[1] , HIGH);
digitalWrite(ledpin[3] , HIGH);
digitalWrite(ledpin[5] , HIGH);
delay (750);
digitalWrite(ledpin[1] , LOW);
digitalWrite(ledpin[3] , LOW);
digitalWrite(ledpin[5] , LOW);
delay (750);
digitalWrite(ledpin[0] , HIGH); //SUBE
delay(150);
digitalWrite(ledpin[1] , HIGH);
delay(150);
digitalWrite(ledpin[2] , HIGH);
delay(150);
digitalWrite(ledpin[3] , HIGH);
delay(150);
digitalWrite(ledpin[4] , HIGH);
delay(150);
digitalWrite(ledpin[5] , HIGH);
delay(150);
digitalWrite(ledpin[0] , LOW);
delay(150);
digitalWrite(ledpin[1] , LOW);
delay(150);
digitalWrite(ledpin[2] , LOW);
delay(150);
digitalWrite(ledpin[3] , LOW);
delay(150);
digitalWrite(ledpin[4] , LOW);
delay(150);
digitalWrite(ledpin[5] , LOW);
delay(150);
digitalWrite(ledpin[5] , HIGH); //BAJA
delay(150);
digitalWrite(ledpin[4] , HIGH);
delay(150);
digitalWrite(ledpin[3] , HIGH);
delay(150);
digitalWrite(ledpin[2] , HIGH);
delay(150);
digitalWrite(ledpin[1] , HIGH);
delay(150);
digitalWrite(ledpin[0] , HIGH);
delay(150);
digitalWrite(ledpin[5] , LOW);
delay(150);
digitalWrite(ledpin[4] , LOW);
delay(150);
digitalWrite(ledpin[3] , LOW);
delay(150);
digitalWrite(ledpin[2] , LOW);
delay(150);
digitalWrite(ledpin[1] , LOW);
delay(150);
digitalWrite(ledpin[0] , LOW);
delay(250);
}
}
Comments
Please log in or sign up to comment.