Étape 9: Plus éloigné : Bluetooth, contrôlée par téléphone Android
Voir mon précédent panzer bluetooth sans appareil photo. Elle est contrôlée par téléphone Android. Quatre 555 Timer ICs conduire son REDUCTEUR double. Ne vous attendez pas de vitesse:D
Se connecter sur le diagramme ci-dessus et téléchargez ce croquis :
/ * Chienline @ 2014 majoritaire un réservoir/voiture d’Arduino utilisant un Android phone sur la connexion Bluetooth. Logiciel Android : Arduino Bluetooth RC voiture par Andi.Co [en PlayStore]. Certains codes sont passées sous les codes officiels s’il fonctionne avec mon moteur bricolage. * / char dataIn = s ' ; Caractère/données provenant du téléphone. S = arrêt ; int LCPin = 2 ; 555 brochage 5 gauche moteur int LTPin = 3 ; 555 brochage 2 moteur gauche int RCPin = 4 ; 555 brochage 5 moteur droit int RTPin = 5 ; pinfrontLights de droit Motorint brochage 2 555 = 6 ; NIP qui active les lumières avant. int pinbackLights = 7 ; NIP qui active les feux arrière. déterminant de char ; Utilisé dans la fonction de contrôle, magasins, le personnage a reçu depuis le téléphone. det de char ; Utilisé dans la fonction de boucle, magasins, le personnage a reçu depuis le téléphone. Vitesse int = 0 ; Stocke la vitesse basée sur le personnage envoyé par le phone.void setup() {Serial.begin(9600) ; //Initialize communication série avec module Bluetooth à 9600 baud rate. pinMode (LCPin, OUTPUT); pinMode (RCPin, OUTPUT); pinMode (RTPin, sortie); pinMode (LTPin, sortie), pinMode (pinfrontLights, sortie); pinMode (pinbackLights, sortie); //Stop les deux moteurs sur la puissance vers le haut stopMotors();} void loop() {det = check() ; while (det == « F ») //if données entrantes sont un F, aller de l’avant {moveForward() ; det = check();} tandis que (det == « B ») //if données entrantes sont un B, reculer {moveBackward() ; det = check();} tandis que (det == « L ») //if données entrantes sont un L, déplacer les roues gauche {moveLeftForward() ; det = check();} tandis que (det == « R ») //if données entrantes sont un R, déplacer les roues droite {moveRightForward() ; det = check();} tandis que (det == « I ») //if données entrantes sont un je , tourner à droite vers l’avant {moveRightForward() ; det = check();} tandis que (det == « J ») //if données entrantes sont un J, tournez tout de suite {moveRightBackward() ; det = check();} tandis que (det == « G ») //if données entrantes sont un G, tourner à gauche vers l’avant {moveLeftForward() ; det = check();} tandis que (det == « H ») //if données entrantes sont un H, tourner à gauche, retour {moveLeftBackward() ; det = check();} tandis que (det == les de ') //if données entrantes sont un S, stop {stopMotors() ; det = check();} Avant et arrière lumières marche/arrêt sont cool, mais pour commencer je n’ai pas raccorder à mon circuit. Mais je laisse la détection dans le code pour une utilisation ultérieure. tandis que (det == « U ») //if données entrantes sont un U, allumer les phares avant {digitalWrite (pinfrontLights, HIGH); det = check();} tandis que (det == « u ») //if données entrantes sont un u, éteindre les lumières avant {digitalWrite (pinfrontLights, LOW); det = check();} tandis que (det == « W ») //if données entrantes sont un W, allumez les feux arrière {digitalWrite (pinbackLights, HIGH); det = check();} tandis que (det == « w ») //if données entrantes sont un w Éteignez les lumières arrière {digitalWrite (pinbackLights, LOW); det = check();}} check() int {si (Serial.available() > 0) //Check pour les données sur les lignes de série. {dataIn = Serial.read() ; //Get le personnage envoyé par le téléphone et stockez-la dans « dataIn ». / / Serial.println(dataIn) ; //this ligne est pour le débogage en utilisant Arduino serial monitor. si (dataIn == « F ») {déterminant = « F »;} ElseIf (dataIn == « B ») {déterminant = « B »;} ElseIf (dataIn == « L ») {déterminant = « L »;} ElseIf (dataIn == « R ») {déterminant = « R »;} ElseIf (dataIn == « I ») {déterminant = « I »;} ElseIf (dataIn == « J ») {déterminant = « J »;} ElseIf (dataIn == « G ») {déterminant = « G »;} ElseIf (dataIn == « H ») {déterminant = « H »;} ElseIf (dataIn == de ') {déterminant = les de ';} / /---//Standard DC Les moteurs ne sont pas assez rapides pour jouer avec la vitesse. Vous pouvez définir la vitesse à l’aide de l’ergot de 555 avec analogWrite() ; Je parie que vous ne voulez pas faire votre plein plus lent que ses plus de vitesse à l’aide de moteurs DC standard. / *---ElseIf (dataIn == « 0 ») //velocity = 0 - 9, q = vitesse de pointe. {Vitesse = 20; / / value = 0 - 255 ; « vélocité » n’a pas besoin d’être retourné. }---* / ElseIf (dataIn == 'U') {déterminant = 'U';} ElseIf (dataIn == 'u') {déterminant = 'u';} ElseIf (dataIn == "W") {déterminant = "W";} ElseIf (dataIn == "w") {déterminant = "w";}} retour déterminant ; } //These fonctions de direction sont conçues pour 555 moteur pilote //You il fallait les modifier en fonction de vos autres moveForward() moteur drivers.void {digitalWrite (LCPin, élevé); digitalWrite (LTPin, élevé); //L-Forward digitalWrite (RCPin, élevé); digitalWrite (RTPin, HIGH); //R-Forward} void moveBackward() {digitalWrite (LCPin, élevé); digitalWrite (LTPin, basse); //L-Backward digitalWrite (RCPin, élevé); digitalWrite (RTPin, basse); //R-Backward} void stopMotors() {digitalWrite (LCPin, LOW); digitalWrite (LTPin, HIGH); //L-Stop digitalWrite (RCPin FAIBLE) ; digitalWrite (RTPin, élevé) ; R-Stop} void moveLeftForward() {digitalWrite (LCPin, élevée); digitalWrite (LTPin, basse); //left roue arrière digitalWrite (RCPin, élevé); digitalWrite (RTPin, élevée); //right roue avant} void moveRightForward() {digitalWrite (RCPin, élevé); digitalWrite (RTPin, basse); //right roue arrière digitalWrite (LCPin, élevé); digitalWrite (LTPin, élevé); //left roue avant} void moveLeftBackward() {digitalWrite (LCPin, élevé); digitalWrite (LTPin, élevé); //left roue avant digitalWrite (RCPin, HIGH); digitalWrite (RTPin, LOW); //right roue arrière} void moveRightBackward() {digitalWrite (LCPin ÉLEVÉ) ; digitalWrite (LTPin, basse) ; gauche de roue arrière digitalWrite (RCPin, élevé) ; digitalWrite (RTPin, élevé) ; la roue droite avant}