Stap 5:3 van de 3 LED-Display-voorbeeld
U kunt zien de afbeelding met de LED's weergegeven dit werd gedaan met behulp van de onderstaande code. De code is ook als een Ino bestand bijgevoegd. De LEDs verlicht zijn ingesteld door de 0x02, 0x05, 0x02. de decimale weergave van de hexadecimale waarden is 00000010,00000101,00000010. U kunt zien hoe deze waarden overeenkomen met de weergave.
Als u wilt proberen dit uit voor jezelf de code is hieronder beschikbaar, enkel exemplaar het circuit vanaf stap 3!
/ * Transistor Multiplexing van 3 x 3 LEDs
Door: Marty Peltz
Datum: 7/19/2013
Doel: Controle 9 LEDs in een patroon van de 3 x 3 met behulp van multiplex.
Gebruikt in Martin Peltz van Instructiable
*/
/ *** variabelen *** /
char col1_cathode = 0;
char col2_cathode = 1;
char col3_cathode = 2;
char row1_anode = 3;
char row2_anode = 4;
char row3_anode = 5;
VOID Setup
{
Set Pins naar uitgangen
pinMode (col1_cathode, OUTPUT);
pinMode (col2_cathode, OUTPUT);
pinMode (col3_cathode, OUTPUT);
pinMode (row1_anode, OUTPUT);
pinMode (row2_anode, OUTPUT);
pinMode (row3_anode, OUTPUT);
uitschakelen van alle GPIO pinnen
digitalWrite (col1_cathode, laag);
digitalWrite (col2_cathode, laag);
digitalWrite (col3_cathode, laag);
digitalWrite (row1_anode, laag);
digitalWrite (row2_anode, laag);
digitalWrite (row3_anode, laag);
}
void loop
{
display_LED(0x02,0x05,0x02);
}
/ *** weergeven LED functie *** /
/ * Doel: deze functie oproepen met de hexadecimale parameter die u wilt weergeven
* Opmerking: Deze functie controleert de kathode, in mijn geval beheersen de kolommen
*/
VOID display_LED (char c1, c2 char char c3)
{
row_anode(C1); Oproep row_anode met eerste hexadecimale waarde
digitalWrite (col1_cathode, hoge); De eerste kolom weergeven
delay(1); Een korte vertraging wachten zodat de LED voor 1ms brandt
digitalWrite (col1_cathode, laag); eerste kolom uitschakelen voordat u verdergaat
row_anode(C2); Oproep row_anode met tweede hexadecimale waarde
digitalWrite (col2_cathode, hoge); De tweede kolom weergeven
delay(1); Een korte vertraging wachten zodat de LED voor 1ms brandt
digitalWrite (col2_cathode, laag); tweede kolom uitschakelen voordat u verdergaat
row_anode(C3); Oproep row_anode met tweede hexadecimale waarde
digitalWrite (col3_cathode, hoge); De derde kolom weergeven
delay(1); Een korte vertraging wachten zodat de LED voor 1ms brandt
digitalWrite (col3_cathode, laag); derde kolom uitschakelen voordat u verdergaat
(Opmerking Wijzig de 1ms tot 100ms - 1s ziet u een verschil)
}
/ *** Kathode (kolommen) functie *** /
/ * Doel: waarde van de paramater nemen en inschakelen van verwante pinnen
* Opmerking: Als gevolg van gebruik van Arduinos digitalWrite moet u de pinnen, instellen
* maar als met behulp van DDRx/PORTx u een hexadecimale waarde in om de pinnen op een poort alleen toepassen kunt.
*/
VOID row_anode(char LEDs_on)
{
if(LEDs_on == 0x00)
{
digitalWrite (row1_anode, laag);
digitalWrite (row2_anode, laag);
digitalWrite (row3_anode, laag);
}
anders if(LEDs_on == 0x01)
{
digitalWrite (row1_anode, hoge);
digitalWrite (row2_anode, laag);
digitalWrite (row3_anode, laag);
}
anders if(LEDs_on == 0x02)
{
digitalWrite (row1_anode, laag);
digitalWrite (row2_anode, hoge);
digitalWrite (row3_anode, laag);
}
anders if(LEDs_on == 0x03)
{
digitalWrite (row1_anode, hoge);
digitalWrite (row2_anode, hoge);
digitalWrite (row3_anode, laag);
}
anders if(LEDs_on == 0x04)
{
digitalWrite (row1_anode, laag);
digitalWrite (row2_anode, laag);
digitalWrite (row3_anode, hoge);
}
anders if(LEDs_on == 0x05)
{
digitalWrite (row1_anode, hoge);
digitalWrite (row2_anode, laag);
digitalWrite (row3_anode, hoge);
}
anders if(LEDs_on == 0x06)
{
digitalWrite (row1_anode, laag);
digitalWrite (row2_anode, hoge);
digitalWrite (row3_anode, hoge);
}
anders if(LEDs_on == 0x07)
{
digitalWrite (row1_anode, hoge);
digitalWrite (row2_anode, hoge);
digitalWrite (row3_anode, hoge);
}
}