/*
h1. Implemente código arduino de um simulador que gera e envia para consola
valores de uma série temporal sinusoidal, com offset 3 e amplitude 2,
com período 20 Hz, e cinco valores por período.
*/
int F = 20;
int Fs = 500; // sampling frequency
int n = 500; // number of samples
float t; // Time instance
int sampling_interval;
byte samples[500]; // to store the samples
void setup() {
Serial.begin(115200);
pinMode(10, OUTPUT);
for (int n = 0; n < 500; n++)
{
t = (float) n / Fs; //creating time instance to find the 500 samples
// Y(t) = A. sen ω(t) // velocidade angular w = 2 Pi * t
samples[n] = (byte) (2 * sin(2 * 3.14 * t) + 3.0 ); //calculating the sin value at each time instance
}
sampling_interval = 1000000 / (F * n);
//sampling interval Ts = 1/frequency x number of sample (Ts = 1/Fn or Ts = T/n)x1000000 to convert it in µS
}
void loop() {
for (int j = 0; j < 500; j++) {
//analogWrite(10, samples[j]);
delayMicroseconds(sampling_interval); //time interval
//Serial.println("4,");
Serial.println(",");
Serial.print(samples[j]);
Serial.println(".");
//Serial.println("-4.");
}
}