#JavaScript (4 Tweets / 363 bytes / 197 spare)
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 (107 bytes) a=0,y=0,z=0,j=0,window.onkeyup=(b=>(40==(k=b.keyCode)?D():z2(d=37==k?2:39==k?.5:0)&65|jd&a||(z=d),R()))
###Tweet 3 - P2 (130 bytes) R=b=>{y>=0||(y=30,z=12/(new Date%3+1)),j=z<<y;for(o="",i=30;i--;)o+=1<<i&(a|j)?"#":"_",o+=i%5?"":"
";document.body.innerHTML=o}
###Tweet 4 - P3 (115 bytes) D=b=>(!y||a&j>>5?(y>20?a=0:31^31&(a|=j)>>y||(a=a>>(y+5)<<y|a&-1>>>-(y+5)>>5),y=-5):y-=5,R()),setInterval(D,700),R()
#Run it in JSFiddle: https://jsfiddle.net/CookieJon/pjd8gcqc/16/
(Click on the output pane to provide focus for keyboard events)