Étape 4: Code
Encore une fois, j’ai utilisé ce blog pour le code. J’ai eu à jouer avec le code parce que j’ai eu quelques problèmes, mais j’ai lu les commentaires d’autres personnes qui ont utilisé le code et qu’ils n’avaient pas de problèmes. Je recommande le réglage de la sensibilité et de voir comment cela fonctionne pour vous.
Visitez ce blog pour le code d’origine. Voici le même code, mais avec des modifications mineures.
Arduino base de détecteur de métaux
(C) Dzl juillet 2013
http://dzlsevilgeniuslair.blogspot.dk
/ Connecter oscillateur de bobine de recherche (20 à 200kHz) à la broche 5
Se connecter piezo entre la broche 13 et GND
Connectez NULL touche entre la broche 12 anf GND
PENSEZ À APPUYER SUR LE BOUTON NULL APRÈS PUISSANCE VERS LE HAUT!!
#define Set (x | =(1<
#define CLR(x,y) (x & = (~(1<
#define CHK(x,y) (x & (1 <
#define TOG(x,y) (x ^ =(1<
unsigned long t0 = 0 ; -Dernière fois
int t = 0 ; -temps entre entiers (ints)
unsigned char tflag = 0 ; -Pavillon prêt mesure
flotter la sensibilité = 1000.0 ; -Devinez quoi
-Générer interrompre chaque oscillations de 1000 de la tête de détection
SIGNAL(TIMER1_COMPA_vect)
{
OCR1A += 1000 ;
t = micros ()-t0 ;
T0 = t ;
tflag = 1 ;
}
void setup()
{
Serial.Begin(9600) ;
pinMode(13,OUTPUT) ; piezo - broche
digitalWrite(12,HIGH) ; -Tirer NULL SW.
-Mettre en place counter1 de compter sur la broche 5
TCCR1A = 0 ;
TCCR1B = 0 X 07 ;
SET(TIMSK1,OCF1A) ;
}
-Flotteur ABS
flotteur absf(float f)
{
if(f<0.0)
retour -f ;
d’autre
retour f ;
}
int v0 = 0 ; -Valeur NULL
flotteur f = 0 ; -Valeur de mesure
unsigned int FTW = 0 ; -Générateur taux de clic
unsigned int PCW = 0 ; -Cliquez sur phase de générateur
unsigned long timer = 0 ; -Cliquez sur minuterie
void loop()
{
if(tflag)
{
if(digitalRead(12)==Low) //-Check SW NULL.
v0 = t ; -Nouvelle valeur null échantillon
f = f * 0,9 + absf(t-v0) * 0,1 ; -Moyens plus de 10 échantillons
tflag = 0 ; -Réinitialisez le drapeau
flotteur NSI = f * sensibilité ; -Convertir la mesure pour cliquez sur fréquence
if(CLF>10000)
FCM = 10000 ;
FTW = NSI ;
Serial.println(f) ;
}
-Cliquez sur générateur
if(Millis() > minuterie)
{
minuterie += 10 ;
PCW += FTW ;
if(PCW&0x8000)
{
digitalWrite(13,HIGH) ;
PCW & = 0x7fff ;
}
d’autre
digitalWrite(13,LOW) ;
}
}
1. Copiez et collez ce code dans une esquisse de l’arduino.
2. Vérifiez le code et transférez-le sur votre arduino.