Procesamiento Digital de Señales

Generación de una señal triangular

Objetivos: Generar una señal triangular con Arduino

 

#include <TimerOne.h>

float y;  // 
float muestra=0;  // numero de muestra
float frecuencia=20;  // frecuencia de senal a generar
float frecuenciamuestreo=1000; // 1 K Hz
int N;  // numero de muestras
int A=5; // amplitud
float m; // pendiente

void ISR_timer(){
 
  
    if ( muestra <= N/2 ) {

    y=(muestra*m)-A;  
      
    }
    
    else if ( muestra > N/2 and muestra <N) {

   y=3*A-m*(muestra);

  
      
    }
    else if (muestra==N) {

      muestra=0;
    
    }


  Serial.println(y);
   
    muestra++;

   
     
}

void setup(){
  
  Serial.begin(9600);    // incializa comunicacions serial
  
  Timer1.initialize(1000);      // Dispara cada 1 ms = 100 us   T=1/f=1/1000Hz
  Timer1.attachInterrupt(ISR_timer); // Activa la interrupcion y la asocia a ISR_timer

}

void loop(){

   N = frecuenciamuestreo/frecuencia;  // Calcula el numero de muestras
   
   m = (2.0*A)/(N/2.0);  // Calcula la pendiente de la recta de la señal triangular


}

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *