Electronics

Electronics

Δευτέρα, 11 Μαΐου 2015

8x8 Matrix Controlled by Bluetooth

Maybe the hardest project I made so far. Based on the idea of embedded lab, I wanted to make it from the first time I saw it (http://embedded-lab.com/blog/?p=9255). There were two problem though! First of all the code works perfect but the hardware part had some errors and these errors gave me a bad headache. I don't think it was his intention to have errors but it took me lot of time to find them and gave me a chance to see how 8x8 works (well the hardware part I still luck in experience in the programming part :) ) Second problem was that jollifactory maybe a similar project with bi-color matrices (http://www.instructables.com/id/7-Bi-color-LED-Matrix-Scrolling-Text-Display/) and I like it a lot also. So I started building the second project, finished all the hardware parts and transfered the code to arduino but it didn't work as I wanted, after a lot of search, study and "trial & error" the answer to my problem came, it was the programming part, nick from jollifactory (who is a wonderful guy and helped me a lot with my questions) had made the code only to work with bi-color matrixes and it needed major modification if I wanted to work only with red matrixes. So I went back to the first project of embedded labs. 3 problems I encountered and it took a lot of time especially "waiting time" since the first 8 matrixes were common anode as he suggests but the project works with common cathode matrixes!!!

So let's start, these matrixes are 8x8 5mm and common cathodes this mean they have the code letter (A) and you can find the difference from common anode because common anode have the code letter (B), so in my project I ordered 8 pieces of 2088(B)S (common anode) but the project needed 8 pieces of 2088(A)S (common cathode).




Matrixes come in various sizes but I wanted as bigger it could be and 5mm is the ideal one, the problem here is that the boards with the chip max7219 (driver chip) come with the premise we will use 3mm matrixes, so I had to figure a trick to connect the 5mm matrixes with the small boards...






After these modifications we chain our 8 matrixes together meaning that the Dout signal of the first goes to the Din of the second, the Dout of the second goes to the Din of the third e.g. till the last one.we also connect CLK,CS,V++, GND together. V++ is 5V and GND is the ground. now we have 3 more pins. CLK which is the clock connects to pin 13 of arduino, Din of the first module connects to pin 11 of arduino and DS (or LOAD) connects to pin10 of arduino. A useful idea would be to connect 3 resistors of 10k from pins 10,11,13 of arduino to ground, with this trick our matrix won't get "garbage" from outside. Also we can connect a resistor of 1K between pins RX and D2 of arduino, this will be a hardware delay for out marix, so it can forestall our bytes when thay re being sent by our phone. Finally it's the bluetooth module which is being connected to 5V,GND, Rx of bluetooth connects through a voltage divider to pin Tx of arduino, and Tx of bluetooth connects to Rx of arduino. Upload the code and you are set to go. The app we use is Bluetooth SPP tools pro.  The config of the program is easy and with 10' of searching you will be able to understand how the program works.
commands : 

  • (message) the scrolling display must be sent inside a parenthesis
  • /p  to pause the scroll. Sending it again will resume the scroll
  • /<  scroll faster
  • />  scroll slower
  • /e  to erase the display
  • /+  to increase the brightness level
  • /-  to decrease the brightness level
 For the working of the matrixes we have to download these 2 libraries :
Mark Ruy's max72xx Panel
Adafruit's GFX Libraries

Finally here is the code :
https://www.dropbox.com/home/8X8%20Matrixes









Don't forget to visit this site for extra informations of this incredible project !



(message) – The scrolling display message must be sent enclosed by parenthesis. - See more at: http://embedded-lab.com/blog/?p=9255#sthash.yRMeEzfv.dpuf
  • (message) – The scrolling display message must be sent enclosed by parenthesis.
  • /p to pause the scroll. Sending it again resumes the scroll.
  • /< to scroll faster
  • /> to scroll slower
  • /+ to increase brightness level
  • /-  to decrease brightness level
  • /e  to erase the display
  • - See more at: http://embedded-lab.com/blog/?p=9255#sthash.yRMeEzfv.dpuf
  • (message) – The scrolling display message must be sent enclosed by parenthesis.
  • /p to pause the scroll. Sending it again resumes the scroll.
  • /< to scroll faster
  • /> to scroll slower
  • /+ to increase brightness level
  • /-  to decrease brightness level
  • /e  to erase the display
  • - See more at: http://embedded-lab.com/blog/?p=9255#sthash.yRMeEzfv.dpuf