Étape 2: Étape deux contrôleur
Arduino connecté au téléphone
[quote]
#include #include < [color = #CC6600] .h SPI [/ Color] >
[color = #7E7E7E] / / chaque objet sur l’écran doit être déclarée comme ce [/color]
[color = #CC6600] void [/ Color] [color=#CC6600][b]setup[/b][/color]() {}
setInitialData() ; [color = #7E7E7E] / / appeler cette fonction pour définir vos objets [/ Color]}
[color = #CC6600] void setInitialData() [/color]
{
bluerange.setType(DATA_OUT) ; [color = #7E7E7E] / / définit l’objet comme un affichage boîte [/color] nameOfObjectA.setLocation(0,0,FULL) ; [color = #7E7E7E] / / première rangée, plus à gauche, pleine largeur [/color] nameOfObjectA.setTitle ([color = #006699] "c’est pour le titre bar"[/color]) ; nameOfObjectA.setData ([color = #006699] "c’est pour la area"[/color]) de données ; nameOfObjectA.setUnit ([color = #006699] "cela est destiné à la zone de texte au bas de votre box"[/color]) ;
nameOfObjectB.setId(1) ; [color = #7E7E7E] / / chaque objet doit être attribué à un unique ID numéro [/color] nameOfObjectB.setType(DATA_OUT) ; [color = #7E7E7E] / / définit l’objet comme un affichage boîte [/color] nameOfObjectB.setLocation(1,0,FULL) ; [color = #7E7E7E] / / deuxième rangée, plus à gauche, pleine largeur [/color] nameOfObjectB.setTitle([color=#006699]"Hello"[/color]) ; nameOfObjectB.setData ([color = #006699] « World! » [/ Color]) ; [color = #7E7E7E] / / setUnit est facultatif. Vous n’avez pas besoin de l’afficher tout le temps [/ Color]
}
[color = #CC6600] void [/ Color] [color=#CC6600][b]loop[/b][/color]() {nameOfObjectA.update() ; [color = #7E7E7E] / / Call update() pour faire apparaître sur l’écran [/color] nameOfObjectB.update() ; [color = #7E7E7E] / / et à actualiser son affichage [/ Color]
[color=#CC6600]delay[/color](500) ; [color = #7E7E7E] / / retard pour 500ms (0,5 seconde) avant de répéter le code ci-dessus [/ Color]}
[color = #CC6600] void [/ Color] [color=#CC6600][b]setup[/b][/color]() {Andee. [ Color=#CC6600]Begin[/Color]() ; [color = #7E7E7E] / / installation de communication entre Annikken Andee et Arduino [/color] Andee. [color=#CC6600]clear[/color]() ; [color = #7E7E7E] / / efface l’écran de n’importe quel précédent currentPosition affiche [/ Color] = 0 ; [color = #7E7E7E] / / initialiser la position à 0 [/color] theServo. [color=#CC6600]attach[/color](servoPin) ; [color = #7E7E7E] / / Arduino dire qui épingle le servo est connecté à theServo [/color]. [color=#CC6600]write[/color](currentPosition) ; [color = #7E7E7E] / / Set servo sur la position 0 [/color] setInitialData() ; [color = #7E7E7E] / / définir les types d’objets et de leur apparence [/ Color]} [couleur = #CC6600] void [/color] setInitialData() {btnTurnLeft.setId(0) ; btnTurnLeft.setType(BUTTON_IN) ; btnTurnLeft.setLocation(0,0,HALF) ; btnTurnLeft.setTitle ([couleur = #006699] "tourner Left"[/color]) ; btnTurnLeft.requireAck([color=#CC6600]false[/color]) ; [color = #7E7E7E] / / vous avez besoin de cette ligne afin de permettre plusieurs bouton presses [/color] btnTurnRight.setId(1) ; btnTurnRight.setType(BUTTON_IN) ; btnTurnRight.setLocation(0,1,HALF) ; btnTurnRight.setTitle ([color = #006699] "tourner à Right"[/color]) ; btnTurnRight.requireAck([color=#CC6600]false[/color]) ; [color = #7E7E7E] / / vous avez besoin de cette ligne afin de permettre plusieurs bouton presses [/color] btnCustomPosition.setId(2) ; btnCustomPosition.setType(KEYBOARD_IN) ; [color = #7E7E7E] / / ensembles d’objet comme un texte d’entrée bouton [/color] btnCustomPosition.setLocation(1,0,FULL) ; btnCustomPosition.setTitle ([color = #006699] "passer rapidement à la Position personnalisée (0 - 180)"[/color]) ; btnCustomPosition.setKeyboardType(ANDEE_NUMERIC_A) ;
displaybox.setId(3) ; displaybox.setType(DATA_OUT) ; [color = #7E7E7E] / / ensembles d’objet comme un texte d’entrée bouton [/color] displaybox.setLocation(2,0,FULL) ; displaybox.setTitle ([color = #006699] "Position"[/color]) actuelle ; displaybox.setData(0) ; } [color = #CC6600] void [/ Color] [color=#CC6600][b]loop[/b][/color]() {[color = #CC6600] si [/ color] (btnCustomPosition. [ Color=#CC6600]IsPressed[/Color]()) {memset (userPos, 0 x 00, 4) ; [color = #7E7E7E] / / vider le contenu de la chaîne avant de recevoir l’utilisateur entrée [/color] btnCustomPosition.ack() ; [color = #7E7E7E] / / reconnaître sur une touche ou bien téléphone est laissé en attente [/color] btnCustomPosition.getKeyboardMessage(userPos) ; [color = #7E7E7E] / / afficher le clavier et stocker des entrées dans userInput [/color]
newPosition = atoi(userPos) ; [couleur = #7E7E7E] / / convertir la valeur de chaîne en valeur entière [/color] [color = #7E7E7E] / / dire Arduino x Andee quoi faire si l’utilisateur clés en valeurs ridicules [/ Color] [couleur = #CC6600] si [/ color] newPosition (newPosition < 0) = 0 ; [color = #CC6600] si [/ color] newPosition (newPosition > 180) = 180 ; currentPosition = newPosition ; [color = #7E7E7E] / / c’est comment vous faire un rapide tour [/color] theServo. [color=#CC6600]write[/color](currentPosition) ; [color = #7E7E7E] / / Mettez le servo sur la nouvelle position [/color] displaybox.setData(currentPosition) ; [color = #7E7E7E] / / mise à jour de la nouvelle position [/ Color]} [couleur = #CC6600] si [/color] (btnTurnLeft.getButtonPressCount() > 0) [color = #7E7E7E] / / aussi longtemps que vous appuyez sur le bouton gauche [/color] {btnTurnLeft.ack() ; [color = #7E7E7E] / / reconnaître sur une touche ou bien téléphone est laissé en attente [/color] newPosition = currentPosition - turnResolution ; [color = #7E7E7E] / / redéfinir la position [/color] [color = #CC6600] si [/ color] newPosition (newPosition < 0) = 0 ; [couleur = #7E7E7E] / / mettre à 0 si le nouveau poste descend au-dessous de 0 [/ Color] [color = #7E7E7E] / / Voici comment faire un virage lent: [/ color] [color = #CC6600] pour [/ color] (currentPosition ; currentPosition > newPosition ; currentPosition--) {theServo. [ Color=#CC6600]Write[/Color](CurrentPosition) ; displaybox.setData(currentPosition) ; [color = #7E7E7E] / / mettre à jour la position du servo à l’écran comme il tourne [/color] displaybox.update() ; [color=#CC6600]delay[/color](15) ; [color = #7E7E7E] / / vous pouvez changer la valeur de délai. Plus grande valeur signifie tour à tour plus lent [/color] [color = #7E7E7E] / / ne définissez pas de votre retard à 0 lorsque vous faites cela. Vous exécutez la possibilité de [/color] [color = #7E7E7E] / / endommager le servo. Ou vous pourriez juste faire devenir plus grincheux. [/ Color]} } [color = #CC6600] si [/color] (btnTurnRight.getButtonPressCount() > 0) [color = #7E7E7E] / / aussi longtemps que vous appuyez sur bouton droit [/color] {btnTurnRight.ack() ; [color = #7E7E7E] / / reconnaître sur une touche ou bien téléphone est laissé en attente [/color] newPosition = currentPosition + turnResolution ; [color = #7E7E7E] / / redéfinir la position [/color] [color = #CC6600] si [/ color] newPosition (newPosition > 180) = 180 ; [color = #7E7E7E] / / Set à 180 si nouveau poste dépasse 180 [/color] [color = #CC6600] pour [/ color] (currentPosition ; currentPosition < newPosition ; currentPosition ++) {theServo. [ Color=#CC6600]Write[/Color](CurrentPosition) ; displaybox.setData(currentPosition) ; [color = #7E7E7E] / / mettre à jour la position du servo à l’écran comme il tourne [/color] displaybox.update() ; [color=#CC6600]delay[/color](15) ; [color = #7E7E7E] / / vous pouvez changer la valeur de délai. Plus grande valeur signifie tour à tour plus lent [/ Color]}} btnTurnLeft.update() ; [color = #7E7E7E] / / n’oubliez pas de mettre à jour afin que le nouveau contenu sera affiché [/color] btnTurnRight.update() ; btnCustomPosition.update() ; displaybox.Update() ; [color=#CC6600]delay[/color](500) ; }
[/ quote]