Stap 4: Blokgolf generator
Voor het testen van het circuit dat we net gebouwd we zullen worden met behulp van een arduino voor het genereren van een blokgolf en de Golf is gonna worden weergegeven op een scherm van de PC via een arduino. De code om te worden geüpload naar de arduino vindt u hieronder.
#include "Waveforms.h"#define oneHzSample 1000000/maxSamplesNum // sample for the 1Hz signal expressed in microseconds const int button0 = 2, button1 = 3; volatile int wave0 = 0, wave1 = 0;int i = 0; int sample;void setup() { analogWriteResolution(12); // set the analog output resolution to 12 bit (4096 levels) analogReadResolution(12); // set the analog input resolution to 12 bit attachInterrupt(button0, wave0Select, RISING); // Interrupt attached to the button connected to pin 2 attachInterrupt(button1, wave1Select, RISING); // Interrupt attached to the button connected to pin 3 }void loop() { // Read the the potentiometer and map the value between the maximum and the minimum sample available // 1 Hz is the minimum freq for the complete wave // 170 Hz is the maximum freq for the complete wave. Measured considering the loop and the analogRead() time sample = map(analogRead(A0), 0, 4095, 0, oneHzSample); sample = constrain(t_sample, 0, oneHzSample); analogWrite(DAC0, waveformsTable[wave0][i]); // write the selected waveform on DAC0 analogWrite(DAC1, waveformsTable[wave1][i]); // write the selected waveform on DAC1 i++; if(i == maxSamplesNum) // Reset the counter to repeat the wave i = 0; delayMicroseconds(sample); // Hold the sample value for the sample time }// function hooked to the interrupt on digital pin 2 void wave0Select() { wave0++; if(wave0 == 4) wave0 = 0; }// function hooked to the interrupt on digital pin 3 void wave1Select() { wave1++; if(wave1 == 4) wave1 = 0; }