{"id":96,"date":"2015-01-11T17:39:51","date_gmt":"2015-01-11T15:39:51","guid":{"rendered":"http:\/\/benjaminmarty.ch\/blog\/?p=96"},"modified":"2015-03-11T23:41:50","modified_gmt":"2015-03-11T21:41:50","slug":"ws2812b-led-matrix-mit-stm32","status":"publish","type":"post","link":"https:\/\/benjaminmarty.ch\/blog\/2015\/01\/11\/ws2812b-led-matrix-mit-stm32\/","title":{"rendered":"WS2812b LED Matrix mit STM32"},"content":{"rendered":"<p>K\u00fcrzlich habe ich eine Matrix bestehend aus WS2812b LED&#8217;s in die H\u00e4nde bekommen. Das tolle an diesen LED&#8217;s ist das diese zum einen RGB sind,\u00a0\u00fcber 1. einzigen Datenpin ansteurbar und vorallem auch kaskadierbar sind. So l\u00e4sst sich eine Matrix bestehend aus 64 dieser LED&#8217;s mit einem einzigen Datenpin komplett steuern, samt allen 3 Farbkomponenten. Die Ansteuerung mit der <a href=\"https:\/\/github.com\/adafruit\/Adafruit_NeoPixel\">Adafruit Library<\/a> und einem Arduino funktionierte auf anhieb. Jedoch ist der Arduino und eine fixfertige Library nicht das was ich will. Vorallem mit dem Gedanken die LED&#8217;s einzeln sp\u00e4ter in eigenen Projekten zu verwenden. Eigene Software musste her.<\/p>\n<p>Mit meiner normalen Hardware auf Basis von einem Atmega 8 habe ich das Protokoll bisher noch nicht sauber hinbekommen. Die Ausf\u00fchrungsgeschwindigkeit ist mit C und dem Atmega 8 einfach zu langsam um das Protokoll in Software generieren zu k\u00f6nnen.<\/p>\n<p><a href=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/timing.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-98\" src=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/timing-300x98.png\" alt=\"timing\" width=\"300\" height=\"98\" srcset=\"https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/timing-300x98.png 300w, https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/timing.png 648w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><img loading=\"lazy\" class=\"alignnone  wp-image-97\" src=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/diagramm-300x195.png\" alt=\"diagramm\" width=\"168\" height=\"109\" srcset=\"https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/diagramm-300x195.png 300w, https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/diagramm.png 316w\" sizes=\"(max-width: 168px) 100vw, 168px\" \/><\/a><\/p>\n<p>Ich habe deshalb als erstmalige Abhilfe das ganze auf Basis von einem STM32F103C8T6 aufgebaut. Dieser arbeitet im Endeffekt mit 72Mhz, 4.5x so schnell wie der Atmega, rein vom Takt her gesehen! Damit ist es problemlos auf primitivste Weise m\u00f6glich das Protokoll f\u00fcr die Dinger sauber zu generieren. Damit habe ich mir eine kleine Library zusammengeschustert mit welcher ich die LED&#8217;s mit den drei Farbkomponenten steuern kann.<\/p>\n<p><a href=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/IMG_20150311_222425_834.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-99\" src=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/IMG_20150311_222425_834-300x252.jpg\" alt=\"IMG_20150311_222425_834\" width=\"300\" height=\"252\" srcset=\"https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/IMG_20150311_222425_834-300x252.jpg 300w, https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/IMG_20150311_222425_834-1024x862.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/2015-01-23.jpg\"><img loading=\"lazy\" class=\"alignnone  wp-image-100\" src=\"http:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/2015-01-23-300x225.jpg\" alt=\"2015-01-23\" width=\"335\" height=\"251\" srcset=\"https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/2015-01-23-300x225.jpg 300w, https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/2015-01-23-1024x768.jpg 1024w, https:\/\/benjaminmarty.ch\/blog\/wp-content\/uploads\/2015\/03\/2015-01-23.jpg 2048w\" sizes=\"(max-width: 335px) 100vw, 335px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>K\u00fcrzlich habe ich eine Matrix bestehend aus WS2812b LED&#8217;s in die H\u00e4nde bekommen. Das tolle an diesen LED&#8217;s ist das diese zum einen RGB sind,\u00a0\u00fcber 1. einzigen Datenpin ansteurbar und vorallem auch kaskadierbar sind. So l\u00e4sst sich eine Matrix bestehend aus 64 dieser LED&#8217;s mit einem einzigen Datenpin komplett steuern, samt allen 3 Farbkomponenten. Die &#8230; <a class=\"more-link\" href=\"https:\/\/benjaminmarty.ch\/blog\/2015\/01\/11\/ws2812b-led-matrix-mit-stm32\/\">[Read more&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[6,4,8,7,5,3],"_links":{"self":[{"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/posts\/96"}],"collection":[{"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":3,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":103,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions\/103"}],"wp:attachment":[{"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benjaminmarty.ch\/blog\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}