Arduino + voiture + Android = RC (2 / 5 étapes)

Étape 2: Programmation votre Arduino UNO

Maintenant vous êtes prêt à aller, mais vous devez configurer votre arduino pour effectuer des tours

Dans ce cas, j’ai utilisé une application nommée commandant Bluetooth disponibles dans le jeu de google. L’esquisse de démonstration est disponible dans la colonne description.

Une autre application appelée jeu google Android Bluetooth est très facile à utiliser que vous pouvez l’utiliser directement la seule différence est que le premier peut contrôler la vitesse de la voiture. Donc, je préfère à la première,

Télécharger l’application et l’esquisse de démonstration

Il ressemble à ceci

 #define VERSION "\n\nAndroTest V2.0 - for V5.X App (6 button version)"// V2.0 changed to pure ASCII Communication Protocol ** not backward compatible ** // V1.4 improved communication errors handling // V1.3 renamed for publishing, posted on 09/05/2014 // V1.2 Text display ** not backward compatible ** // V1.1 Integer display // V1.0 6 buttons + 4 data char implemented// Demo setup: // Button #1 controls pin #13 LED // Button #4 toggle datafield display rate // Button #5 configured as "push" button (momentary) // Other buttons display demo message// Arduino pin#2 to TX BlueTooth module // Arduino pin#3 to RX BlueTooth module // make sure your BT board is set bps // better remove SoftSerial for PWM based projects// For Mega 2560: // remove #include "SoftwareSerial.h", SoftwareSerial mySerial(2,3); // search/replace mySerial >> Serial1 // pin#18 to RX bluetooth module, pin#19 to TX bluetooth module#include "SoftwareSerial.h"#define STX 0x02 #define ETX 0x03 #define ledPin 13 #define SLOW 750 // Datafields refresh rate (ms) #define FAST 250 // Datafields refresh rate (ms)SoftwareSerial mySerial(2,3); // BlueTooth module: pin#2=TX pin#3=RX byte cmd[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // bytes received byte buttonStatus = 0; // first Byte sent to Android device long previousMillis = 0; // will store last time Buttons status was updated long sendInterval = SLOW; // interval between Buttons status transmission (milliseconds) String displayStatus = "xxxx"; // message to Android devicevoid setup() { Serial.begin(57600); mySerial.begin(57600); // 57600 = max value for softserial pinMode(ledPin, OUTPUT); Serial.println(VERSION); while(mySerial.available()) mySerial.read(); // empty RX buffer }void loop() { if(mySerial.available()) { // data received from smartphone delay(2); cmd[0] = mySerial.read(); if(cmd[0] == STX) { int i=1; while(mySerial.available()) { delay(1); cmd[i] = mySerial.read(); if(cmd[i]>127 || i>7) break; // Communication error if((cmd[i]==ETX) && (i==2 || i==7)) break; // Button or Joystick data i++; } if (i==2) getButtonState(cmd[1]); // 3 Bytes ex: < STX "C" ETX > else if(i==7) getJoystickState(cmd); // 6 Bytes ex: < STX "200" "180" ETX > } } sendBlueToothData(); }void sendBlueToothData() { static long previousMillis = 0; long currentMillis = millis(); if(currentMillis - previousMillis > sendInterval) { // send data back to smartphone previousMillis = currentMillis; // Data frame transmitted back from Arduino to Android device: // < 0X02 Buttons state 0X01 DataField#1 0x04 DataField#2 0x05 DataField#3 0x03 > // < 0X02 "01011" 0X01 "120.00" 0x04 "-4500" 0x05 "Motor enabled" 0x03 > // example mySerial.print((char)STX); // Start of Transmission mySerial.print(getButtonStatusString()); mySerial.print((char)0x1); // buttons status feedback mySerial.print(GetdataInt1()); mySerial.print((char)0x4); // datafield #1 mySerial.print(GetdataFloat2()); mySerial.print((char)0x5); // datafield #2 mySerial.print(displayStatus); // datafield #3 mySerial.print((char)ETX); // End of Transmission } }String getButtonStatusString() { String bStatus = ""; for(int i=0; i<6; i++) { if(buttonStatus & (B100000 >>i)) bStatus += "1"; else bStatus += "0"; } return bStatus; }int GetdataInt1() { // Data dummy values sent to Android device for demo purpose static int i= -30; // Replace with your own code i ++; if(i >0) i = -30; return i; }float GetdataFloat2() { // Data dummy values sent to Android device for demo purpose static float i=50; // Replace with your own code i-=.5; if(i <-50) i = 50; return i; }void getJoystickState(byte data[8]) { int joyX = (data[1]-48)*100 + (data[2]-48)*10 + (data[3]-48); // obtain the Int from the ASCII representation int joyY = (data[4]-48)*100 + (data[5]-48)*10 + (data[6]-48); joyX = joyX - 200; // Offset to avoid joyY = joyY - 200; // transmitting negative numbers if(joyX<-100 || joyX>100 || joyY<-100 || joyY>100) return; // commmunication error // Your code here ... Serial.print("Joystick position: "); Serial.print(joyX); Serial.print(", "); Serial.println(joyY); }void getButtonState(int bStatus) { switch (bStatus) { // ----------------- BUTTON #1 ----------------------- case 'A': buttonStatus |= B000001; // ON Serial.println("\n** Button_1: ON **"); // your code... displayStatus = "LED "; Serial.println(displayStatus); digitalWrite(ledPin, HIGH); break; case 'B': buttonStatus &= B111110; // OFF Serial.println("\n** Button_1: OFF **"); // your code... displayStatus = "LED "; Serial.println(displayStatus); digitalWrite(ledPin, LOW); break;// ----------------- BUTTON #2 ----------------------- case 'C': buttonStatus |= B000010; // ON Serial.println("\n** Button_2: ON **"); // your code... displayStatus = "Button2 "; Serial.println(displayStatus); break; case 'D': buttonStatus &= B111101; // OFF Serial.println("\n** Button_2: OFF **"); // your code... displayStatus = "Button2 "; Serial.println(displayStatus); break;// ----------------- BUTTON #3 ----------------------- case 'E': buttonStatus |= B000100; // ON Serial.println("\n** Button_3: ON **"); // your code... displayStatus = "Motor #1 enabled"; // Demo text message Serial.println(displayStatus); break; case 'F': buttonStatus &= B111011; // OFF Serial.println("\n** Button_3: OFF **"); // your code... displayStatus = "Motor #1 stopped"; Serial.println(displayStatus); break;// ----------------- BUTTON #4 ----------------------- case 'G': buttonStatus |= B001000; // ON Serial.println("\n** Button_4: ON **"); // your code... displayStatus = "Datafield update "; Serial.println(displayStatus); sendInterval = FAST; break; case 'H': buttonStatus &= B110111; // OFF Serial.println("\n** Button_4: OFF **"); // your code... displayStatus = "Datafield update "; Serial.println(displayStatus); sendInterval = SLOW; break;// ----------------- BUTTON #5 ----------------------- case 'I': // configured as momentary button // buttonStatus |= B010000; // ON Serial.println("\n** Button_5: ++ pushed ++ **"); // your code... displayStatus = "Button5: "; break; // case 'J': // buttonStatus &= B101111; // OFF // // your code... // break;// ----------------- BUTTON #6 ----------------------- case 'K': buttonStatus |= B100000; // ON Serial.println("\n** Button_6: ON **"); // your code... displayStatus = "Button6 "; // Demo text message break; case 'L': buttonStatus &= B011111; // OFF Serial.println("\n** Button_6: OFF **"); // your code... displayStatus = "Button6 "; break; } // --------------------------------------------------------------- } 

Articles Liés

Commande vocale Arduino (Bluetooth + Android)

Commande vocale Arduino (Bluetooth + Android)

Contrôler votre Arduino avec commandes vocales à l'aide d'un smartphone Android ! Avant de faire un système de domotique activé par la voix, nous devons d'abord apprendre les principes de base de l'expérience. Ce guide vous permettra de commander l'A
Comment faire pour installer un système stéréo de voiture Android 2-DIN

Comment faire pour installer un système stéréo de voiture Android 2-DIN

Un système stéréo de voiture Android est un dispositif très chouette d'avoir dans votre véhicule. Ces appareils contiennent Android pour les voitures, avec le système d'exploitation optimisé pour une utilisation sur la route. Certains viennent même a
Capuchon d’Arduino y Android NFC 1

Capuchon d’Arduino y Android NFC 1

OS presentamos una nueva serie de tutoriales en la que trastearemos ne con la tecnología NFC, aun llevando algunos años en el mercado aucun termina de extenderse al publico général. Y es que esta tecnologia tiene muchas utilidades que pueden hacer ca
Interactive Design et génération de Code personnalisé menus Android pour Arduino--aucun Android de programmation requis

Interactive Design et génération de Code personnalisé menus Android pour Arduino--aucun Android de programmation requis

Mise à jour : Découvrez le nouveaux InstructableAndriod/Arduino pour débutants - Design Custom Andriod menus pour activer et désactiver les sorties de l'Arduino. Absolument aucune programmation requisequi génère tout le code de l'Arduino pour vous en
La reconnaissance vocale de l’Arduino avec Android

La reconnaissance vocale de l’Arduino avec Android

Hey amis!! Depuis mon premier tutoriel pour contrôler les moteurs avec Android, je me demandais si je peux commander un robot avec mon discours, ne serait-il pas intéressant?? Avec l'aide de l'inventeur app MIT j'ai donc été en mesure de contrôler l'
Voiture Android s’allume avec la musique

Voiture Android s’allume avec la musique

voiture Android s'allume avec la musiqueEn utilisant un pilote d'un bâton de led bleu pour tunning voiture pour faire la lumière led avec la musique.
ITEAD Intelligent interrupteur fonctionne avec Arduino et Android

ITEAD Intelligent interrupteur fonctionne avec Arduino et Android

ITEAD offrent maintenant les switchs intelligents qui prennent en charge tactile et commande à distance, et il sera très facile à pirater et le faire fonctionner avec votre téléphone Arduino et Andriod. Nous montrons ici vous qu'une petite démo et pl
Piratage d’une voiture RC avec Arduino et Android

Piratage d’une voiture RC avec Arduino et Android

(Si vous aimez ce Instructable, n'oubliez pas de voter à ce sujet (ci-dessus : drapeau de coin à droite). il est en concurrence sur la robotique et des concours de capteurs. Merci beaucoup! ;-)Chaque fois que je marche dans un magasin de jouets et vo
Piratage de ma voiture RC en utilisant Arduino et Android Smart Phone

Piratage de ma voiture RC en utilisant Arduino et Android Smart Phone

Avoir une vieille voiture de jouet ? J'ai piraté mine à l'aide d'Arduino et un circuit de pont H pour commander les moteurs, utilisé mon téléphone Android de Sony Z1 pour combattre en la 1Sheeld récente, j'ai reçu de Kickstarter.J'ai pensé à utiliser
Suivi et contrôle de votre voiture à distance en utilisant Arduino et Android

Suivi et contrôle de votre voiture à distance en utilisant Arduino et Android

En fait, bon nombre d'entre nous peuvent souffrir ou peur d'être sa voiture volée. Dans ce projet, je vais essayer de vous aider à protéger votre voiture et même les contrôler à distance.Fondamentalement, vous devez laisser un téléphone portable dans
Arduino bot Android télécommande II

Arduino bot Android télécommande II

Quand j'ai acheté mon Complubot l'an dernier, je ne pensais comment s'amuser, je pourrais être, j'ai pratique avec suivi ligne, voiture brosse, mais quand j'ai lu j'ai lu l'article sur instructables associés à bluethooth rc, j'ai commencé à penser qu
Geste car(robot) de contrôle avec Arduino et Android(bluetooth)

Geste car(robot) de contrôle avec Arduino et Android(bluetooth)

Salut les gens,Voici un projet intéressant pour tout ce que vous les esprits créatifs là-bas. Nous allons construire une voiture RC de Téléphone android contrôlée.Rien ne pouvait être plus fascinant que de voitures télécommandées. Celui-ci utilise le
Arduino bot Android télécommande

Arduino bot Android télécommande

Bonjour,Dans ce instructable je voudrais étudier la connexion entre Android et Arduino. Les deux sont un environnement ouvert, facile à programmer (enfin, Android pas tellement facile, mais tout à fait), et l'interaction entre eux permettant une inte
Contrôler l’Arduino utilisant android app

Contrôler l’Arduino utilisant android app

Dans cette instructables je vais expliquer comment contrôler les broches d'e/s arduino à l'aide d'une application android, dont nous allons écrire ici.La communication sera sur ethernet et nous utiliserons la requête GET pour activer les e / s.Let's