Line 227: Line 227:
 
const static uint16_t image[]=  
 
const static uint16_t image[]=  
 
{
 
{
0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000100011111111,<br/>
+
{
0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000000000000000,<br/>
+
0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000100011111111,
0b0000010011111110, 0b0000010000010001, 0b0000010000010001, 0b0000010000010001,<br/>
+
0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000000000000000,
0b0000010011100001, 0b0000000000000000, 0b0000010001111110, 0b0000010010010001,<br/>
+
0b0000010011111110, 0b0000010000010001, 0b0000010000010001, 0b0000010000010001,
0b0000010010010001, 0b0000010010010001, 0b0000010000001110, 0b0000000000000000,<br/>
+
0b0000010011100001, 0b0000000000000000, 0b0000010001111110, 0b0000010010010001,  
0b0000001011111111, 0b0000001000010001, 0b0000001000010001, 0b0000001000010001,<br/>
+
0b0000010010010001, 0b0000010010010001, 0b0000010000001110, 0b0000000000000000,  
0b0000001000001110, 0b0000000000000000, 0b0000001000001110, 0b0000001000010001,<br/>
+
0b0000001011111111, 0b0000001000010001, 0b0000001000010001, 0b0000001000010001,  
0b0000001000010001, 0b0000001011111111, 0b0000000000000000, 0b0000000000000000,<br/>
+
0b0000001000001110, 0b0000000000000000, 0b0000001000001110, 0b0000001000010001,  
0b0000100001110000, 0b0000100011111100, 0b0000100011111110, 0b0000100011111111,<br/>
+
0b0000001000010001, 0b0000001011111111, 0b0000000000000000, 0b0000000000000000,
0b0000100011111111, 0b0000100011111110, 0b0000100011111100, 0b0000100001111000,<br/>
+
0b0000100001110000, 0b0000100011111100, 0b0000100011111110, 0b0000100011111111,
0b0000000000000000, 0b0000000000000000, 0b0000010011111110, 0b0000010000010001,<br/>
+
0b0000100011111111, 0b0000100011111110, 0b0000100011111100, 0b0000100001111000,  
0b0000010000010001, 0b0000010000010001, 0b0000010011100001, 0b0000000000000000,<br/>
+
0b0000000000000000, 0b0000000000000000, 0b0000010011111110, 0b0000010000010001,  
0b0000001001110000, 0b0000001010001000, 0b0000001010001000, 0b0000001010001000,<br/>
+
0b0000010000010001, 0b0000010000010001, 0b0000010011100001, 0b0000000000000000,
0b0000001011111111, 0b0000000000000000, 0b0000001001110000, 0b0000001010001000,<br/>
+
0b0000001001110000, 0b0000001010001000, 0b0000001010001000, 0b0000001010001000,
0b0000001010001000, 0b0000001010001000, 0b0000001011111111, 0b0000000000000000,<br/>
+
0b0000001011111111, 0b0000000000000000, 0b0000001001110000, 0b0000001010001000,  
0b0000010001111110, 0b0000010010010001, 0b0000010010010001, 0b0000010010010001,<br/>
+
0b0000001010001000, 0b0000001010001000, 0b0000001011111111, 0b0000000000000000,
0b0000010010001111, 0b0000000000000000, 0b0000000000000000, 0b0000010011111111,<br/>
+
0b0000010001111110, 0b0000010010010001, 0b0000010010010001, 0b0000010010010001,
0b0000010000010000, 0b0000010000010000, 0b0000010000010000, 0b0000010011111111 <br/>
+
0b0000010010001111, 0b0000000000000000, 0b0000000000000000, 0b0000010011111111,  
 +
0b0000010000010000, 0b0000010000010000, 0b0000010000010000, 0b0000010011111111  
 
};
 
};
  

Revision as of 10:24, 15 November 2014

POV poster copy.jpg

The colorful Persistence Of Vision (POV) kit enables you to create colorful messages in air with just 8 LEDs. This kit is great introduction to soldering and AVR/Arduino Programming. The kit does not require a external programmer, it is self programmable with USB.

Solder it!

  • Image above shows the layout of various components for the board. It is also printed on the PCB.

Component Layout

The image shows reference numbers for all the components.

  • From the table below find out the exact part for the reference number.

Component List

ref
value
Item count
C1
4.7uF
1
C2
100nF
1
C3,C4
22pF
2
CON1
AVR-ISP-10
1
D1,D2
3.6V Zener
2
IC1
ATMEGA8-P
1
J1
USB_2
1
LED1..LED8
LED-RGB
8
P8
Batt
1
Q1..Q3
BC547
3
R1
2.2K
1
R2,R3
68E
2
R4
10K
1
R5..R12
22
8
R13..R15
1K
3
SW1
Boot
1
SW2
Reset
1
X1
12MHz
1

Programming

C Code


  1. #include <avr/io.h>
  2. #include<util/delay.h>
  3. #include<stdint.h>
  4. #include<avr/interrupt.h>
  5.  
  6. #define Blue 3
  7. #define Green 4
  8. #define Red 5
  9.  
  10. uint8_t i=0;
  11.  
  12.  
  13. const static uint16_t image[]=
  14. {
  15. {
  16. 0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000100011111111,
  17. 0b0000100011111111, 0b0000100011111111, 0b0000100011111111, 0b0000000000000000,
  18. 0b0000010011111110, 0b0000010000010001, 0b0000010000010001, 0b0000010000010001,
  19. 0b0000010011100001, 0b0000000000000000, 0b0000010001111110, 0b0000010010010001,
  20. 0b0000010010010001, 0b0000010010010001, 0b0000010000001110, 0b0000000000000000,
  21. 0b0000001011111111, 0b0000001000010001, 0b0000001000010001, 0b0000001000010001,
  22. 0b0000001000001110, 0b0000000000000000, 0b0000001000001110, 0b0000001000010001,
  23. 0b0000001000010001, 0b0000001011111111, 0b0000000000000000, 0b0000000000000000,
  24. 0b0000100001110000, 0b0000100011111100, 0b0000100011111110, 0b0000100011111111,
  25. 0b0000100011111111, 0b0000100011111110, 0b0000100011111100, 0b0000100001111000,
  26. 0b0000000000000000, 0b0000000000000000, 0b0000010011111110, 0b0000010000010001,
  27. 0b0000010000010001, 0b0000010000010001, 0b0000010011100001, 0b0000000000000000,
  28. 0b0000001001110000, 0b0000001010001000, 0b0000001010001000, 0b0000001010001000,
  29. 0b0000001011111111, 0b0000000000000000, 0b0000001001110000, 0b0000001010001000,
  30. 0b0000001010001000, 0b0000001010001000, 0b0000001011111111, 0b0000000000000000,
  31. 0b0000010001111110, 0b0000010010010001, 0b0000010010010001, 0b0000010010010001,
  32. 0b0000010010001111, 0b0000000000000000, 0b0000000000000000, 0b0000010011111111,
  33. 0b0000010000010000, 0b0000010000010000, 0b0000010000010000, 0b0000010011111111
  34. };
  35.  
  36. void disp(uint16_t);
  37.  
  38. ISR (TIMER1_OVF_vect) // Timer1 ISR
  39. {
  40. disp(image[i]);
  41. i++;
  42.  
  43. if(i==72)
  44. i=0;
  45.  
  46. TCNT1H=0xFF; // Reload the 16-bit count value
  47. TCNT1L=0xF0; // in timer1 count registers
  48. }
  49.  
  50.  
  51. int main(void)
  52. {
  53. DDRC = 0b11111111;
  54. DDRD = 0b11111111;
  55.  
  56. PORTC = 0b11111111;
  57. PORTD = 0b00000111;
  58.  
  59. TCNT1H=0xFF; // Load the 16-bit count value
  60. TCNT1L=0xF0; // for 1 sec at 7.3728MHz
  61.  
  62. TCCR1A=0x00;
  63. TCCR1B=0x05; // Timer mode with 1024 prescAler
  64. TIMSK=0x04; // Enable timer1 overflow interrupt(TOIE1)
  65. sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
  66.  
  67. while(1)
  68. {
  69.  
  70. }
  71. }
  72.  
  73. void disp(uint16_t pat)
  74. {
  75.  
  76. PORTC = pat & 0x3f;
  77. PORTD = (pat>>6)& 0xff;
  78. }


Arduino Code

Arduino Code will be uploaded soon.

Pattern Generation

To create an image/patterm, you can use the POV image maker application. Maker.PNG

Uploading the Pattern

  • Install USBasp driver on your computer. Note that the it will show up as not recognized if the reset sequence is not followed

Reset Sequence for uploading new pattern/image

POV Reset Sequence for uploading new image
  • Perform reset sequence every time you connect the kit to the computer.
  • To upload a new image, hold down the RESET button, press and release the BOOT button and then release the RESET button as shown below.
  • Note the LEDS will stop blinking once the kit is detected by the computer.

Downloads