TVOUT usando NTSC en Arduino Leonardo

3

Estoy tratando de usar Arduino Leonardo con biblioteca de TVOUT (la única que yo encontrado para hacer la modulación NTSC).

El problema es que ni siquiera puedo ejecutar el ejemplo, busqué en varios foros sin una solución concreta, aquí está el error:

C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::tone(unsigned int, long unsigned int)':
C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp:825: error: 'DDR_SND' was not declared in this scope
C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp:825: error: 'SND_PIN' was not declared in this scope
C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp: In member function 'void TVout::noTone()':
C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp:876: error: 'PORT_SND' was not declared in this scope
C:\Users\jepser\Documents\Arduino\libraries\TVout\TVout.cpp:876: error: 'SND_PIN' was not declared in this scope

Sería increíble si alguien me puede ayudar con esto.

    
pregunta jepser

2 respuestas

1

Tres opciones.

Una, es declarar esas 3 variables como variables globales en su archivo principal, como puerto válido + ddr + números de pin.

Dos, declaralas como variables globales con un valor de 0 (y no uses las funciones tvout.Tone o tvout.noTone).

Tres, edite TVOut.cpp y TVOut.h y elimine las secciones de tono.

Opción de bonificación, intente utilizar el procedimiento correcto actualizando las definiciones de la biblioteca. La biblioteca tuvo un lanzamiento inicial en 2010 y nunca recibió ninguna actualización. Simplemente no está configurado para los nuevos chips de atmega. Consulte aquí y aquí para obtener información sobre los tableros tvout + leonardo, que se ingresan en hardware_setup.h de la biblioteca de tvout.

Francamente, si no usas la función Tono, simplemente declara las variables como 0 y sigue adelante.

    
respondido por el Passerby
0

Pruebe la versión de TVout aquí: enlace

Tiene una especificación actualizada / hardware_setup.h con el siguiente código agregado:

#elif defined(__AVR_ATmega32U4__) // Modified for Arduino Leonardo
//video
#define PORT_VID    PORTB
#define DDR_VID     DDRB
#define VID_PIN     4 // 8
//sync
#define PORT_SYNC   PORTB
#define DDR_SYNC    DDRB
#define SYNC_PIN    5 // 9
//sound
#define PORT_SND    PORTB
#define DDR_SND     DDRB
#define SND_PIN     7 // 11
#define TCCR2A      TCCR0A
#define TCCR2B      TCCR0B
#define OCR2A       OCR0A
#define OCR2B       OCR0B
#define COM2A0      COM0A0
#define COM2A1      COM0A1
#define CS20        CS00
#define WGM21       WGM01

También tiene modificación a TVout.cpp

#define TIMER 2

se cambia a

#if defined(__AVR_ATmega32U4__)
#define TIMER 0
#else
#define TIMER 2
#endif

Esto se debe a que el Arduino Leonardo no tiene un temporizador # 2, tiene 0,1,3 y 4. Vaya a la cifra.

    
respondido por el Barry Nelson

Lea otras preguntas en las etiquetas