Linkit ett oscilloskop (4 / 5 steg)
Steg 4: Fyrkantsvåg generator
Att testa banan vi just byggt kommer vi att använda en arduino att skapa en fyrkantsvåg och vågen kommer att visas på en datorskärm via en arduino. Koden skickas till arduino återfinns nedan.
#include "Waveforms.h"
#define oneHzSample 1000000/maxSamplesNum / / sampelstorlek för 1Hz signalen uttryckt i mikrosekunder
CONST int button0 = 2, Knapp1 = 3;
flyktiga int wave0 = 0, wave1 = 0;
int jag = 0;
int provet;
void setup() {
analogWriteResolution(12); Ställ in upplösningen med analog utgång till 12 bitar (4096 nivåer)
analogReadResolution(12); Ställ in upplösningen med analog ingång till 12 bitar
attachInterrupt (button0, wave0Select, RISING); Avbryta bifogade till knappen ansluten till stift 2
attachInterrupt (Knapp1, wave1Select, RISING); Avbryta bifogade till knappen ansluten till stift 3
}
void loop() {
Läs den potentiometer och karta värdet mellan högst och lägsta prov tillgängliga
1 Hz är den minsta freq för komplett wave
170 Hz är den maximala freq för komplett wave. Mätt med tanke på slingan och analogRead() tid
prov = map(analogRead(A0), 0, 4095, 0, oneHzSample);
prov = begränsa (t_sample, 0, oneHzSample);
analogWrite (DAC0, waveformsTable[wave0][i]); Skriv valda vågformen på DAC0
analogWrite (DAC1, waveformsTable[wave1][i]); Skriv valda vågformen på DAC1
i ++;
IF(i == maxSamplesNum) / / återställa räknaren om du vill upprepa våg
Jag = 0;
delayMicroseconds(sample); Hålla exempelvärde för samplingstiden
}
funktionen hugat till avbrottet på digital stift 2
void wave0Select() {
wave0 ++;
IF(wave0 == 4)
wave0 = 0;
}
funktionen hugat till avbrottet på digital stift 3
void wave1Select() {
wave1 ++;
IF(wave1 == 4)
wave1 = 0;
}