Arduino handske metalldetektor (4 / 7 steg)
Steg 4: kod
Återigen har jag använt denna blogg för koden. Jag var tvungen att leka med koden eftersom jag hade några frågor, men jag har läst kommentarer från andra människor som har använt koden och de hade inga problem. Jag rekommenderar justera känsligheten och se hur det fungerar för dig.
Besök denna blogg för den ursprungliga koden. Nedan är samma kod, men med mindre förändringar.
Baserade Arduino metalldetektor
(C) Dzl juli 2013
http://dzlsevilgeniuslair.blogspot.dk
/ Connect search spole oscillator (20-200kHz) till stift 5
Ansluta piezo mellan stift 13 och GND
NULL-anslutningsknappen mellan stift 12 anf GND
KOM IHÅG ATT TRYCKA NULL-KNAPPEN EFTER MAKT UPP!
#define set (x | =(1<
#define CLR(x,y) (x & = (~(1<
#define CHK(x,y) (x & (1 <
#define TOG(x,y) (x ^ =(1<
osignerade långa t0 = 0; -Förra gången
int t = 0; -tid mellan ints
unsigned char tflag = 0; -Mätning redo flagga
flyta känslighet = 1000.0; -Gissa vad
-Generera avbryta varje 1000 svängningar av Sök spolen
SIGNAL(TIMER1_COMPA_vect)
{
OCR1A += 1000;
t = micros ()-t0;
t0 += t;
tflag = 1;
}
void setup()
{
Serial.BEGIN(9600);
pinMode(13,OUTPUT); piezo - pin
digitalWrite(12,HIGH); -NULL SW. dra upp
-Ställ in counter1 att räkna på stift 5
TCCR1A = 0;
TCCR1B = 0X07;
SET(TIMSK1,OCF1A);
}
-Float ABS
float absf(float f)
{
IF(f<0.0)
återvända -f;
annat
returnera f;
}
int v0 = 0; -NULL-värde
flyta f = 0; -Mätning värdet
unsigned int FTW = 0; -Klicka på generera ränta
unsigned int PCW = 0; -Klicka på generator fas
osignerade långa timer = 0; -Klicka på timer
void loop()
{
IF(tflag)
{
IF(digitalRead(12)==Low) //-Check NULL SW.
v0 = t; -Provet nya null-värde
f = f * 0,9 + absf(t-v0) * 0,1; -Genomsnittlig över 10 prover
tflag = 0; -Återställ flagga
flyta clf = f * känslighet; -Konvertera mätning för att klicka på frekvens
IF(CLF>10000)
CLF = 10000;
FTW = clf;
Serial.println(f);
}
-Klicka på generator
IF(Millis() > timer)
{
timer += 10.
PCW += FTW;
IF(PCW&0x8000)
{
digitalWrite(13,HIGH);
PCW & = 0x7fff;
}
annat
digitalWrite(13,LOW);
}
}
1. Kopiera och klistra in denna kod i en arduino skiss.
2. Kontrollera koden och ladda upp den till din arduino.