{"action":"created","issue":{"url":"https://api.github.com/repos/freetronics/DMD2/issues/7","repository_url":"https://api.github.com/repos/freetronics/DMD2","labels_url":"https://api.github.com/repos/freetronics/DMD2/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/freetronics/DMD2/issues/7/comments","events_url":"https://api.github.com/repos/freetronics/DMD2/issues/7/events","html_url":"https://github.com/freetronics/DMD2/pull/7","id":97282971,"number":7,"title":"ESP8266 Support","user":{"login":"h4rm0n1c","id":5162945,"avatar_url":"https://avatars1.githubusercontent.com/u/5162945?v=4","gravatar_id":"","url":"https://api.github.com/users/h4rm0n1c","html_url":"https://github.com/h4rm0n1c","followers_url":"https://api.github.com/users/h4rm0n1c/followers","following_url":"https://api.github.com/users/h4rm0n1c/following{/other_user}","gists_url":"https://api.github.com/users/h4rm0n1c/gists{/gist_id}","starred_url":"https://api.github.com/users/h4rm0n1c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/h4rm0n1c/subscriptions","organizations_url":"https://api.github.com/users/h4rm0n1c/orgs","repos_url":"https://api.github.com/users/h4rm0n1c/repos","events_url":"https://api.github.com/users/h4rm0n1c/events{/privacy}","received_events_url":"https://api.github.com/users/h4rm0n1c/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2015-07-26T03:49:42Z","updated_at":"2018-03-26T08:00:30Z","closed_at":"2015-09-09T01:07:18Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/freetronics/DMD2/pulls/7","html_url":"https://github.com/freetronics/DMD2/pull/7","diff_url":"https://github.com/freetronics/DMD2/pull/7.diff","patch_url":"https://github.com/freetronics/DMD2/pull/7.patch"},"body":"SoftDMD is not included, yet, but otherwise this is feature complete. (I've used a preprocessor statement to disable SoftDMD on the ESP8266)\n\nAll demo sketches compile and execute as they were meant to, the only change needed being changing SoftDMD to SPIDMD.\n\nThe `#define ESP8266_TIMER0_TICKS` in DMD2_Timer.cpp sets the delay between running `scan_running_dmds` via timer0 interrupt in microseconds, the default I've set is 1000, seems to work well with 4mhz SPI clock, which is also a default.\n\nWhy timer0?\nBecause the ESP8266 has no hardware PWM, so the ESP8266/Arduino project is using timer1 for software PWM, a.k.a analogWrite. The only other ESP8266 library that currently uses timer0 is for Servo control, the likelihood that someone will use servos with a DMD is low compared to wanting to be able to adjust DMD brightness.\n\nHow to connect:\nYou'll probably want to use a level shifter, I used a TXS0108E that worked quite well. I imagine some 7400 and 4000 series chips that have been used in such a way before could also be substituted.\n\n| Pin on DMD | GPIO # on ESP |\n| --- | --- |\n| a | GPIO16 |\n| b | GPIO12 |\n| sck | GPIO0 |\n| clk | GPIO14 |\n| r | GPIO13 |\n| noe | GPIO15 |\n\nOne more thing: The kinds of frequencies everything is required to run at to make this work probably doesn't lend itself too well to a solderless breadboard, my ESP8266 is on a soldered breadboard and it works pretty well, but sometimes it hiccups due to the capacitance between the tracks on the board, people are welcome to try, but I thought you should know the potential risks of using a solderless breadboard.\n\nEDIT: Swapped GPIO15 from sck to noe, swapped GPIO0 from noe to sck, I apologise for the change, putting noe on gpio15 (which is held low for the ESP8266's boot mode) keeps the DMD from displaying garbage while the ESP8266 boots.\n\nSee https://github.com/esp8266/Arduino for more details.\n"},"comment":{"url":"https://api.github.com/repos/freetronics/DMD2/issues/comments/376079059","html_url":"https://github.com/freetronics/DMD2/pull/7#issuecomment-376079059","issue_url":"https://api.github.com/repos/freetronics/DMD2/issues/7","id":376079059,"user":{"login":"masrodjie","id":2186593,"avatar_url":"https://avatars0.githubusercontent.com/u/2186593?v=4","gravatar_id":"","url":"https://api.github.com/users/masrodjie","html_url":"https://github.com/masrodjie","followers_url":"https://api.github.com/users/masrodjie/followers","following_url":"https://api.github.com/users/masrodjie/following{/other_user}","gists_url":"https://api.github.com/users/masrodjie/gists{/gist_id}","starred_url":"https://api.github.com/users/masrodjie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masrodjie/subscriptions","organizations_url":"https://api.github.com/users/masrodjie/orgs","repos_url":"https://api.github.com/users/masrodjie/repos","events_url":"https://api.github.com/users/masrodjie/events{/privacy}","received_events_url":"https://api.github.com/users/masrodjie/received_events","type":"User","site_admin":false},"created_at":"2018-03-26T08:00:30Z","updated_at":"2018-03-26T08:00:30Z","author_association":"NONE","body":"Hi @helmisusanto thanks for the update. Did you use level shifter?"}}
{"actor":{"display_login":"masrodjie"}}