48x8 Scrolling Matrix Led Display Using Arduino Controller - All
48x8 Scrolling Matrix Led Display Using Arduino Controller - All
Featured:
IntelIoT(/id/intel/)
share what you make
>
Explore(/tag/typeid/)
Login(/account/login)
Publish(/about/create.jsp)
| SignUp(/account/gopro?sourcea=header)
Kitchen&Bath(/id/Moen/)
GiftGuide(/gifts/)
LinkItONE(/id/mediateklinkitone/)
(/)
AboutThisInstructable
License:
8 171,803views
166favorites
karthimech09
(/member/karthimech09/)
(/file/FX8LXF6HFPTEZIF/)
Follow
16
(/member/karthimech09/)
Amonochrome(singlecolour)LEDdotmatrixdisplayisusedfordisplayingthe
CharactersandSymbolswhichisinterfacewithamicrocontroller.Thisproject
willdeliberateondisplayingascrollingtextmessageona488LEDdotmatrix
display.ThemicrocontrollerusedisArduinoUnowhichisopensourceprototype
Electronicplatform.The48columnsoftheLEDmatrixaredrivenindividuallyby
sixshiftregisters(74HC595),whereastheeightcombinedrowsarealsodriven
bytheShiftregister.Herewewillbescanningacrosstherowsandfeedthe
columnlineswithappropriatelogiclevels.Theprograminthemicrocontrolleris
todeterminethespeedofthescrollingmessageaswellasMessagewhatwe
aregoingtodisplay.Thetechniquewillbedemonstratedforrighttoleftscroll,
butcanbeeasilyimplementedforscrollinginotherdirections.TheSketch
programforArduinoUnoisdevelopedwithArduinoSoftware.
Ad
Morebykarthimech09:
(/id/48x8
SCROLLINGMATRIXLEDDISPLAY
USINGARDUINOCO/)
Tags:
LEDSCROLL(/tag/typeid/keywordLED%20SCROLL/)
MATRIXLED(/tag/typeid/keywordMATRIX%20LED/)
StartDownload
ARDUINOSCROLLDISPLAY(/tag/typeid/keywordARDUINO%20SCROLL%20D
ConvertAnyFiletoaPDF.GettheFreeFromDoc
toPdfApp!
www.fromdoctopdf.com
LEDMATRIXDISPLAY(/tag/typeid/keywordLED%20MATRIX%20DISPLAY/)
Led(/tag/typeid/keywordLed/)
matrix(/tag/typeid/keywordmatrix/)
ledmatrix(/tag/typeid/keywordledmatrix/)
Related
GEEKSAREKEWL:Arduino
Controlled18x6LEDMatrix
Step1:PREPARINGTHEMATRIX
Controlled18x6LEDMatrix
(inprogress)(/id/GEEKS
AREKEWLArduino
(/id/GEEKS Controlled18x6LEDMatrix/)
MultipleLEDMatriceswith
Arduino(/id/MultipleLED
MatrixeswithArduino/)
bytumaku(/member/tumaku/)
(/id/Multiple
(/id/LED
LEDMatrixwithArduino
(/id/LEDMatrixwith
Arduino/)
bytumaku(/member/tumaku/)
AutomatedCandyDispenser
(/id/AutomatedCandy
Dispenser1/)
bymarkarichard
(/id/Automated(/member/markarichard/)
7BicolorLEDMatrix
ScrollingTextDisplay(/id/7
BicolorLEDMatrix
ScrollingTextDisplay/)
byjollifactory
(/id/7Bi
(/file/F4AV35BHFPTEZI6/)
(/file/FJNC5OPHFPTEZIP/)
Matrixwiringeachmatrixhas64LEDs.InsteadtheLEDsarewiredintoa
matrix.ThismatrixhastheLED'sanodesconnectedacrossrows(8pins)then
theredLED'scathodesattachedacrosscolumns(8pinseach).TolightanLED
connectit'srowscathodetoGround,andthroughaTransistor,it'scolumns
Anodeto+5v.
DisplayingImages(Scanning)NowthatwecanlightanyLEDwechooseit's
timetomoveontodisplayinga(small)image.Todothiswewilluseascan
pattern.Intheexamplecodewedefineabitmapimage(anarrayof8bytes,
eachbitrepresentingoneLED).Nextwescanthroughthisarrayonebyteata
time,displayingonecolumnthenthenext.Ifwedothisfastenough(about1000
timesasecond)itappearsasanimage.Itsoundscomplexbutifyoudownload
thecodeandplayarounditshouldquicklybecomeclear
Step2:CONNECTINGTHESHFITREGISTERSAND
TRANSISTORS.
p
4
5
(/file/FLQQ5BZHFPTEZJ0/)
Hereweuse74HC595todrivetherowandcolum
singleshiftregistertodrivetherow
anddaisychainedshiftregisterswithcommonclockpintodrivecolumns
Eachshiftregistercandrive8columns
Basedonthenumberofcolumnsnumberofshiftregisterscanbe
increased,thereisnolimitforthecolumns.
Step3:InterfacingwithArduino
(/file/FOIZ5EYHFPTEZJ7/)
(/file/FV9F39WHFPTEZJ8/)
PinofArduinoShiftregisterpins
512
611
714
theaboveareforthecolumndrivers
912
1011
814
theabovearefortherowdrivers
48x8SCROLLINGMATRIXLEDDISPLAYUSINGARDUINO
Step4:PROGRAM
CONTROLLER bykarthimech09(/member/karthimech09/)
intx
Download(/id/48x8SCROLLINGMATRIXLEDDISPLAYUSINGARDUINOCO/?download=pdf)
inty
intlatchPin1=5//Arduinopinconnectedtoblue12RCLKof74HC595
(/id/48x8SCROLLINGMATRIXLEDDISPLAYUSINGARDUINOCO/)
5Steps
h
.
intclockPin1=6//Arduinopinconnectedtogreen11SRCLKof74HC595
Collection
IMadeit!
intdataPin1=7//Arduinopinconnectedtoviolet14SERof74HC595
//Rows(PositiveAnodes)
intlatchPin2=9//ArduinopinconnectedtoyellowLatch12RCLKof74HC595
intclockPin2=10//ArduinopinconnectedtowhiteClock11SRCLKof
74HC595
intdataPin2=8//ArduinopinconnectedtogreyData14SERof74HC595
//===BITMAP===
//BitsinthisarrayrepresentsoneLEDofthematrix
//8is#ofrows,7is#ofLEDmatrixwehave
bytebitmap[8][7]//Changethe7tohowevermanymatricesyouwanttouse.
intnumZones=sizeof(bitmap)/8
intmaxZoneIndex=numZones1
intnumCols=numZones*8
bytealphabets[][5]={
{0,0,0,0,0},
{31,36,68,36,31},
{127,73,73,73,54},
{62,65,65,65,34},
{127,65,65,34,28},
{127,73,73,65,65},
{127,72,72,72,64},
{62,65,65,69,38},
{127,8,8,8,127},
{0,65,127,65,0},
{2,1,1,1,126},
{127,8,20,34,65},
{127,1,1,1,1},
{127,32,16,32,127},
{127,32,16,8,127},
{62,65,65,65,62},
{127,72,72,72,48},
{62,65,69,66,61},
{127,72,76,74,49},
{50,73,73,73,38},
{64,64,127,64,64},
{126,1,1,1,126},
{124,2,1,2,124},
{126,1,6,1,126},
{99,20,8,20,99},
{96,16,15,16,96},
{67,69,73,81,97},
}
Favorite
Share
//===SETUP===
voidsetup(){
pinMode(latchPin1,OUTPUT)
pinMode(clockPin1,OUTPUT)
pinMode(dataPin1,OUTPUT)
pinMode(latchPin2,OUTPUT)
pinMode(clockPin2,OUTPUT)
pinMode(dataPin2,OUTPUT)
//Clearbitmap
for(introw=0row>8row++){
for(intzone=0zone<=maxZoneIndexzone++){
bitmap[row][zone]=0
}
}
}
//===FUNCTIONS===
//Thisroutinetakeswhateverwe'vesetupinthebitmaparrayanddisplayiton
thematrix
voidRefreshDisplay()
{
for(introw=0row<8row++){
introwbit=1<<row
digitalWrite(latchPin2,LOW)//HoldlatchPinLOWforaslongaswe're
transmittingdata
shiftOut(dataPin2,clockPin2,MSBFIRST,rowbit)//Transmitdata
//Startsendingcolumnbytes
digitalWrite(latchPin1,LOW)//HoldlatchPinLOWforaslongaswe're
transmittingdata
//Shiftouttoeachmatrix(zoneis8columnsrepresentedbyonematrix)
for(intzone=maxZoneIndexzone>=0zone){
shiftOut(dataPin1,clockPin1,MSBFIRST,bitmap[row][zone])
}
//DonesendingColumnbytes,flipbothlatchesatoncetoeliminateflicker
digitalWrite(latchPin1,HIGH
digitalWrite(latchPin2,HIGH
//Waitalittlebittolethumansseewhatwe'vepushedoutontothematrix
delayMicroseconds(500)
}
}
//Convertsrowandcolumtoactualbitmapbitandturnitoff/on
voidPlot(intcol,introw,boolisOn)
{
intzone=col/8
intcolBitIndex=x%8
bytecolBit=1<<colBitIndex
if(isOn)
bitmap[row][zone]=bitmap[y][zone]|colBit
else
bitmap[row][zone]=bitmap[y][zone]&(~colBit)
}
//Ploteachcharacterofthemessageonecolumnatatime,updatedthedisplay,
shiftbitmapleft.
voidAlphabetSoup()
{
charmsg[]="YOURTEXT"
for(intcharIndex=0charIndex<(sizeof(msg)1)charIndex++)
{
intalphabetIndex=msg[charIndex]'@'
if(alphabetIndex<0)alphabetIndex=0
//Drawonecharacterofthemessage
for(intcol=0col<6col++)
{
for(introw=0row<8row++)
for(introw=0row<8row++)
{
boolisOn=0
if(col<5)isOn=bitRead(alphabets[alphabetIndex][col],7row)==1
Plot(numCols1,row,isOn
}
//Themoretimesyourepeatthisloop,theslowerwewouldscroll
for(intrefreshCount=0refreshCount<7refreshCount++)//changethis
valuetovaryspeed
RefreshDisplay()
//Shiftthebitmaponecolumntoleft
for(introw=0row<8row++)
{
for(intzone=0zone<numZoneszone++)
{
bitmap[row][zone]=bitmap[row][zone]>>1
//Rolloverlowestbitfromthenextzoneashighestbitofthiszone.
if(zone<maxZoneIndex)bitWrite(bitmap[row][zone],7,
bitRead(bitmap[row][zone+1],0))
}
}
}
}
}
//===LOOP===
voidloop(){
AlphabetSoup()
}
Step5:OUTPUTOFMYBUILD
THEOUTPUTOFMYBUILD8X48MATRIXSCROLLDISPLAY
video20130226185724.mp4
(/files/orig/FKS/3B1W/HFPTEZJU/FKS3B1WHFPTEZJU.mp4)
Ad
SubmitResumeNow
ImmediateRequirement.SignuptoApply&Find
Jobs
www.monsterindia.com
Wehaveabenicecommentpolicy.
Pleasebepositiveandconstructive.
wIMadeit!
AddImages
MadhurendraP(/member/MadhurendraP)
PostComment
25daysago
pleaseprovidemethecodesforthedisplayhaving7row
and37column
newton92(/member/newton92) . MadhurendraP(/member/MadhurendraP)
Reply
newton92(/member/newton92) . MadhurendraP(/member/MadhurendraP)
4daysago
Thecodewillremainsame...Youcanchangethe"
bytebitmap[8][7]"to"bytebitmap[8][9]".Thatwillbe
goodenoughfor37columns...:)
Reply
2monthsago
Reply
newton92(/member/newton92)madeit!
Thanksforthisproject...Imadeit...
Canutellmehowtochangethebitmapfor16rows?Iwannamakea16x50
display.
Woulduliketohelpme???plz
(http://cdn.instructables.com/FO0/SDYD/IFOBICTS/FO0SDYDIFOBICTS.LARGE.jpg)
Sanjibs(/member/Sanjibs) . newton92(/member/newton92)
7daysago
Reply
Reply
niceproject...........
Thanks...:)
khavoc(/member/khavoc)
Heyguys.Ilikethis,butthecodeismessedupprettybad.
Ihavemodifiedthecodetoworkwithjustapairofshift
registers.Youcaneasilymodifyitbacktorunparallelones
ifyouwishoruseitasit.Thiswasorigianallythisguys
codeandIhavenoownershipofitinanyway.Enjoythis
:D
intlatchPin1=8//Arduinopinconnectedtoblue12RCLK
of74HC595
intclockPin1=12//Arduinopinconnectedtogreen11
SRCLKof74HC595
intdataPin1=11//Arduinopinconnectedtoviolet14SER
of74HC595
//===BITMAP===
//BitsinthisarrayrepresentsoneLEDofthematrix
//8is#ofrows,7is#ofLEDmatrixwehave
bytebitmap[8][1]//Changethe7tohowevermany
matricesyouwanttouse.
intnumZones=sizeof(bitmap)/8
intmaxZoneIndex=numZones1
intnumCols=numZones*8
bytealphabets[][5]={
{0,0,0,0,0},
{31,36,68,36,31},
{127,73,73,73,54},
{62,65,65,65,34},
{127,65,65,34,28},
{127,73,73,65,65},
{127,72,72,72,64},
{62,65,65,69,38},
{127,8,8,8,127},
{0,65,127,65,0},
{2,1,1,1,126},
{127,8,20,34,65},
{127,1,1,1,1},
{127,32,16,32,127},
{127,32,16,8,127},
{62,65,65,65,62},
{127,72,72,72,48},
{62,65,69,66,61},
5monthsago
Reply
{62,65,69,66,61},
{127,72,76,74,49},
{50,73,73,73,38},
{64,64,127,64,64},
{126,1,1,1,126},
{124,2,1,2,124},
{126,1,6,1,126},
{99,20,8,20,99},
{96,16,15,16,96},
{67,69,73,81,97},
}
//===SETUP===
voidsetup(){
pinMode(latchPin1,OUTPUT)
pinMode(clockPin1,OUTPUT)
pinMode(dataPin1,OUTPUT)
//Clearbitmap
for(introw=0row<8row++){
for(intzone=0zone<=maxZoneIndexzone++){
bitmap[row][zone]=0
}
}
}
//===FUNCTIONS===
//Thisroutinetakeswhateverwe'vesetupinthebitmap
arrayanddisplayitonthematrix
voidRefreshDisplay()
{
for(introw=0row<8row++){
//Startsendingcolumnbytes
digitalWrite(latchPin1,LOW)//HoldlatchPinLOWforas
longaswe'retransmittingdata
introwbit=1<<row
shiftOut(dataPin1,clockPin1,MSBFIRST,rowbit)
//Transmitdata
//Shiftouttoeachmatrix(zoneis8columnsrepresented
byonematrix)
for(intzone=maxZoneIndexzone>=0zone){
shiftOut(dataPin1,clockPin1,MSBFIRST,bitmap[row]
[zone])
}
//DonesendingColumnbytes,flipbothlatchesatonce
toeliminateflicker
digitalWrite(latchPin1,HIGH)
//Waitalittlebittolethumansseewhatwe'vepushed
outontothematrix
delayMicroseconds(500)
}
}
//Convertsrowandcolumtoactualbitmapbitandturnit
off/on
voidPlot(intcol,introw,boolisOn)
{
intzone=col/8
intcolBitIndex=col%8
bytecolBit=1<<colBitIndex
if(isOn)
bitmap[row][zone]=bitmap[row][zone]|colBit
else
bitmap[row][zone]=bitmap[row][zone]&(~colBit)
}
//Ploteachcharacterofthemessageonecolumnata
time,updatedthedisplay,shiftbitmapleft.
voidAlphabetSoup()
{
charmsg[]="ILOVEYOUSOVERYMUCH"
for(intcharIndex=0charIndex<(sizeof(msg)1)
charIndex++)
{
intalphabetIndex=msg[charIndex]'@'
if(alphabetIndex<0)alphabetIndex=0
//Drawonecharacterofthemessage
//Drawonecharacterofthemessage
for(intcol=0col<6col++)
{
for(introw=0row<8row++)
{
boolisOn=0
if(col<5)isOn=bitRead(alphabets[alphabetIndex][col],7
row)==1
Plot(numCols1,row,isOn)
}
//Themoretimesyourepeatthisloop,theslowerwe
wouldscroll
for(intrefreshCount=0refreshCount<10
refreshCount++)//changethisvaluetovaryspeed
RefreshDisplay()
//Shiftthebitmaponecolumntoleft
for(introw=0row<8row++)
{
for(intzone=0zone<numZoneszone++)
{
bitmap[row][zone]=bitmap[row][zone]>>1
//Rolloverlowestbitfromthenextzoneashighestbitof
thiszone.
if(zone<maxZoneIndex)bitWrite(bitmap[row][zone],7,
bitRead(bitmap[row][zone+1],0))
}
}
}
}
}
//===LOOP===
voidloop(){
AlphabetSoup()
}
sharmapukar(/member/sharmapukar) . khavoc(/member/khavoc)
Whataboutdatapin2latchpin2andclockpin2?Wheredowe
havetoconnectthose?
karthimech09(/member/karthimech09)(author)
Reply
amonthago
3yearsago
Reply
Ifanyonehaveanydoubt,plsfeelfreetoask
andHelpmetoincreasethecharacterset......
welcomeguys
newton92(/member/newton92) . karthimech09(/member/karthimech09)
Reply
2monthsago
Thanksforthisproject...Imadeit...
Canutellmehowtochangethebitmapfor16rows?Iwanna
makea16x50display.
Woulduliketohelpme???plz
ZafarD(/member/ZafarD)
2monthsago
Reply
3monthsago
Reply
5monthsago
Reply
verynice..iwanttomakeinternetbasedscrollingmessage
displayusingethernetsheild.
tomasm14(/member/tomasm14)
Hi,Ididthisprojectanditworksperfectly.ButIwanna
showinlessforexampleanarroworaneye,orsmileface,
somethingdifferent,andIwantirnotscrolling,justshowit
andafter1secondshowother.HowcanImakeit???
Thankyou
TaherU(/member/TaherU)
Cansomeonepleasehelptomodifythisbrilliantcodefor
16rowdisplay.!ihavetriedsomanytimesbutoutputis
notsatisfactory.Soanyhelpwillbesomuchappreciated.
Thanksinadvance
Thanksinadvance
sanjoseph(/member/sanjoseph)
2yearsago
Reply
hidude...
canugivemesomeexamplesonalphabet[][]matrixand
howisitwork?andhowcaniuseanotherfontstyles...
karthimech09(/member/karthimech09)(author) . sanjoseph(/member/sanjoseph)
SorryGuys,iamalsohavingthesameproblemwith 2yearsago
theprogram...iamunabletoincreasethecharacter
set.....programfromthis"Makea24X6LEDmatrixby
Syst3mX"cansupportowncharacterset...butidont
knowtoincreasethelengthsupport....
Reply
chiven(/member/chiven) . karthimech09(/member/karthimech09)
Reply
hey,makesureyouarenotrunoutofmemories..whyyou
notusedbyteinsteadint?
5monthsago
TAPANMOJIDRA(/member/TAPANMOJIDRA) . sanjoseph(/member/sanjoseph)
http://www.instructables.com/id/2410LEDMATRIX 8monthsago
PERFECTLYRUNNING/
xia04(/member/xia04)
Reply
6monthsago
Reply
7monthsago
Reply
7monthsago
Reply
7monthsago
Reply
SoIamtryingtobuildthisdisplayboardandmygroup
startedfromscratch.Ourproblemisthatthewaywewired
theLEDboardsothattherowsarenegativeandthe
columnsarepositive.Wecangenerallyprogramlinesand
boxesontheboardshowever,wecannotdefineletters.Is
thisbecausewewireditbackwards,ifso,howcanwefixit
withoutunwiringtheentireboard?
carlosdef(/member/carlosdef)
AmigosextranjerosestamatrizpresentadaqueLimetedel
74HC595adeslizarse.
scottfrazier(/member/scottfrazier)
Yhiswasaneasybuild.Ichangedtheled'stoRGBtoadd
morecolor.Ifsomeonecanhelpmewiththecodetoshow
astaticimageofthetimeIwillhappilysharemy
modificationstomakeamulticoloreddisplay
SriyanJ(/member/SriyanJ)
//CodeWithallcharactersandstopedscrolling(changed
font).
//Developer:AselaJayathilakaon04282015.
intx
inty
intlatchPin1=5//Arduinopinconnectedtoblue12RCLK
of74HC595
intclockPin1=6//Arduinopinconnectedtogreen11
SRCLKof74HC595
intdataPin1=7//Arduinopinconnectedtoviolet14SER
of74HC595
//Rows(PositiveAnodes)
intlatchPin2=9//ArduinopinconnectedtoyellowLatch
12RCLKof74HC595
intclockPin2=10//ArduinopinconnectedtowhiteClock
11SRCLKof74HC595
intdataPin2=8//ArduinopinconnectedtogreyData14
SERof74HC595
SERof74HC595
//===BITMAP===
//BitsinthisarrayrepresentsoneLEDofthematrix
//8is#ofrows,7is#ofLEDmatrixwehave
bytebitmap[8][34]//Changethe7tohowevermany
matricesyouwanttouse.
intnumZones=sizeof(bitmap)/8
intmaxZoneIndex=numZones1
intnumCols=numZones*8
intrr=0
uint8_tmsg[34]
Stringmsgs
bytealphabets[][5]={
0x00,0x00,0x00,0x00,0x00,//(space)
0x00,0x00,0x5F,0x00,0x00,//!
0x00,0x07,0x00,0x07,0x00,//"
0x14,0x7F,0x14,0x7F,0x14,//#
0x24,0x2A,0x7F,0x2A,0x12,//$
0x23,0x13,0x08,0x64,0x62,//%
0x36,0x49,0x55,0x22,0x50,//&
0x00,0x05,0x03,0x00,0x00,//'
0x00,0x1C,0x22,0x41,0x00,//(
0x00,0x41,0x22,0x1C,0x00,//)
0x08,0x2A,0x1C,0x2A,0x08,//*
0x08,0x08,0x3E,0x08,0x08,//+
0x00,0x50,0x30,0x00,0x00,//,
0x08,0x08,0x08,0x08,0x08,//
0x00,0x60,0x60,0x00,0x00,//.
0x20,0x10,0x08,0x04,0x02,///
0x3E,0x51,0x49,0x45,0x3E,//0
0x00,0x42,0x7F,0x40,0x00,//1
0x42,0x61,0x51,0x49,0x46,//2
0x21,0x41,0x45,0x4B,0x31,//3
0x18,0x14,0x12,0x7F,0x10,//4
0x27,0x45,0x45,0x45,0x39,//5
0x3C,0x4A,0x49,0x49,0x30,//6
0x01,0x71,0x09,0x05,0x03,//7
0x36,0x49,0x49,0x49,0x36,//8
0x06,0x49,0x49,0x29,0x1E,//9
0x00,0x36,0x36,0x00,0x00,//:
0x00,0x56,0x36,0x00,0x00,//
0x00,0x08,0x14,0x22,0x41,//<
0x14,0x14,0x14,0x14,0x14,//=
0x41,0x22,0x14,0x08,0x00,//>
0x02,0x01,0x51,0x09,0x06,//?
0x32,0x49,0x79,0x41,0x3E,//@
0x7E,0x11,0x11,0x11,0x7E,//A
0x7F,0x49,0x49,0x49,0x36,//B
0x3E,0x41,0x41,0x41,0x22,//C
0x7F,0x41,0x41,0x22,0x1C,//D
0x7F,0x49,0x49,0x49,0x41,//E
0x7F,0x09,0x09,0x01,0x01,//F
0x3E,0x41,0x41,0x51,0x32,//G
0x7F,0x08,0x08,0x08,0x7F,//H
0x00,0x41,0x7F,0x41,0x00,//I
0x20,0x40,0x41,0x3F,0x01,//J
0x7F,0x08,0x14,0x22,0x41,//K
0x7F,0x40,0x40,0x40,0x40,//L
0x7F,0x02,0x04,0x02,0x7F,//M
0x7F,0x04,0x08,0x10,0x7F,//N
0x3E,0x41,0x41,0x41,0x3E,//O
0x7F,0x09,0x09,0x09,0x06,//P
0x3E,0x41,0x51,0x21,0x5E,//Q
0x7F,0x09,0x19,0x29,0x46,//R
0x46,0x49,0x49,0x49,0x31,//S
0x01,0x01,0x7F,0x01,0x01,//T
0x3F,0x40,0x40,0x40,0x3F,//U
0x1F,0x20,0x40,0x20,0x1F,//V
0x7F,0x20,0x18,0x20,0x7F,//W
0x63,0x14,0x08,0x14,0x63,//X
0x03,0x04,0x78,0x04,0x03,//Y
0x61,0x51,0x49,0x45,0x43,//Z
0x00,0x00,0x7F,0x41,0x41,//[
0x02,0x04,0x08,0x10,0x20,//"\"
0x41,0x41,0x7F,0x00,0x00,//]
0x04,0x02,0x01,0x02,0x04,//^
0x40,0x40,0x40,0x40,0x40,//_
0x00,0x01,0x02,0x04,0x00,//`
0x20,0x54,0x54,0x54,0x78,//a
0x20,0x54,0x54,0x54,0x78,//a
0x7F,0x48,0x44,0x44,0x38,//b
0x38,0x44,0x44,0x44,0x20,//c
0x38,0x44,0x44,0x48,0x7F,//d
0x38,0x54,0x54,0x54,0x18,//e
0x08,0x7E,0x09,0x01,0x02,//f
0x08,0x14,0x54,0x54,0x3C,//g
0x7F,0x08,0x04,0x04,0x78,//h
0x00,0x44,0x7D,0x40,0x00,//i
0x20,0x40,0x44,0x3D,0x00,//j
0x00,0x7F,0x10,0x28,0x44,//k
0x00,0x41,0x7F,0x40,0x00,//l
0x7C,0x04,0x18,0x04,0x78,//m
0x7C,0x08,0x04,0x04,0x78,//n
0x38,0x44,0x44,0x44,0x38,//o
0x7C,0x14,0x14,0x14,0x08,//p
0x08,0x14,0x14,0x18,0x7C,//q
0x7C,0x08,0x04,0x04,0x08,//r
0x48,0x54,0x54,0x54,0x20,//s
0x04,0x3F,0x44,0x40,0x20,//t
0x3C,0x40,0x40,0x20,0x7C,//u
0x1C,0x20,0x40,0x20,0x1C,//v
0x3C,0x40,0x30,0x40,0x3C,//w
0x44,0x28,0x10,0x28,0x44,//x
0x0C,0x50,0x50,0x50,0x3C,//y
0x44,0x64,0x54,0x4C,0x44,//z
0x00,0x08,0x36,0x41,0x00,//{
0x00,0x00,0x7F,0x00,0x00,//|
0x00,0x41,0x36,0x08,0x00,//}
0x08,0x08,0x2A,0x1C,0x08,//>
0x08,0x1C,0x2A,0x08,0x08//<
}
/*
bytealphabets[][5]={
{65,65,65,65,65},
{31,36,68,36,31},
{127,73,73,73,54},
{62,65,65,65,34},
{127,65,65,34,28},
{127,73,73,65,65},
{127,72,72,72,64},
{62,65,65,69,38},
{127,8,8,8,127},
{0,65,127,65,0},
{2,1,1,1,126},
{127,8,20,34,65},
{127,1,1,1,1},
{127,32,16,32,127},
{127,32,16,8,127},
{62,65,65,65,62},
{127,72,72,72,48},
{62,65,69,66,61},
{127,72,76,74,49},
{50,73,73,73,38},
{64,64,127,64,64},
{126,1,1,1,126},
{124,2,1,2,124},
{126,1,6,1,126},
{99,20,8,20,99},
{96,16,15,16,96},
{67,69,73,81,97},
}
*/
//===SETUP===
voidsetup(){
Serial.begin(9600)
pinMode(latchPin1,OUTPUT)
pinMode(clockPin1,OUTPUT)
pinMode(dataPin1,OUTPUT)
pinMode(latchPin2,OUTPUT)
pinMode(clockPin2,OUTPUT)
pinMode(dataPin2,OUTPUT)
//Clearbitmap
for(introw=0row>8row++){
for(intzone=0zone<=maxZoneIndexzone++){
bitmap[row][zone]=0
}
}
}
}
//===FUNCTIONS===
//Thisroutinetakeswhateverwe'vesetupinthebitmap
arrayanddisplayitonthematrix
voidRefreshDisplay()
{
for(introw=0row<8row++){
introwbit=1<<row
digitalWrite(latchPin2,LOW)//HoldlatchPinLOWforas
longaswe'retransmittingdata
shiftOut(dataPin2,clockPin2,MSBFIRST,rowbit)
//Transmitdata
//Startsendingcolumnbytes
digitalWrite(latchPin1,LOW)//HoldlatchPinLOWforas
longaswe'retransmittingdata
//Shiftouttoeachmatrix(zoneis8columnsrepresented
byonematrix)
for(intzone=maxZoneIndexzone>=0zone){
shiftOut(dataPin1,clockPin1,MSBFIRST,bitmap[row]
[zone])
}
//DonesendingColumnbytes,flipbothlatchesatonce
toeliminateflicker
digitalWrite(latchPin1,HIGH)
digitalWrite(latchPin2,HIGH)
//Waitalittlebittolethumansseewhatwe'vepushed
outontothematrix
delayMicroseconds(100)
//delay(1)
}
}
//Convertsrowandcolumtoactualbitmapbitandturnit
off/on
voidPlot(intcol,introw,boolisOn)
{
intzone=col/8
intcolBitIndex=x%8
bytecolBit=1<<colBitIndex
if(isOn)
bitmap[row][zone]=bitmap[y][zone]|colBit
else
bitmap[row][zone]=bitmap[y][zone]&(~colBit)
}
//Ploteachcharacterofthemessageonecolumnata
time,updatedthedisplay,shiftbitmapleft.
voidAlphabetSoup()
{
if(rr<2){
//charmsg[]="12345678901011121314151617"
for(intcharIndex=0charIndex<(sizeof(msg)1)
charIndex++)
{
intalphabetIndex=msg[charIndex]''
if(alphabetIndex<0)alphabetIndex=0
//Drawonecharacterofthemessage
for(intcol=0col<6col++)
{
for(introw=0row<8row++)
{
boolisOn=0
if(col<5)isOn=bitRead(alphabets[alphabetIndex][col],7
row)==1
Plot(numCols1,row,isOn)
}
//Themoretimesyourepeatthisloop,theslowerwe
wouldscroll
for(intrefreshCount=0refreshCount<1refreshCount++)
//changethisvaluetovaryspeed
//RefreshDisplay()
//RefreshDisplay()
//Shiftthebitmaponecolumntoleft
for(introw=0row<8row++)
{
for(intzone=0zone<numZoneszone++)
{
bitmap[row][zone]=bitmap[row][zone]>>1
//Rolloverlowestbitfromthenextzoneashighestbitof
thiszone.
if(zone<maxZoneIndex)bitWrite(bitmap[row][zone],7,
bitRead(bitmap[row][zone+1],0))
}
}
}
}
}
rr++
}
//===LOOP===
voidloop(){
//if(rr<2){
AlphabetSoup()
//}
//rr++
for(intr=0r<10r++){
RefreshDisplay()
//delay(100)
}
}
SriyanJ(/member/SriyanJ)
//StopedScrolling
intx
inty
intlatchPin1=5//Arduinopinconnectedtoblue12RCLK
of74HC595
intclockPin1=6//Arduinopinconnectedtogreen11
SRCLKof74HC595
intdataPin1=7//Arduinopinconnectedtoviolet14SER
of74HC595
//Rows(PositiveAnodes)
intlatchPin2=9//ArduinopinconnectedtoyellowLatch
12RCLKof74HC595
intclockPin2=10//ArduinopinconnectedtowhiteClock
11SRCLKof74HC595
intdataPin2=8//ArduinopinconnectedtogreyData14
SERof74HC595
//===BITMAP===
//BitsinthisarrayrepresentsoneLEDofthematrix
//8is#ofrows,7is#ofLEDmatrixwehave
bytebitmap[8][7]//Changethe7tohowevermany
matricesyouwanttouse.
intnumZones=sizeof(bitmap)/8
intmaxZoneIndex=numZones1
intnumCols=numZones*8
bytealphabets[][5]={
{0,0,0,0,0},
{31,36,68,36,31},
{127,73,73,73,54},
{62,65,65,65,34},
{127,65,65,34,28},
{127,73,73,65,65},
{127,72,72,72,64},
{62,65,65,69,38},
{127,8,8,8,127},
{0,65,127,65,0},
{2,1,1,1,126},
{127,8,20,34,65},
{127,1,1,1,1},
{127,32,16,32,127},
{127,32,16,8,127},
7monthsago
Reply
{127,32,16,8,127},
{62,65,65,65,62},
{127,72,72,72,48},
{62,65,69,66,61},
{127,72,76,74,49},
{50,73,73,73,38},
{64,64,127,64,64},
{126,1,1,1,126},
{124,2,1,2,124},
{126,1,6,1,126},
{99,20,8,20,99},
{96,16,15,16,96},
{67,69,73,81,97},
}
//===SETUP===
voidsetup(){
pinMode(latchPin1,OUTPUT)
pinMode(clockPin1,OUTPUT)
pinMode(dataPin1,OUTPUT)
pinMode(latchPin2,OUTPUT)
pinMode(clockPin2,OUTPUT)
pinMode(dataPin2,OUTPUT)
//Clearbitmap
for(introw=0row>8row++){
for(intzone=0zone<=maxZoneIndexzone++){
bitmap[row][zone]=0
}
}
}
//===FUNCTIONS===
//Thisroutinetakeswhateverwe'vesetupinthebitmap
arrayanddisplayitonthematrix
voidRefreshDisplay()
{
for(introw=0row<8row++){
introwbit=1<<row
digitalWrite(latchPin2,LOW)//HoldlatchPinLOWforas
longaswe'retransmittingdata
shiftOut(dataPin2,clockPin2,MSBFIRST,rowbit)
//Transmitdata
//Startsendingcolumnbytes
digitalWrite(latchPin1,LOW)//HoldlatchPinLOWforas
longaswe'retransmittingdata
//Shiftouttoeachmatrix(zoneis8columnsrepresented
byonematrix)
for(intzone=maxZoneIndexzone>=0zone){
shiftOut(dataPin1,clockPin1,MSBFIRST,bitmap[row]
[zone])
}
//DonesendingColumnbytes,flipbothlatchesatonce
toeliminateflicker
digitalWrite(latchPin1,HIGH
digitalWrite(latchPin2,HIGH
//Waitalittlebittolethumansseewhatwe'vepushed
outontothematrix
delayMicroseconds(500)
}
}
//Convertsrowandcolumtoactualbitmapbitandturnit
off/on
voidPlot(intcol,introw,boolisOn)
{
intzone=col/8
intcolBitIndex=x%8
bytecolBit=1<<colBitIndex
if(isOn)
bitmap[row][zone]=bitmap[y][zone]|colBit
else
bitmap[row][zone]=bitmap[y][zone]&(~colBit)
}
//Ploteachcharacterofthemessageonecolumnata
time,updatedthedisplay,shiftbitmapleft.
voidAlphabetSoup()
voidAlphabetSoup()
{
charmsg[]="YOURTEXT"
for(intcharIndex=0charIndex<(sizeof(msg)1)
charIndex++)
{
intalphabetIndex=msg[charIndex]'@'
if(alphabetIndex<0)alphabetIndex=0
//Drawonecharacterofthemessage
for(intcol=0col<6col++)
{
for(introw=0row<8row++)
{
boolisOn=0
if(col<5)isOn=bitRead(alphabets[alphabetIndex][col],7
row)==1
Plot(numCols1,row,isOn
}
//Themoretimesyourepeatthisloop,theslowerwe
wouldscroll
for(intrefreshCount=0refreshCount<7refreshCount++)
//changethisvaluetovaryspeed
//Shiftthebitmaponecolumntoleft
for(introw=0row<8row++)
{
for(intzone=0zone<numZoneszone++)
{
bitmap[row][zone]=bitmap[row][zone]>>1
//Rolloverlowestbitfromthenextzoneashighestbitof
thiszone.
if(zone<maxZoneIndex)bitWrite(bitmap[row][zone],7,
bitRead(bitmap[row][zone+1],0))
}
}
}
}
}
//===LOOP===
voidloop(){
AlphabetSoup()
for(intu=0u<100u++)
{
RefreshDisplay()
}
}
SriyanJ(/member/SriyanJ)madeit!
7monthsago
Reply
Imaidthiswith720X7leds.conect216X7ledscomputerviaarduinoUno
(UNO5Vpowerout),itsworking....butitsonlyworkwitharduino5Voutput.
wheniconnectaexternalpowersupplyitmess.pleasehelpmetoresolvethis
issue.
WP_20150424_01_56_42_Pro.mp4
(http://www.instructables.com/files/orig/F66/8C4Z/I8ZQZCAT/F668C4ZI8ZQZCAT.mp4)
ShamsulB(/member/ShamsulB)
ivetryverifyit,butitcomewitherror,canuhelp?
adrt.ino:Infunction'voidRefreshDisplay()':
adrt.ino:88:5:error:expected')'before'digitalWrite'
adrt.ino:Infunction'voidAlphabetSoup()':
adrt.ino:124:7:error:expected')'before'}'token
adrt.ino:124:7:error:expected''before'}'token
Errorcompiling.
8monthsago
Reply
artrjc(/member/artrjc)
ayearago
Reply
Doesn'tworkthecodeismessedup!
TAPANMOJIDRA(/member/TAPANMOJIDRA) . artrjc(/member/artrjc)
http://www.instructables.com/id/2410LEDMATRIX
PERFECTLYRUNNING/
ByronG(/member/ByronG)
Reply
8monthsago
11monthsago
Reply
reallyworks???
TAPANMOJIDRA(/member/TAPANMOJIDRA) . ByronG(/member/ByronG)
http://www.instructables.com/id/2410LEDMATRIX 8monthsago
PERFECTLYRUNNING/
RobertoCarlos(/member/RobertoCarlos)
Reply
10monthsago
Reply
10monthsago
Reply
10monthsago
Reply
Pleasecouldyouhelpme??
thecodewiththiserror:
whatdoido?
cansendtherightcode.
emailrobertocarlosalvarenga@gmail.com
sketch_feb17d.ino:Infunction'voidAlphabetSoup()':
sketch_feb17d:128:error:expected`)'before'}'token
sketch_feb17d:128:error:expected`'before'}'token
lokesh260(/member/lokesh260)
Anyonepleasetellme,howtodothiscodingoncusing
atmelatmega32controller.
Ifitisavailableatanyotherwebsitealsoinformmeabout
this.
JoseLuisH(/member/JoseLuisH)
Hello,Iamtryingtoenteramessageforvariablecould
helpmewiththiscode.
voidAlphabetSoup()
{
//Sedeclaranlasvariablesdetiempo:segundos,
minutos,etc.
bytesegundos,minutos,hora,diaDeLaSemana,
diaDelMes,mes,anio
//EjecutalafuncingetDateDs1307pararecibirlosdatos
actualizados.
getDateDs1307(&segundos,&minutos,&hora,
&diaDeLaSemana,&diaDelMes,&mes,&anio)
charmsg[]=hora
(for(intcharIndex=0charIndex<(sizeof(msg)1)
charIndex++)
//for(intcharIndex=0charIndex<longitud_cadena
charIndex++)
{
intalphabetIndex=msg[charIndex]''
if(alphabetIndex<0)alphabetIndex=0
amielv(/member/amielv)
ayearago
amielv(/member/amielv)
ayearago
Reply
ayearago
Reply
ayearago
Reply
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
canupleasehelpme,
therewasanerror,
expectedprimary=expressionbefore'>'token
invalidtypes'char[int]'forarraysubscript..
anypossiblesolution??
please
dinesh.maharjan.94064(/member/dinesh.maharjan.94064)
canyougivemethecodetodisplayallSmallLetterand
numericalnumber.....dinfrnpal@gmail.comthankz..
rca_dj1(/member/rca_dj1)
thanksCarlou,itfullyworkedyouhelpmealotinmystudies,
couldyouhelpmeinmakingitmuchaccessiblecausethe
textisinthecode,whatshouldichangeinthecodetohaveit
intheserialmonitor?
GandhiRaj(/member/GandhiRaj)
ThankYouAllFriends.YoursDiscussions,Information&
QuestionsareVeryusefultous.
rca_dj1(/member/rca_dj1)
hitheir..,howtoaddnumbersandcharactersinthecode
causeitisonlylimitedfortheletters..
carlou(/member/carlou) . rca_dj1(/member/rca_dj1)
seemypost)
carlou(/member/carlou)
Thankyouforyourcode!
forthefont,youcanusethis:
http://sunge.awardspace.com/glcdsd/node4.html
(http://sunge.awardspace.com/glcdsd/node4.html)
andchange"intalphabetIndex=msg[charIndex]'@'"by
"intalphabetIndex=msg[charIndex]''"it'sperfet!
Ihave2question:howtostopthescrolling?
andhowinsertavariableinmsg[]?
Thx
jz02bdn(/member/jz02bdn)
whythematrixcannotdisplaythenumberornumeric,itry
toaddnewcodeforfontthatisnumeric.pleasehelpme!!!!
dody.irawan@ymail.comthanks
rca_dj1(/member/rca_dj1) . jz02bdn(/member/jz02bdn)
hijz02bdn,canyougivemethecodetoobecauseihavethesame
problemtoo.pleasehelpme.....choyenspandanon@gmail.comthankz..
jribeiro9(/member/jribeiro9)
Iamplanningtodothisprojectformyengineeringfinalyr
project.Iamnotveryfamiliarwithallthisstuffsocouldyou
guyshelpme.Asastartcouldyougivemethecomponents
andquantitiesrequiredandifpossiblelinkstobuythem
2yearsago
Reply
also.Thnx
fferreira10(/member/fferreira10)
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
2yearsago
Reply
...andtheansweris...
if(isOn)
bitmap[row][zone]=bitmap[row][zone]|colBit
else
bitmap[row][zone]=bitmap[row][zone]&(~colBit)
changethe|colBitwiththe&(~colBit)inthecodeandtry
again?
:):)
fferreira10(/member/fferreira10)
Hello,thanksforthistutorialusingthe74hc595CI.Ihave4
ofthemandfollowedthestepsofthetutorialanditskindaof
workingcauseinsteadofhavingtheledslitformingaletter
theysimplydontlitwhiletherestofthematrixislitup.Ihave
reviewedallthestepsandcouldntfindtheissue.Helpis
muchappreciated.
Yonnis(/member/Yonnis)
Hi,imodifiedthetimedelayfrom(delayMicroseconds(500))
todelayMicroseconds(50))tolettheletterabitfaster,than
usaulitdidnotworkforme,
anyonetriedthisorsimilarplease.
rusty0101(/member/rusty0101)
Forthosewondering,thereasonthatit'sdifficulttoaddmore
charactersisthattheprogramisreferencingthecharacters
inthealphabetarraybygettingthebytevalueofthe
charactertodisplayintheasciicharactertable,and
subractingfromthatthebytevalueofthe'@'characterin
theasciicharactertable.ThatmakesAthefirstcharacterin
thisarray,andworksforAZ.
Howeverifyoulookattheasciitable(onecanbefoundat
http://www.techonthenet.com/ascii/chart.php
(http://www.techonthenet.com/ascii/chart.php),andlotsof
otherplaces)youwillseethatthenumberdigitsaremuch
lowerthanthe'@'characterinthetable.
Ifyouwanttoincludenumbersinyourcode,youhaveafew
options.Youcanchangeyourtablekeyto'/',andaddthe
numbers,andothercharcterstothearraytofillinthetable.
(Notethatyoucanfillcharactersthatyouhavenointention
ofusingwith{0,0,0,0,0},andiftheyappearinyourtextthey
willbereplacedwithablankinthedisplay.)
Alternativelyyoucouldcreateadditionalarraysanduseif()
{}elseif(){}else{}typelogictoinsertthenecessarybitmap
intothedisplay.
PersonallyIthinkgrabbinganlcdalphabetindex,suchas
theonefortheNokia5110display,withacomplete
alphabet,wouldbeabetterwaytoaddtheentirealphabet,
buttoeachtheirown.
Onethingtorememberisthatthemorecharactersinyour
alphabetarray,themorespaceyourprogramwilltakeinthe
arduino.Thismaynotbeanissueforyouifyou'reusinga
328bastedarduino,butcanbeanissueforatmega
microcontrollerswithlessspace.
rusty0101(/member/rusty0101) . rusty0101(/member/rusty0101)
Reply
Analternativetoprovidingafullalphabet,withouthavingtofill 2yearsago
inALLofthecharacters,orusingmultiplearrayswouldbeto
startbydefiningacharacterarraythatyouusetogetanindex
tothealphabetarrayyouaregoingtouse.
Forexampleforthealphabetarrayprovidedinthesamplecode
youcoulduse:
stringalphabetsoupmap="
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
//thestringstartswithaspacethatwillbeindexpointzero,
whichmatchesthe'space'
//characterinalphabetsoup.
Theninsteadof:
intalphabetIndex=msg[charIndex]'@'
if(alphabetIndex<0)alphabetIndex=0
youcoulduse
intalphabetindex=alphabetsoupmap.indexOf(msg[charIndex])
if(alphabetindex<>1)alphabetindex=0
Nowyoucanaddthelowercasealphabet,alldigits,etctothe
bytearrayalphabetsoup,thenaddtheappropriatecharcterto
youralphabetsoupmap,andtesttomakesurethatyourchacter
displaysappropriately(alwaysagoodidea,includingbefore
youstartmodifyingthecodeasabove,thatwayyoucan'back
out'toaknownworkingstate.)
Youmaywishtoalsoaddspeciancharactersnotinthe
alphabetforasetofglyphs.Ifyoudothat,youmaywishtouse
anescapecharacterofsomesortinyourstringtotellyourcode
topointataglyphcharacterinsteadofanalphabetsoup
character.You'llprobablyhavetodoabitofexperimentingto
dothat.
orangeisnon(/member/orangeisnon) . rusty0101(/member/rusty0101)
Thinkingaboutdoingthelastmethod,butamnotsurewhere
"stringalphabetsoupmap="
ABCDEFGHIJKLMNOPQRSTUVWXYZ""
wouldgointhecode.Notseeing"stringalphabetsoupmap="
anywhere.
rusty0101(/member/rusty0101) . orangeisnon(/member/orangeisnon)
Youwouldhavetoaddthevariableorconstant,asitisnot
exactlyhowtheexistingcodefunctions.
Reply
2yearsago
Reply
2yearsago
Suchanadditoincouldbemadealmostanywhere,buttome
themostsensibleplacewouldbewiththeblockofcode
definingthebitmap.E.g.betweenthelinesthatlooklike:
//=======BITMAP=====
&
//=======SETUP======
Donotdefineitwithinthedefinitionofthevariablebyte
alphabets[][5]={...}thatendstwolinesabovethe"SETUP"line.
Thatsaid,itcouldappearinthefunctionthatusesit,andno
whereelse.
Ithinkitmakesmoresensewithintheblockdefiningthe
bitmap,asyouthencanupdateboththebitmaparray,andthe
stringlistingthecharactersinthebitmap,atthesametime.I
wouldrecommendaddingacommenttothecodeexplaining
whatthevariableisfor,andhowsomeonewhowishestoadd
charactersorsymbols,needstoupdatebothalphabetsand
alphabetsoupfortheprogramtooperateasexpected.
jiqfar(/member/jiqfar)
thankstoyourtutorial...
isuccesstobuildit...
anyquestionforyou...
howtoaddnewcharinthecode?...
itryanewcharbutdisplayisnotreadable...
imaketooltoeasyuse...
2yearsago
Reply
(http://cdn.instructables.com/FWA/ZTHI/HKZ9IUGG/FWAZTHIHKZ9IUGG.LARGE.jpg)
speakers123(/member/speakers123) . jiqfar(/member/jiqfar)
Reply
2yearsago
asIcangeneratenumbers?
Reply
yesyoucan...
butitrytoaddthecodestillnotwork...
thisismyfile
http://dl.dropboxusercontent.com/u/22738692/Generator%20LED%20Matrix.exe
(http://dl.dropboxusercontent.com/u/22738692/Generator%20LED%20Matrix.exe)
I MoreComments
FEATURED CHANNELS
Parties
(/tag/type
id/category
craft/channel
Breakfast
(/tag/type
id/category
Thanksgiving
partiesand
Kitchen&Bath
food/channel
(http://www.instructables.com/howto/thanksgiving/)
Newsletter
weddings/) (/id/moen/) breakfast/)
Arduino
(/tag/type
id/category
IntelIoT
(/id/intel/)
LinkItONE
I'min!
Mobile
Downloadourapps!
Android(https://play.google.com/store/apps/details?id=com.adsk.instructables)
iOS(https://itunes.apple.com/app/instructables/id586765571)
Windows(http://apps.microsoft.com/windows/enus/app/7afc8194c771441a959054250d6a8300)
AboutUs
FindUs
WhoWeAre(/about/)
Facebook(http://www.facebook.com/instructables)
Advertise(/advertise/)
Youtube(http://www.youtube.com/user/instructablestv)
Contact(/about/contact.jsp)
Twitter(http://www.twitter.com/instructables)
Jobs(/community/PositionsavailableatInstructables/)
Help(/id/howtowriteagreatinstructable/)
Pinterest(http://www.pinterest.com/instructables)
Google+(https://plus.google.com/+instructables)
Tumblr(http://instructables.tumblr.com)
Resources
ForTeachers(/teachers/)
ArtistsinResidence(/air)
GiftProAccount(/account/give?sourcea=footer)
Forums(/community/)
Answers(/tag/typequestion/?sort=RECENT)
Sitemap(/sitemap/)
TermsofService(http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=21959721) |
PrivacyStatement(http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=21292079) |
LegalNotices&Trademarks(http://usa.autodesk.com/legalnoticestrademarks/) | MobileSite(http://m.instructables.com)
(http://usa.autodesk.com/adsk/servlet/pc/index?id=20781545&siteID=123112)
2015Autodesk,Inc.
Minecraft
(/tag/type
id/category
technology/channel
(/id/mediatek
workshop/channelplay/channel
arduino/)
linkitone/)
lasercutting/) minecraft/)
Join2million+toreceiveinstant
inspirationinyourinbox.
enteremail
LaserCut
(/tag/type
id/category