X

Generador de señales con Arduino Uno y MCP4921

Materiales:

Arduino Uno

MCP4921

 

Librerias:

TimerOne

MCPXXXX

 

Código

#include <TimerOne.h>
#include <SPI.h>         // Remember this line!
#include <DAC_MCP49xx.h>
#define SS_PIN 10

DAC_MCP49xx dac(DAC_MCP49xx::MCP4921, SS_PIN);


int bandera;
int y;  // 
int muestra=0;  // numero de muestra
float frecuencia=60;  // frecuencia de senal a generar
float frecuenciadigital;  // frecuencia digital
float frecuenciamuestreo=1000; // 1 K Hz

void ISR_timer(){
 
  bandera=1;
  
}

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


  dac.setSPIDivider(SPI_CLOCK_DIV16);
  
  // Use "port writes", see the manual page. In short, if you use pin 10 for
  // SS (and pin 7 for LDAC, if used), this is much faster.
  // Also not strictly required (no setup() code is needed at all).
  dac.setPortWrite(true);
  
}

void loop(){
  
  frecuenciadigital = frecuencia/frecuenciamuestreo; 
  
  
  if (bandera == 1) {
    
    bandera=0;
    
    y=floor((1*sin(2*3.1416*muestra*frecuenciadigital))*2048 + 2048);  // calculo seno digital de 12 bits  // calculo sino digital de 12 bits;  // calculo sino digital de 12 bits
    
   // y=1*sin(2*3.1416*muestra*frecuenciadigital);  // calculo seno digital de 12 bits  // calculo sino digital de 12 bits;  // calculo sino digital de 12 bits
    muestra=muestra+1;


    dac.output(y);


    //Serial.println(y);
  }
  
  
  
  
}

 

 

 

Christian:
Related Post