I have made the following code (its 16 blinkm's connected to 16 pushbuttons with midi-in, midi-out will be added soon) - everything works fine so far except the code is not very elegant
I want to start using for loops and functions but i can't wrap my head around how to start.
I am not looking for a direct coding solution but more advice as to where to go from here...
Maybe some helpfull tips so i can actually learn something here.
Thank you good people
#include "Wire.h"
#include "BlinkM_funcs.h"
// I2C Adres voor alle blinkm's in het netwerk:
byte blinkm_all = 0x00;
// Variabelen voor LED'S (I2C adressen) :
byte LED1 = 9;
byte LED2 = 10;
byte LED3 = 11;
byte LED4 = 12;
byte LED5 = 13;
byte LED6 = 14;
byte LED7 = 15;
byte LED8 = 16;
byte LED9 = 17;
byte LED10 = 18;
byte LED11 = 19;
byte LED12 = 20;
byte LED13 = 21;
byte LED14 = 22;
byte LED15 = 23;
byte LED16 = 24;
// Variabele voor MIDI in:
byte incomingByte;
const int PUSH_BUTTON_INPUT_PIN = 2;
const int PUSH_BUTTON_INPUT_PIN2 = 3;
const int PUSH_BUTTON_INPUT_PIN3 = 4;
const int PUSH_BUTTON_INPUT_PIN4 = 5;
const int PUSH_BUTTON_INPUT_PIN5 = 6;
const int PUSH_BUTTON_INPUT_PIN6 = 7;
const int PUSH_BUTTON_INPUT_PIN7 = 8;
const int PUSH_BUTTON_INPUT_PIN8 = 9;
const int PUSH_BUTTON_INPUT_PIN9 = 10;
const int PUSH_BUTTON_INPUT_PIN10 = 11;
const int PUSH_BUTTON_INPUT_PIN11 = 12;
const int PUSH_BUTTON_INPUT_PIN12 = 16;
const int PUSH_BUTTON_INPUT_PIN13 = 17;
const int PUSH_BUTTON_INPUT_PIN14 = 18;
const int PUSH_BUTTON_INPUT_PIN15 = 19;
const int PUSH_BUTTON_INPUT_PIN16 = 22;
int PUSH_BUTTON_STATE1 = 0;
int PUSH_BUTTON_STATE2 = 0;
int PUSH_BUTTON_STATE3 = 0;
int PUSH_BUTTON_STATE4 = 0;
int PUSH_BUTTON_STATE5 = 0;
int PUSH_BUTTON_STATE6 = 0;
int PUSH_BUTTON_STATE7 = 0;
int PUSH_BUTTON_STATE8 = 0;
int PUSH_BUTTON_STATE9 = 0;
int PUSH_BUTTON_STATE10 = 0;
int PUSH_BUTTON_STATE11 = 0;
int PUSH_BUTTON_STATE12 = 0;
int PUSH_BUTTON_STATE13 = 0;
int PUSH_BUTTON_STATE14 = 0;
int PUSH_BUTTON_STATE15 = 0;
int PUSH_BUTTON_STATE16 = 0;
int PUSH_BUTTON_PRESSED;
void setup() {
Serial.begin(31250);
BlinkM_begin();
pinMode(PUSH_BUTTON_INPUT_PIN, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN2, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN3, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN4, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN5, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN6, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN7, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN8, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN9, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN10, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN11, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN12, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN13, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN14, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN15, INPUT);
pinMode(PUSH_BUTTON_INPUT_PIN16, INPUT);
}
void loop() {
PUSH_BUTTON_STATE1 = digitalRead(PUSH_BUTTON_INPUT_PIN);
PUSH_BUTTON_STATE2 = digitalRead(PUSH_BUTTON_INPUT_PIN2);
PUSH_BUTTON_STATE3 = digitalRead(PUSH_BUTTON_INPUT_PIN3);
PUSH_BUTTON_STATE4 = digitalRead(PUSH_BUTTON_INPUT_PIN4);
PUSH_BUTTON_STATE5 = digitalRead(PUSH_BUTTON_INPUT_PIN5);
PUSH_BUTTON_STATE6 = digitalRead(PUSH_BUTTON_INPUT_PIN6);
PUSH_BUTTON_STATE7 = digitalRead(PUSH_BUTTON_INPUT_PIN7);
PUSH_BUTTON_STATE8 = digitalRead(PUSH_BUTTON_INPUT_PIN8);
PUSH_BUTTON_STATE9 = digitalRead(PUSH_BUTTON_INPUT_PIN9);
PUSH_BUTTON_STATE10 = digitalRead(PUSH_BUTTON_INPUT_PIN10);
PUSH_BUTTON_STATE11 = digitalRead(PUSH_BUTTON_INPUT_PIN11);
PUSH_BUTTON_STATE12 = digitalRead(PUSH_BUTTON_INPUT_PIN12);
PUSH_BUTTON_STATE13 = digitalRead(PUSH_BUTTON_INPUT_PIN13);
PUSH_BUTTON_STATE14 = digitalRead(PUSH_BUTTON_INPUT_PIN14);
PUSH_BUTTON_STATE15 = digitalRead(PUSH_BUTTON_INPUT_PIN15);
PUSH_BUTTON_STATE16 = digitalRead(PUSH_BUTTON_INPUT_PIN16);
if (PUSH_BUTTON_STATE1 == HIGH) { // Knop ingedrukt..
if(PUSH_BUTTON_PRESSED == 0){ // Checken of knop niet toevallig net al was ingedrukt..
BlinkM_setRGB(LED1,0x00,0x00,0xff); // LED1 wordt blauw.
PUSH_BUTTON_PRESSED = 1; // Wordt 1 want er is net een knop ingedrukt..
}
}
else {
PUSH_BUTTON_PRESSED = 0; // Counter gaat terug naar af..
BlinkM_setRGB(LED1,0x00,0x00,0x00); // LED1 wordt weer zwart want knop is niet meer ingedrukt..
}
if (PUSH_BUTTON_STATE2 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED2,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED2,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE3 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED3,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED3,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE4 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED4,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED4,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE5 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED5,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED5,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE6 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED6,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED6,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE7 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED7,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED7,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE8 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED8,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED8,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE9 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED9,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED9,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE10 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED10,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED10,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE11 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED11,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED11,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE12 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED12,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED12,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE13 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED13,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED13,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE14 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED14,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED14,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE15 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED15,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED15,0x00,0x00,0x00);
}
if (PUSH_BUTTON_STATE16 == HIGH) {
if(PUSH_BUTTON_PRESSED == 0){
// turn LED on:
BlinkM_setRGB(LED16,0x00,0x00,0xff);
PUSH_BUTTON_PRESSED = 1;
}
}
else {
PUSH_BUTTON_PRESSED = 0;
BlinkM_setRGB(LED16,0x00,0x00,0x00);
}
// MIDI-IN CODE >>>>>>>>>>>>
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte== 144){ // Note on midi channel 1
BlinkM_setRGB(LED1,0x00,0x00,0xff);
}
else if (incomingByte== 128){ // Note off midi channel 1
BlinkM_setRGB(LED1,0x00,0x00,0x00);
}
}
if (incomingByte== 145){ // Note on midi channel 2
BlinkM_setRGB(LED2,0x00,0xff,0x00);
}
else if (incomingByte== 129){ // Note off midi channel 2
BlinkM_setRGB(LED2,0x00,0x00,0x00);
}
if (incomingByte== 146){ // Note on midi channel 3
BlinkM_setRGB(LED3,0xff,0x00,0x00);
}
else if (incomingByte== 130){ // Note off midi channel 3
BlinkM_setRGB(LED3,0x00,0x00,0x00);
}
}