Paso 5: Plug and Play con el software
Ahora todo está listo para probar el sistema. Sacar su amado Arduino (o si eres scard su Ruggduino), copiar y pegar el código en su sketch de Arduino y modificarlo como sea necesario. Las mejoras son agradables
/*
Biblioteca de CharliePlexing
(c) por Olivier Chatelain 2014
Este código es CC-BY-SA-3.0
*/
#define CHARLIE_PINS 4
#define CHARLIE_FIRST 9
Configuración de la memoria
#define CHARLIE_COUNT CHARLIE_PINS*(CHARLIE_PINS-1)
Charlie Level (0 = apagado, 255 = máximo)
#define CHARLIE_LOW 0
#define CHARLIE_HIGH 255
#define CHARLIE_OFF 0
#define CHARLIE_MAX 255
Niveles de Charlie para ánodo/cátodo pin-pares
charliePins de uint8_t [CHARLIE_PINS] [CHARLIE_PINS];
#define CHARLIE_GREEN 0
#define CHARLIE_BLUE 1
#define CHARLIE_RED 2
int charlieRGB [CHARLIE_PINS] [3] = {{1, 2, 3}, {2, 3, 0}, {3, 0, 1}, {0, 1, 2}};
void charlieClear() {}
para (int i = 0; i < CHARLIE_PINS; i ++) {}
para (int j = 0; j < CHARLIE_PINS; j ++) {}
charliePins [i] [j] = CHARLIE_OFF;
}
}
}
void charlieSetAll() {}
para (int i = 0; i < CHARLIE_PINS; i ++) {}
para (int j = 0; j < CHARLIE_PINS; j ++) {}
charliePins [i] [j] = CHARLIE_MAX;
}
}
}
void charlieSetAllLevel (uint8_t nivel) {}
para (int i = 0; i < CHARLIE_PINS; i ++) {}
para (int j = 0; j < CHARLIE_PINS; j ++) {}
charliePins [i] [j] = nivel;
}
}
}
void charlieWrite (int fuente, int dst, uint8_t nivel) {}
charliePins [fuente % CHARLIE_PINS] [dst % CHARLIE_PINS] = nivel;
}
línea actual muestra
int charlie_line = CHARLIE_PINS-1;
void charliePlexLine (uint8_t nivel) {}
Desactivar la última línea aparecido
pinMode (CHARLIE_FIRST + charlie_line, entrada);
Si (++ charlie_line > = CHARLIE_PINS) charlie_line = 0;
int i = charlie_line;
int MasterPin = CHARLIE_FIRST + i;
Usar a otros como seguir pernos (alta o entrada)
para (int j = 0; j < CHARLIE_PINS; j ++) {}
int SlavePin = CHARLIE_FIRST + j;
Si (MasterPin! = SlavePin) {}
Si (charliePins [i] [j] > nivel) {}
pinMode (SlavePin, salida);
digitalWrite (SlavePin, bajo);
} else {}
pinMode (SlavePin, entrada);
}
}
}
pinMode (MasterPin, salida);
digitalWrite (MasterPin, alto);
}
void charliePlex() {}
Establecer una leadpin (bajo)
para (int i = 0; i < CHARLIE_PINS; i ++) {}
para (int j = 0; j < CHARLIE_MAX; j ++) {}
charliePlexLine(j);
delayMicroseconds(10);
}
}
}
la rutina de instalación se ejecuta una vez al presionar reset:
void setup() {}
}
void loop() {}
//*
Muestra 1: LED(0,1) primera "A"
//
charlieClear();
charlieWrite(0,1,CHARLIE_MAX);
charliePlex();
//*/
/*
Ejemplo 2: Dimm blanco
para (int i = 0; i < 8; i ++) {}
charlieSetAllLevel (1 << i);
charliePlex();
}
para (int i = 7; i > -1; i--) {}
CHARLIE_PINS (1 << i);
charliePlex();
}
//*/
/*
Muestra 3: Alterna los colores
charlieClear();
para (int i = 0; i < CHARLIE_PINS; i ++) {}
charlieWrite (i, charlieRGB [i] [CHARLIE_RED], CHARLIE_MAX);
}
charliePlex();
charlieClear();
para (int i = 0; i < CHARLIE_PINS; i ++) {}
charlieWrite (i, charlieRGB [i] [CHARLIE_GREEN], CHARLIE_MAX);
}
charliePlex();
charlieClear();
para (int i = 0; i < CHARLIE_PINS; i ++) {}
charlieWrite (i, charlieRGB [i] [CHARLIE_BLUE], CHARLIE_MAX);
}
charliePlex();
//*/
}
¡ Disfrútala!