Add D9
This commit is contained in:
87
D9/D9Arduino/D9Arduino.ino
Normal file
87
D9/D9Arduino/D9Arduino.ino
Normal file
@@ -0,0 +1,87 @@
|
||||
/* Program to measure the frequenncy of a input, on digital pin 8
|
||||
* Made by Oyvind Skaaden
|
||||
*/
|
||||
#include <FreqMeasure.h> // Library for measuring the frequency
|
||||
#define r_in 8 // Pinnen som brukes til å lese frekvensen
|
||||
|
||||
// Pinner som skal skrives til
|
||||
#define u_out 6
|
||||
#define b_out 7
|
||||
|
||||
// Frekvensene som blir brukt til demodulering
|
||||
const unsigned int f0 = 325;
|
||||
const unsigned int f1 = 750;
|
||||
|
||||
// Diverse kalkulasjoner for å kompensere for at frekvensen kan leses
|
||||
// eller være feil på
|
||||
const float offs = 0.05;
|
||||
const float lowB = 1 - offs;
|
||||
const float highB = 1 + offs;
|
||||
|
||||
// Hvor mange målinger som skal snittes
|
||||
const unsigned int maxCount = 10;
|
||||
|
||||
// #### Globale verdier ####
|
||||
double sum = 0;
|
||||
unsigned int count = 0;
|
||||
|
||||
// Variabel for en timeoutfunksjon
|
||||
unsigned long mesTime = 0;
|
||||
|
||||
void setup() {
|
||||
// Starter en seriel kommunikasjonsport for å kunne bruke det
|
||||
// demodulerte signalet gjennom feks en data
|
||||
Serial.begin(9600);
|
||||
// Start opp måling av frekvenser på pinne 8
|
||||
FreqMeasure.begin();
|
||||
|
||||
// Setter pinmode til utgangspinnene
|
||||
pinMode(u_out, OUTPUT);
|
||||
pinMode(b_out, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Dersom biblioteket kan lese frekvenser...
|
||||
if (FreqMeasure.available()) {
|
||||
// Time-out funksjonen
|
||||
mesTime = millis();
|
||||
|
||||
// Summer sammen målinger for å snitte dem
|
||||
sum = sum + FreqMeasure.read();
|
||||
count = count + 1;
|
||||
if (count > maxCount) {
|
||||
// Snitt målingene for å gi en bedre måling
|
||||
float freq = FreqMeasure.countToFrequency(sum / count);
|
||||
|
||||
// Her er grensene for hva som er lav og høy bit på FSK signalet.
|
||||
if (freq > f0 * lowB && freq < f0 * highB) {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, HIGH);
|
||||
Serial.print("LOW : ");
|
||||
}
|
||||
else if (freq > f1 * lowB && freq < f1 * highB) {
|
||||
digitalWrite(b_out, HIGH);
|
||||
digitalWrite(u_out, HIGH);
|
||||
Serial.print("HIGH : ");
|
||||
}
|
||||
else {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, LOW);
|
||||
Serial.print("OFF : ");
|
||||
}
|
||||
Serial.println(freq);
|
||||
sum = 0;
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
else{
|
||||
// Time-out funksjonen, dersom du ikke får noe signal på 10 ms,
|
||||
// sett alle utganger til LOW
|
||||
if (millis() - mesTime > 10){
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, LOW);
|
||||
Serial.println("OFF");
|
||||
delay(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user