POV Using Arduino Nano

5,878

20

11

Posted in TechnologyLeds

Introduction: POV Using Arduino Nano

About: I am IT professional, living in Bangalore, India. As new gadgets come out everyday, we indulge in spending significant time and money on these gadgets. And our kids are learning from us, they know how to use...

Hi All,

I was impressed with two articles on Instructables.com Magic-POV-Wand-yet-another-POV-toy and Persistence-of-Vision-Wand. They have explained in great detail, to build a LED POV and mostly display a name or a message.

I did not find just text very interesting ,So I drew some Alien UFO and Faces in Green.....

To Reduce form factor I used Arduino Nano instead of Uno

Step 1: ​What You Need ?

Material

  1. Arduino Nano ( Bought on Ebay for 600)
  2. 19 Green Leds ( You may choose your favorite color)
  3. 19 100 Ohm Register 1/4 W
  4. Universal PCB
  5. 9V battery with connector
  6. Switch
  7. 7 to 9 mtrs of soft wire
  8. Wooden stick

Tools

  1. Soldering Iron, FLux, wire
  2. Black Tape

Step 2: Circuit Diagram

The original Circuit was for 20LEDs, But on my PCB I had space only for 19 - 5MM LEDs

Same I adjusted in the code

Step 3: Build It

Select a universal PCB and cut into long strip, I could not put 20 LED so selected 19 leds as shown

Solder The leds and 100 Ohms registers as shown, or refer the Circuit diagram

On another fix the female connector for Arduino Nano

Solder the wires as below images. Remember these are not easy and take quiet a long time. So take regular break

Step 4: Final Packing

I Covered the whole thing using Black tape

Step 5: The Code

I am attaching code

Fire : Click Me
UFO + Alien : Click Me

Star + Smile : Click Me

Text Message : Click Me

Please share your comments

IF you are missing PGMspace.h file : please reinstall Arduino IDE

Share

    Recommendations

    • Microcontroller Contest

      Microcontroller Contest
    • Casting Contest

      Casting Contest
    • Make it Move Contest

      Make it Move Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    11 Comments

    i get this error

    Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P"

    C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Rocking Rane\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Rocking Rane\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Rocking Rane\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10805 -build-path C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649 -warnings=none -build-cache C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_cache_589715 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Rocking Rane\Documents\Arduino\POV_AJ_19LED\POV_AJ_19LED.ino

    C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Rocking Rane\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Rocking Rane\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Rocking Rane\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10805 -build-path C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649 -warnings=none -build-cache C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_cache_589715 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Rocking Rane\Documents\Arduino\POV_AJ_19LED\POV_AJ_19LED.ino

    Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

    Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

    Detecting libraries used...

    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp" -o "nul"

    Generating function prototypes...

    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp" -o "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\preproc\ctags_target_for_gcc_minus_e.cpp"

    "C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\preproc\ctags_target_for_gcc_minus_e.cpp"

    Compiling sketch...

    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp" -o "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp.o"

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

    from C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp:1:

    POV_AJ_19LED:54: error: variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterA[1] PROGMEM = {

    ^

    POV_AJ_19LED:75: error: too many initializers for 'boolean [1] {aka bool [1]}'

    };

    ^

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

    from C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp:1:

    POV_AJ_19LED:77: error: variable 'letterB' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterB[] PROGMEM = {

    ^

    POV_AJ_19LED:100: error: variable 'letterC' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterC[] PROGMEM = {

    ^

    POV_AJ_19LED:123: error: variable 'letterD' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterD[] PROGMEM = {

    ^

    POV_AJ_19LED:146: error: variable 'letterE' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterE[] PROGMEM = {

    ^

    POV_AJ_19LED:169: error: variable 'letterF' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterF[] PROGMEM = {

    ^

    POV_AJ_19LED:192: error: variable 'letterG' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterG[] PROGMEM = {

    ^

    POV_AJ_19LED:215: error: variable 'letterH' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterH[] PROGMEM = {

    ^

    POV_AJ_19LED:238: error: variable 'letterI' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterI[] PROGMEM = {

    ^

    POV_AJ_19LED:261: error: variable 'letterJ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterJ[] PROGMEM = {

    ^

    POV_AJ_19LED:284: error: variable 'letterK' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterK[] PROGMEM = {

    ^

    POV_AJ_19LED:307: error: variable 'letterL' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterL[] PROGMEM = {

    ^

    POV_AJ_19LED:330: error: variable 'letterM' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterM[] PROGMEM = {

    ^

    POV_AJ_19LED:353: error: variable 'letterN' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterN[] PROGMEM = {

    ^

    POV_AJ_19LED:376: error: variable 'letterO' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterO[] PROGMEM = {

    ^

    POV_AJ_19LED:399: error: variable 'letterP' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterP[] PROGMEM = {

    ^

    POV_AJ_19LED:422: error: variable 'letterQ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterQ[] PROGMEM = {

    ^

    POV_AJ_19LED:446: error: variable 'letterR' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterR[] PROGMEM = {

    ^

    POV_AJ_19LED:469: error: variable 'letterS' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterS[] PROGMEM = {

    ^

    POV_AJ_19LED:492: error: variable 'letterT' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterT[] PROGMEM = {

    ^

    POV_AJ_19LED:515: error: variable 'letterU' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterU[] PROGMEM = {

    ^

    POV_AJ_19LED:538: error: variable 'letterV' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterV[] PROGMEM = {

    ^

    POV_AJ_19LED:561: error: variable 'letterW' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterW[] PROGMEM = {

    ^

    POV_AJ_19LED:584: error: variable 'letterX' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterX[] PROGMEM = {

    ^

    POV_AJ_19LED:607: error: variable 'letterY' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterY[] PROGMEM = {

    ^

    POV_AJ_19LED:630: error: variable 'letterZ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterZ[] PROGMEM = {

    ^

    exit status 1

    variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    2 replies

    please try with older Arduino, or set all as constant....

    actually i have just started using arduino so i dont know much about arduino other than digitalwrite & delay function,what do i do to set all as constant?

    all codes are wrong i am not able to verify anfd upload any 1 of them in arduino nano

    2 replies

    what is the error you are getting

    Compiling sketch...

    "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp" -o "C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp.o"

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

    from C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp:1:

    POV_AJ_19LED:54: error: variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterA[1] PROGMEM = {

    ^

    POV_AJ_19LED:75: error: too many initializers for 'boolean [1] {aka bool [1]}'

    };

    ^

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,

    from C:\Users\ROCKIN~2\AppData\Local\Temp\arduino_build_589649\sketch\POV_AJ_19LED.ino.cpp:1:

    POV_AJ_19LED:77: error: variable 'letterB' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterB[] PROGMEM = {

    ^

    POV_AJ_19LED:100: error: variable 'letterC' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterC[] PROGMEM = {

    ^

    POV_AJ_19LED:123: error: variable 'letterD' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterD[] PROGMEM = {

    ^

    POV_AJ_19LED:146: error: variable 'letterE' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterE[] PROGMEM = {

    ^

    POV_AJ_19LED:169: error: variable 'letterF' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterF[] PROGMEM = {

    ^

    POV_AJ_19LED:192: error: variable 'letterG' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterG[] PROGMEM = {

    ^

    POV_AJ_19LED:215: error: variable 'letterH' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterH[] PROGMEM = {

    ^

    POV_AJ_19LED:238: error: variable 'letterI' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterI[] PROGMEM = {

    ^

    POV_AJ_19LED:261: error: variable 'letterJ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterJ[] PROGMEM = {

    ^

    POV_AJ_19LED:284: error: variable 'letterK' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterK[] PROGMEM = {

    ^

    POV_AJ_19LED:307: error: variable 'letterL' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterL[] PROGMEM = {

    ^

    POV_AJ_19LED:330: error: variable 'letterM' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterM[] PROGMEM = {

    ^

    POV_AJ_19LED:353: error: variable 'letterN' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterN[] PROGMEM = {

    ^

    POV_AJ_19LED:376: error: variable 'letterO' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterO[] PROGMEM = {

    ^

    POV_AJ_19LED:399: error: variable 'letterP' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterP[] PROGMEM = {

    ^

    POV_AJ_19LED:422: error: variable 'letterQ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterQ[] PROGMEM = {

    ^

    POV_AJ_19LED:446: error: variable 'letterR' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterR[] PROGMEM = {

    ^

    POV_AJ_19LED:469: error: variable 'letterS' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterS[] PROGMEM = {

    ^

    POV_AJ_19LED:492: error: variable 'letterT' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterT[] PROGMEM = {

    ^

    POV_AJ_19LED:515: error: variable 'letterU' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterU[] PROGMEM = {

    ^

    POV_AJ_19LED:538: error: variable 'letterV' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterV[] PROGMEM = {

    ^

    POV_AJ_19LED:561: error: variable 'letterW' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterW[] PROGMEM = {

    ^

    POV_AJ_19LED:584: error: variable 'letterX' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterX[] PROGMEM = {

    ^

    POV_AJ_19LED:607: error: variable 'letterY' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterY[] PROGMEM = {

    ^

    POV_AJ_19LED:630: error: variable 'letterZ' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

    boolean letterZ[] PROGMEM = {

    ^

    exit status 1

    variable 'letterA' must be const in order to be put into read-only section by means of '__attribute__((progmem))

    Can you plz upload avr/pgmspace.h library which you have used in your code files.

    Thanx!

    1 reply

    https://drive.google.com/open?id=0B21WII85gNbyfnZJSlplY0RSQWZ4SEVqMDU3blBkS29SVDh3YTQxUS14bmhvenlrQnZuRVk

    Can u upload code for pov clock

    great

    I go to try to make iT

    But 1 thing,is iT possible to upload your pictures again but way bigger, the ar to smal to see correctly

    1 reply

    https://amitjain1980.blogspot.in/2014/11/magic-wand-based-on-persistence-of.html?m=0

    Try this URL, if not tell me which image, I will share original file