Forum Replies Created
-
AuthorPosts
-
MichaelKeymaster
Ok, I need to look into writing a function called noOverlay() that does the opposite of initOverlay(). I’ll try to find some time in the next few days, but I’m extremely busy with the business. I’ll help though.
MichaelKeymasterIn order to provide a video signal, there needs to be a vertical sync for the destination TV. When you have a video input connected, that input signal is the source of the vsync. If you remove the signal, then there is no synchronization and that is why the overlay is all over the place.
If you don’t have a video input then the Arduino needs to generate the vsync. That is the purpose of moving the jumper to the D9 position and using Arduino code to create the vsync on the D9 pin.I don’t think there is a way for the Arduino program to sense whether there is a signal present so that it can start generating the vsync. You would have to tell it by pressing a button or something. And besides, you would have to move the jumper to the D9 position when you disconnected the video input signal so that the D9 pin is connected to the video output. Are you moving the jumper when you disconnect video and comment out initOverlay()? I have to move the jumper to D9 and set the output select to sync only.
Are you trying to make this so it is automatic? So that you can remove the input signal and somehow have the Arduino program take over generating the vsync? I don’t think it can be automatic because you have to also change the way the circuit is connected. You could possibly do it with an external DPDT switch and some clever code to reconfigure the registers when you throw the switch, but it’s not really a beginner project. Is that what your goal is?
MichaelKeymasterWhat about using the overlay switch? Or do you need a way to do it programatically?
The Video Experimenter is designed for the Arduino Uno only. Other Arduino models do not have all the needed pins available (e.g. the Arduino Mega) so it can never work on an Arduino Mega. See this for more info.
MichaelKeymasterThere is a special TVout library for the Video Experimenter. See the product page for the info and download.
MichaelKeymasterJust FYI, we are currently working on a new version of the Defusable Clock that will support a keypad without any extra components. This will be available later this year.
MichaelKeymasterSo sorry for the slow response — for some reason I was not getting the notification emails for my support forum.
Yes, you can use a 144 LED per meter strip if you adjust the software slightly. It’s pretty easy.
You can drive multiple strips in parallel as long as you want them to show the same thing. Is that what you are asking?MichaelKeymasterace2_ml,
I’m so sorry for the slow response — I’m supposed to get an email for every post but did not see anything for your post. So sorry for this awful delay.You’ve done plenty of experimentation but it sounds like there is never any audio produced by the shield. I personally assemble and test every shield, so I know it worked when it was shipped. I am guessing that one of the chips is loose. Perhaps the ADC or the DAC. I assume you’ve turned the volume knob all the way up (clockwise). The volume knob has no effect in bypass mode. I always use the 12-bit sampler for testing. The debugging output looks right. I would not expect serial output during the ISR to work at all (looks like it did…?) because this ISR is firing 22050 times per second, and there is not time to do that much serial output, but those values of 2042, 2043 look right and represent silence.
If you are still having problems, please Contact Us with your order number and I’ll work with you on a replacement.
MichaelKeymasterYes, I think that the problem is the dirty signal. I’m sure the LM1881 interprets some of that noise as sync and things get out of sync.
MichaelKeymasterIt depends on what your Arduino code needs to do. Generating video requires that precisely timed interrupts happen, so code that depends on interrupts usually disrupts the video. I’m not exactly sure if the I2C port expander will work with Video Experimenter, but you should give it a try.
MichaelKeymasterThe games page says this:
NOTE: This original firmware no longer works with the newer versions of Arduino and the Uno bootloader.
You can use the standalone Space Invaders and Pong games. These are to be used with the TVout library at Google Code and the Hackvision Controllers library.Go the the games page again and look for this. Try the standalone Space Invaders firmware. That will work.
- This reply was modified 8 years, 6 months ago by Michael.
MichaelKeymasterAre you running the code on a Hackvision or did you build your own?
Exactly which code are you loading onto your device? Where did you get it?
What version of Arduino did you use to compile it? On what platform (Windows,Mac)?
- This reply was modified 8 years, 6 months ago by Michael.
MichaelKeymasterCorrect, you cannot use interrupt-based Serial communication with the TVout library because to generate the video signal, the library must run an interrupt service routine extremely often and with precise timing. That is why the TVout library comes with a polling version of serial communication. Look at the “pollserial” example in the library. That is how to do serial communication.
When generating video, the CPU is very busy. Using an ultrasonic sensor requires precise timing of the reflected ping, but you won’t be able to measure accurately if the video interrupt is occuring during your measurement. The video code will constantly be interrupting the ping code that is trying to do a measurement. You can try disabling the video while you perform your pings.
Bottom line: ATmega328 is a very cheap and not powerful microcontroller. You can do some pretty amazing things with it, like generate video and audio, but you won’t be able to do other things at the same time that require precise timing.
MichaelKeymasterYes, that program does the same thing for me. Your code is missing the required initialization code for the Video Experimenter overlay. Did you try the OverlayDemo from here:
http://nootropicdesign.com/projectlab/2011/03/20/text-and-graphics-overlay/That should work no problem. Notice the function initOverlay() that sets up your ability to overlay pixels on video. And the required function ISR(INT0_vect). These must be in your program.
Try this code to print “Test” in random locations on the screen:
#include <TVout.h> #include <fontALL.h> #define W 136 #define H 96 TVout tv; void setup() { tv.begin(NTSC, W, H); initOverlay(); tv.select_font(font6x8); tv.fill(0); randomSeed(analogRead(0)); } // Initialize ATMega registers for video overlay capability. // Must be called after tv.begin(). void initOverlay() { TCCR1A = 0; // Enable timer1. ICES0 is set to 0 for falling edge detection on input capture pin. TCCR1B = _BV(CS10); // Enable input capture interrupt TIMSK1 |= _BV(ICIE1); // Enable external interrupt INT0 on pin 2 with falling edge. EIMSK = _BV(INT0); EICRA = _BV(ISC11); } // Required to reset the scan line when the vertical sync occurs ISR(INT0_vect) { display.scanLine = 0; } void loop() { // put your main code here, to run repeatedly: tv.print(random(0, 110), random(0, 80), "Test"); tv.delay_frame(5); }
MichaelKeymasterThat resolution is incredible! Very nice.
MichaelKeymasterWhat are your settings for the jumper and the switch? The sync-select jumper should be set to V.INPUT and the output select switch set to OVERLAY.
Also adjust the R4 potentiometer down to the lowest level. -
AuthorPosts