#JavaScript (4 Tweets / 385 bytes)
Not quite sure about the requirements of the header & Tweets format, so please advise if it needs correcting. Still a bit more can be shaved off I'm certain.
###Tweet 1 - P0 (11 bytes) chrome a.js
###Tweet 2 - P1 (108 bytes) a=0,y=0,z=0,j=0,window.onkeyup=(b=>(40==(k=b.keyCode)?D():2z(d=37==k?2:39==k?.5:0)&65|jd&a||(z=d),R())),
###Tweet 3 - P2 (135 bytes) Z=(a=>(y=6,z=12/(new Date%3+1))),R=(b=>{j=z<<5*y;for(o="",i=30;i--;)o+=1<<i&(a|j)?"#":"_",o+=i%5?"":"
";document.body.innerHTML=o}),
###Tweet 4 - P3 (131 bytes) D=(b=>(!y||a&j>>5?(y>4?a=0:31^31&(a|=j)>>5y||(a=a>>5(y+1)<<5y|a&-1>>>5-(y+1)>>5),Z()):(y--,j<<=5),R())),setInterval(D,700),Z();
#Run it in JSFiddle: https://jsfiddle.net/CookieJon/pjd8gcqc/2/
(Click on the output pane to provide focus for keyboard events)