Étape 6: Code de téléchargement
Broches de la LED
int LEDPin = 13 ;
int LEDPin1 = 12 ;
int LEDPin2 = 11 ;
int LEDPin3 = 10 ;
int LEDPin4 = 9 ;
int LEDPin5 = 8 ;
int capSensePin = 2 ;
C’est à quelle hauteur le capteur a besoin de lire dans l’ordre
pour déclencher une touche. Vous trouverez ce numéro
par essais et erreurs, ou vous pourriez prendre des lectures à
le début du programme calculer dynamiquement.
int touchedCutoff = 19 ;
int Cutoff = 20 ;
int Cutoff1 = 21 ;
int Cutoff2 = 22 ;
int Cutoff3 = 23 ;
int Cutoff4 = 24 ;
int Cutoff5 = 25 ;
void setup() {}
Serial.Begin(9600) ;
Mettre en place la LED
pinMode (LEDPin, sortie) ;
pinMode (LEDPin1, sortie) ;
pinMode (LEDPin2, sortie) ;
pinMode (LEDPin3, sortie) ;
pinMode (LEDPin4, sortie) ;
pinMode (LEDPin5, sortie) ;
digitalWrite (LEDPin, basse) ;
}
void loop() {}
Si le capteur capacitif mesure dépassant un certain seuil,
allumer la LED
Si (readCapacitivePin(capSensePin) > touchedCutoff) {}
digitalWrite (LEDPin, élevé) ;
}
else {}
digitalWrite (LEDPin, basse) ;
}
Si (readCapacitivePin(capSensePin) > Cutoff) {}
digitalWrite (LEDPin1, élevé) ;
}
else {}
digitalWrite (LEDPin1, basse) ;
}
Si (readCapacitivePin(capSensePin) > Cutoff1) {}
digitalWrite (LEDPin2, élevé) ;
}
else {}
digitalWrite (LEDPin2, basse) ;
}
Si (readCapacitivePin(capSensePin) > Cutoff2) {}
digitalWrite (LEDPin3, élevé) ;
}
else {}
digitalWrite (LEDPin3, basse) ;
}
Si (readCapacitivePin(capSensePin) > Cutoff3) {}
digitalWrite (LEDPin4, élevé) ;
}
else {}
digitalWrite (LEDPin4, basse) ;
}
Si (readCapacitivePin(capSensePin) > Cutoff4) {}
digitalWrite (LEDPin5, élevé) ;
}
else {}
digitalWrite (LEDPin5, basse) ;
}
Toutes les 500 ms, imprimer la valeur du capteur capacitif
Si ((millis() % 500) == 0) {}
Serial.Print ("capteur capacitif sur broche 2 se lit:") ;
Serial.println(readCapacitivePin(capSensePin)) ;
}
}
readCapacitivePin
D’entrée : Numéro d’identification Arduino
Sortie : Un nombre, de 0 à 17 exprimant
Combien capacitance est sur la broche
Quand vous touchez la broche, ou ce que vous avez
attaché à elle, le nombre obtiendrez plus élevé
Afin que cela fonctionne maintenant,
Le code pin doit avoir un + 1 Megaohm résistance traction
Il place à + 5v.
uint8_t readCapacitivePin (int pinToMeasure) {}
C’est comment vous déclarez une variable qui
tiendra les registres PORT PIN et DDR
sur un AVR
volatils uint8_t * port ;
volatils uint8_t * ddr ;
volatils uint8_t * tige ;
Ici nous traduisons le nombre de broches d’entrée de
Arduino code PIN au PORT d’AVR, broches, DDR,
et que peu de ces registres, nous nous soucions.
masque de bits octets ;
Si ((pinToMeasure > = 0) & & (pinToMeasure < = 7)) {}
port = & PORTD ;
DDR = & DDDR ;
masque de bits = 1 << pinToMeasure ;
pin = & PIND ;
}
Si ((pinToMeasure > 7) & & (pinToMeasure < = 13)) {}
port = & PORTB ;
DDR = & DDRB ;
masque de bits = 1 << (pinToMeasure - 8) ;
pin = & PINB ;
}
Si ((pinToMeasure > 13) & & (pinToMeasure < = 19)) {}
port = & PORTC ;
DDR = & DDRC ;
masque de bits = 1 << (pinToMeasure - 13) ;
pin = & PINC ;
}
Décharger la broche tout d’abord en lui affectant faible et de sortie
* port & = ~ (masque) ;
* ddr | = masque de bits ;
Delay(1) ;
Faire de la broche une entrée sans le pull-up interne sur
* ddr & = ~ (masque) ;
Voyons maintenant combien de temps la goupille pour obtenir tiré vers le haut
cycles d’int = 16000 ;
pour (int i = 0; i < cycles; i ++) {}
Si (* NIP & masque de bits) {}
cycles = i ;
rupture ;
}
}
Décharger la goupille à nouveau en lui affectant faible et de sortie
Il est important de laisser les broches faible si vous voulez
être en mesure de toucher plus de 1 capteur à la fois - si
le capteur est laissé tiré haut, quand vous touchez
deux capteurs, votre corps va transférer la charge entre les
capteurs.
* port & = ~ (masque) ;
* ddr | = masque de bits ;
retour cycles ;
}