Schritt 5: Plug & Play mit der software
Jetzt ist alles bereit, das System zu testen. Nehmen Sie Ihre geliebten Arduino (oder wenn Sie Scard Ihr Ruggduino), kopieren den Code in die Arduino-Skizze und nach Bedarf zu ändern. Verbesserungsvorschläge sind willkommen
/*
CharliePlexing Bibliothek
(c) von Olivier Chatelain 2014
Dieser Code ist CC-durch-SA-3.0
*/
#define CHARLIE_PINS 4
#define CHARLIE_FIRST 9
Setup der Speicher
#define CHARLIE_COUNT CHARLIE_PINS*(CHARLIE_PINS-1)
Charlie Level (0 = aus, 255 = Max)
#define CHARLIE_LOW 0
#define CHARLIE_HIGH 255
#define CHARLIE_OFF 0
#define CHARLIE_MAX 255
Charlie-Level für Anode/Kathode Pin-Paare
uint8_t CharliePins [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() {}
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
für (Int j = 0; j < CHARLIE_PINS; j++) {}
CharliePins [i] [j] = CHARLIE_OFF;
}
}
}
void charlieSetAll() {}
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
für (Int j = 0; j < CHARLIE_PINS; j++) {}
CharliePins [i] [j] = CHARLIE_MAX;
}
}
}
void CharlieSetAllLevel (uint8_t Ebene) {}
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
für (Int j = 0; j < CHARLIE_PINS; j++) {}
CharliePins [i] [j] = Ebene;
}
}
}
void CharlieWrite (Int Int Src dst, uint8_t Ebene) {}
CharliePins [Src % CHARLIE_PINS] [dst % CHARLIE_PINS] = Ebene;
}
aktuelle Zeile angezeigt
Int Charlie_line = CHARLIE_PINS-1;
void CharliePlexLine (uint8_t Ebene) {}
Deaktivieren der letzten Zeile angezeigt
PinMode (CHARLIE_FIRST + Charlie_line, Eingabe);
Wenn (++ Charlie_line > = CHARLIE_PINS) Charlie_line = 0;
Int ich = Charlie_line;
Int MasterPin = CHARLIE_FIRST + i;
Andere wie Stifte (HIGH oder INPUT) folgen
für (Int j = 0; j < CHARLIE_PINS; j++) {}
Int SlavePin = CHARLIE_FIRST + j;
Wenn (MasterPin! = SlavePin) {}
Wenn (CharliePins [i] [j] > Ebene) {}
PinMode (SlavePin, OUTPUT);
DigitalWrite (SlavePin, LOW);
} else {}
PinMode (SlavePin, Eingabe);
}
}
}
PinMode (MasterPin, OUTPUT);
DigitalWrite (MasterPin, hoch);
}
void charliePlex() {}
Legen Sie eine Leadpin (LOW)
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
für (Int j = 0; j < CHARLIE_MAX; j++) {}
charliePlexLine(j);
delayMicroseconds(10);
}
}
}
die Setup-Routine ausgeführt wird, wenn Sie Reset drücken:
void setup() {}
}
void loop() {}
//*
Beispiel 1: Erste LED(0,1) "On"
//
charlieClear();
charlieWrite(0,1,CHARLIE_MAX);
charliePlex();
//*/
/*
Beispiel 2: Dimm weiß
für (Int ich = 0; ich < 8; i ++) {}
CharlieSetAllLevel (1 << i);
charliePlex();
}
für (Int ich = 7; ich >-1; ich--) {}
CHARLIE_PINS (1 << i);
charliePlex();
}
//*/
/*
Beispiel 3: Wechseln der Farben
charlieClear();
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
CharlieWrite (i, CharlieRGB [i] [CHARLIE_RED], CHARLIE_MAX);
}
charliePlex();
charlieClear();
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
CharlieWrite (i, CharlieRGB [i] [CHARLIE_GREEN], CHARLIE_MAX);
}
charliePlex();
charlieClear();
für (Int ich = 0; ich < CHARLIE_PINS; i ++) {}
CharlieWrite (i, CharlieRGB [i] [CHARLIE_BLUE], CHARLIE_MAX);
}
charliePlex();
//*/
}
Genießen Sie es!