Étape 5: Le schéma et le CODE
Lier les connexions courantes à la terre signifie que vous mettra en oeuvre logique négative. C’est à dire qu’un commutateur Active est indiqué par un faible (GND) sur la broche de Signal de ce commutateur.
Mon exemple de code illustre activant les résistances de pull-up pour les tiges de SIPinput et PUFFinput, donc vous ne serait pas nécessaire d’ajouter des résistances de pull-up dans votre conception. Simplement laisser les commutateurs à conduire leur signal faible pour indiquer qu’il a été activé.
Voici le Segment de Code qui est pertinente à mettre en œuvre cette SIP & PUFF interrupteur dans ma conception :
// ----------------------------------------------------------------
SIP & SEGMENT de CODE pour le contrôle PUFF
Mark Theobald - www.DisabledAdventurers.com
Libre d’utilisation de quelque façon que vous aimez !
// ----------------------------------------------------------------
// ----------------------------------------------------------------
AFFECTATION DES BROCHES
// ----------------------------------------------------------------
int PUFFinput = 9 ;
int SIPinput = 10 ;
// ----------------------------------------------------------------
CONSTANTES de temps - pour oscillateur 16MHz
// ----------------------------------------------------------------
VeryLongCt long = 100000 ; Environ 2 secondes
MinLongCt long = 20000 ; Environ 0,6 seconde
DebounceCt long = 4000 ; Environ 0,1 seconde
// ----------------------------------------------------------------
// ----------------------------------------------------------------
void setup() {}
pinMode (entrée, SIPinput) ;
pinMode (entrée, PUFFinput) ;
digitalWrite (SIPinput, élevé) ; Tourner sur 20k pullup résistances
digitalWrite (PUFFinput, élevé) ; } //to simplifier commutateur entrée
// ----------------------------------------------------------------
// ----------------------------------------------------------------
void loop() {}
int GotCmd ;
long comptoir ;
Compteur = 0 ; Commencez chaque boucle avec le compteur remis à 0
GotCmd = 0 ;
tandis que (! digitalRead (SIPinput)) {//Negative logique est utilisée !
Ajoutez le code ici pour surveiller le monde extérieur et réagir selon les besoins
Si (compteur ++ > VeryLongCt) {}
GotCmd ++ ;
Ajoutez du code au RespondToVeryLongSip() ; sans attendre les sortie Sip
tandis que (! digitalRead (SIPinput)) //then attendez la libération de Sip
Ajoutez le code ici pour surveiller le monde extérieur et réagir selon les besoins
} }
if (!. GotCmd) {//There n’est pas un très Long SIP...
Si (compteur > MinLongCt) //but il a été un Long SIP
Ajoutez du code au RespondToLongSip() ;
ElseIf (compteur > DebounceCt) / / ou, il y avait un Sip court valide
Ajoutez du code au RespondToShortSip() ; }
Compteur = 0 ;
GotCmd = 0 ;
tandis que (! digitalRead (PUFFinput)) {}
Ajoutez le code ici pour surveiller le monde extérieur et réagir selon les besoins
Si (compteur ++ > VeryLongCt) {}
GotCmd ++ ;
Ajoutez du code au RespondToVeryLongPuff() ; sans attendre Puff sortie
tandis que (! digitalRead (PUFFinput)) //then attendez la libération de Puff
Ajoutez le code ici pour surveiller le monde extérieur et réagir selon les besoins
} }
if (!. GotCmd) {}
Si (compteur > MinLongCt) //Long FEUILLETÉE
Ajoutez du code au RespondToLongPuff() ;
ElseIf (compteur > DebounceCt)
Ajoutez du code au RespondToShortPuff() ; } } }
// ----------------------------------------------------------------
FIN DU SEGMENT DE CODE
// ----------------------------------------------------------------
Notez que les Segments de Code pour les sections SIP et le souffle sont identiques.
Quand un SIP ou FEUILLETÉE est maintenue pendant une longue période (2 + secondes), le code suppose que certaines mesures doivent être prises signaler sans délai sans attendre le SIP ou FEUILLETÉE être libéré. Dans le cas contraire, le code s’exécutera "RespondTo... () "fonctions issu des gorgées très court (0,1 à 0,6 seconde) et bouffées et quelque peu gorgées de Longer (0,6 à 2 secondes) et bouffées. Les constantes de temps peut être ajustées comme le sent concepteur est nécessaire.