Étape 3: Arduino Code partie 1
#include « pitches.h »momentarty interrupteur broche
const int buttonPin = 12 ;
buttonState int = 0 ;
Valeur de la sonde mappé
int backPos ;
Valeur pour la position « normale »
int basePos = 40 ;
broche numérique moteur de vibration
int vibePin = 9 ;
broche numérique buzzer
int buzzerPin = 13 ;
longueur du délai entre les alarmes
intervalAlarm long = 400 ;
stockera une dernière fois sonnerie a été mis à jour
long previousMillisAlarm = 0 ;
valeur int, valeur2 ;
long temps = 0 ;
periode d’int = 100 ;
int déplacer = 500 ;
void setup() {}
Serial.Begin(9600) ;
Initialiser les broches appropriées aux entrées ou sorties
pinMode (vibePin, sortie) ;
pinMode (buzzerPin, sortie) ;
pinMode (buttonPin, entrée) ;
}
void loop() {}
Commencer à lire l’y valeurs de l’axe venant de l’accéléromètre.
yAxis int = analogRead(A0) ;
mapper les valeurs à une plage qui est plus facile de travailler avec (1-100).
backPos = carte (abscisses, 240,400,0,100) ;
commencer la lecture de l’état du bouton
buttonState = digitalRead(buttonPin) ;
Si le bouton définir la valeur de base position actuelle vers l’arrière
Cela définit un état « normal » que le code mesure une différence de.
Si (buttonState == HIGH) {}
basePos = backPos ; }
Si backPos est dans une mauvaise position
Si (backPos > basePos + 5) {}
Allumez le moteur de vibration
vibeMotor() ;
Allumez le buzzer piezo
Alarm() ;
}
dans le cas contraire éteignez le moteur et le buzzer
else {}
digitalWrite (vibePin, basse) ;
digitalWrite (buzzerPin, basse) ;
}
}
Fuction qui contrôle le buzzer piezo
alarm() Sub {}
Utilisez clin avec bibliothèque de logique et de ton retard pour l’alarme d’impulsion.
unsigned long currentMillisAlarm = millis() ;
Si (currentMillisAlarm - previousMillisAlarm > intervalAlarm) {}
réinitialiser le « timer » previousMillisAlarm = currentMillisAlarm ;
tourner sur ton buzzer (buzzerPin, 65 200) ;
}
}
Fuction qui contrôle le moteur de vibration
void vibeMotor() {}
Fade sans impulsions de logique de retard, le moteur de vibration.
temps = millis() ; valeur = 128+127*cos(2*PI/periode*time) ;
value2 = 128+127*cos(2*PI/periode*(displace-time)) ;
analogWrite (vibePin, valeur) ;
}