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
}


