Étape 6: Code
La meilleure façon de commencer est en utilisant les croquis de pot analogique qui vient avec l’Arduino. Je vais vous montrer le code que j’ai écrit, mais vous aurez besoin de le modifier pour vos propres besoins. Il vous montre comment les valeurs de l’échelle et vous donne un bon modèle bien.Cette première esquisse utilise des valeurs codées en dur pour le pot. C’est, j’ai vu ce que sortie Arduino pour les postes max et min du pot et ceux utilisés pour comprendre combien le doigt a déménagé :
/*
AnalogReadSerial
Lit une broche d’entrée sur analogique 0, imprime le résultat dans le moniteur de la série.
Fixer la goupille de centrage d’un potentiomètre à broches A0 et l’extérieur épingles à + 5V et le sol.
Cet exemple de code est dans le domaine public.
*/
float analog0 ;
float analog1 ;
flotteur analog2 ;
float analog3 ;
float analog0_close ;
float analog1_close ;
float analog2_close ;
float analog3_close ;
float analog0_open ;
float analog1_open ;
float analog2_open ;
float analog3_open ;
la routine d’installation s’exécute une fois que lorsque vous appuyez sur reset :
void setup() {}
initialiser une communication série 9600 bits par seconde :
Serial.Begin(9600) ;
Serial.println ("Using codé en dur max et min") ;
}
la routine de la boucle s’exécute maintes et maintes fois pour toujours :
void loop() {}
analog0 = analogRead(A0) ;
Analog1 = analogRead(A1) ;
ANALOG2 = analogRead(A2) ;
analog3 = analogRead(A3) ;
L’échelle des valeurs à un éventail de [0,1]
float scaled_thumb = (analog0 - 854.00) /(920.00-854.00) ;
float scaled_point = (analog1 - 860,00) /(923.00-860.00) ;
float scaled_middle = (analog2 - 862.00) /(913.00-862.00) ;
float scaled_ring = (analog3 - 848,00) /(902.00-848.00) ;
Si {(scaled_thumb < 0,00)
scaled_thumb = 0,00 ;
}
Si {(scaled_point < 0,00)
scaled_point = 0,00 ;
}
Si {(scaled_middle < 0,00)
scaled_middle = 0,00 ;
}
Si {(scaled_ring < 0,00)
scaled_ring = 0,00 ;
}
Serial.Print (« pouce: ") ;
Serial.Print(scaled_thumb) ;
Serial.Print ("Point:") ;
Serial.Print(scaled_point) ;
Serial.Print ("moyenne:") ;
Serial.Print(scaled_middle) ;
Serial.Print ("Ring:") ;
Serial.println(scaled_ring) ;
Serial.Print(scaled_point) ;
Delay(1) ; délai entre les lectures pour la stabilité. Utilisez-le pour le débogage
}
Voici une autre version que j’ai écrit et qui essaie de calibrer la position max et min au début. J’ai trouvé que cela ne fonctionne pas tout à fait aussi bien en raison de la souplesse de mon gant.
/*
AnalogReadSerial
Lit une broche d’entrée sur analogique 0, imprime le résultat dans le moniteur de la série.
Fixer la goupille de centrage d’un potentiomètre à broches A0 et l’extérieur épingles à + 5V et le sol.
Cet exemple de code est dans le domaine public.
*/
float analog0 ;
float analog1 ;
flotteur analog2 ;
float analog3 ;
float analog0_close ;
float analog1_close ;
float analog2_close ;
float analog3_close ;
float analog0_open ;
float analog1_open ;
float analog2_open ;
float analog3_open ;
la routine d’installation s’exécute une fois que lorsque vous appuyez sur reset :
void setup() {}
initialiser une communication série 9600 bits par seconde :
Serial.Begin(9600) ;
Serial.println("Calibrating...") ;
Serial.println ("main ouverte. ») ;
Delay(2000) ;
analog0 = analogRead(A0) ;
Analog1 = analogRead(A1) ;
ANALOG2 = analogRead(A2) ;
analog3 = analogRead(A3) ;
analog0_open = analog0 ;
analog1_open = analog1 ;
analog2_open = analog2 ;
analog3_open = analog3 ;
Serial.Print ("acquis:") ;
Serial.Print(analog0_open) ;
Serial.Print("") ;
Serial.Print(analog1_open) ;
Serial.Print("") ;
Serial.Print(analog2_open) ;
Serial.Print("") ;
Serial.println(analog3_open) ;
Serial.println ("main étroite") ;
Delay(2000) ;
analog0 = analogRead(A0) ;
Analog1 = analogRead(A1) ;
ANALOG2 = analogRead(A2) ;
analog3 = analogRead(A3) ;
analog0_close = analog0 ;
analog1_close = analog1 ;
analog2_close = analog2 ;
analog3_close = analog3 ;
Serial.Print ("acquis:") ;
Serial.Print(analog0_close) ;
Serial.Print("") ;
Serial.Print(analog1_close) ;
Serial.Print("") ;
Serial.Print(analog2_close) ;
Serial.Print("") ;
Serial.println(analog3_close) ;
Serial.println ("calibrage complet.") ;
Serial.println("Running...") ;
Delay(2000) ;
}
la routine de la boucle s’exécute maintes et maintes fois pour toujours :
void loop() {}
analog0 = analogRead(A0) ;
Analog1 = analogRead(A1) ;
ANALOG2 = analogRead(A2) ;
analog3 = analogRead(A3) ;
afficher la valeur que vous lisez :
Serial.Print (« pouce: ") ;
Serial.Print(analog0) ;
Serial.Print ("Point:") ;
Serial.Print(Analog1) ;
Serial.Print ("moyenne:") ;
Serial.Print(ANALOG2) ;
Serial.Print ("Ring:") ;
Serial.println(analog3) ;
L’échelle des valeurs à un éventail de [0,1]
float scaled_thumb = (analog0 - analog0_open) / (analog0_close - analog0_open) ;
float scaled_point = (analog1 - analog1_open) / (analog1_close - analog1_open) ;
float scaled_middle = (analog2 - analog2_open) / (analog2_close - analog2_open) ;
float scaled_ring = (analog3 - analog3_open) / (analog3_close - analog3_open) ;
Serial.Print (« pouce: ") ;
Serial.Print(scaled_thumb) ;
Serial.Print ("Point:") ;
Serial.Print(scaled_point) ;
Serial.Print ("moyenne:") ;
Serial.Print(scaled_middle) ;
Serial.Print ("Ring:") ;
Serial.println(scaled_ring) ;
Delay(1) ; délai entre les lectures de stabilité
}