Stap 4: Code
Ik heb deze blog weer gebruikt voor de code. Ik had om te spelen rond met de code want ik had een paar kwesties, maar ik heb reacties gelezen van andere mensen die de code gebruikt en ze had geen problemen. Ik beveel de gevoeligheid aan te passen en zien hoe het werkt voor je.
Bezoek deze blog voor de oorspronkelijke code. Hieronder ziet u dezelfde code, maar met kleine wijzigingen.
Arduino gebaseerd metaal detector
(C) Dzl juli 2013
http://dzlsevilgeniuslair.blogspot.dk
/ Zoek spoel oscillator (20-200kHz) verbinden met pin 5
Verbinding maken met piezo tussen pin 13 en GND
Verbinding maken met NULL knop tussen pin 12 anf GND
VERGEET NIET TE DRUK OP NULL NA POWER UP!
#define SET(x,y) (x | =(1<
#define CLR(x,y) (x & (~(1< =
#define CHK(x,y) (x & (1 <
#define TOG(x,y) (x ^ =(1<
niet-ondertekende lange t0 = 0; -Laatste keer
int t = 0; -tijd tussen ints
unsigned char tflag = 0; -Meting klaar vlag
zweven gevoeligheid = 1000.0; -Wat denk je
-Genereren elke 1000 oscillaties van de zoek spoel onderbreken
Signal(TIMER1_COMPA_vect)
{
OCR1A += 1000;
t = (micros)-t0;
t0 += t;
tflag = 1;
}
VOID Setup
{
Serial.begin(9600);
pinMode(13,OUTPUT); -piëzo pin
digitalWrite(12,HIGH); -NULL SW. pull up
-Opzetten van counter1 rekenen op pin 5
TCCR1A = 0;
TCCR1B = 0X07;
SET(TIMSK1,OCF1A);
}
-Float ABS
float absf(float f)
{
if(f<0.0)
retourneren -f;
anders
retourneren van f;
}
int v0 = 0; -NULL-waarde
vlotter f = 0; -Meting waarde
unsigned int FTW = 0; -Generator klikfrequentie
unsigned int PCW = 0; -Klik op generator fase
niet-ondertekende lange timer = 0; -Klikt u op timer
void loop
{
if(tflag)
{
if(digitalRead(12)==low) //-Check NULL SW.
v0 = t; -Sample nieuwe null-waarde
f = f * 0.9 + absf(t-v0) * 0.1; -Gemiddeld meer dan 10 voorbeelden uitvoeren
tflag = 0; -Reset vlag
zweven clf = f * gevoeligheid; -Converteer meting Klik op frequentie
if(CLF>10000)
CLF = 10000;
FTW = clf;
Serial.println(f);
}
-Klik op generator
if(Millis() > timer)
{
timer += 10;
PCW += FTW;
if(PCW&0x8000)
{
digitalWrite(13,HIGH);
PCW & = 0x7fff;
}
anders
digitalWrite(13,LOW);
}
}
1. Kopieer en plak deze code in een schets van de arduino.
2. Controleer of de code en deze uploaden naar je arduino.