Eenvoudige RC auto voor beginners (Android controle over Bluetooth) (10 / 10 stap)

Stap 10: Software


Het programma is geschreven in de Arduino IDE 1.01.

#include "EEPROM.h"

#define D1 2 / / motor draairichting 1
#define M1 3 / / PWM links motor
#define D2 4 / / motor draairichting 2
#define M2 5 / / PWM rechts motor
#define hoorn 13 / / extra kanaal 1
#define autoOFF 2500 / / milliseconden waarna de robot wanneer stopt de verbinding

#define cmdL "L" / / UART-opdracht voor de linker motor
#define cmdR 'R' / / UART-opdracht voor de juiste motor
#define MAfestival 'H' / / UART-opdracht voor extra kanaal (bijvoorbeeld hoorn)
#define cmdF 'F' / / UART-opdracht voor EEPROM werking
#define cmdr 'r' / / UART-opdracht voor de werking van de EEPROM (lezen)
#define cmdw "w" / / UART-opdracht voor EEPROM bediening (schrijven)

char incomingByte; binnenkomende gegevens

char L_Data [4]; matrix gegevens voor linker motor
byte L_index = 0; index van matrix L
char R_Data [4]; matrix gegevens voor juiste motor
byte R_index = 0; index van de matrix R
char H_Data [1]; matrix gegevens voor extra kanaal
byte H_index = 0; index van matrix H
char F_Data [8]; matrix gegevens voor EEPROM
byte F_index = 0; index van matrix F
char opdracht; opdracht

unsigned long currentTime, lastTimeCommand, autoOFF;

VOID Setup {}
Serial.begin(9600); initialisatie UART
pinMode (Hoorn, uitvoer); extra kanaal
pinMode (D1, uitvoer); uitgang voor motor rotatie
pinMode (D2, uitvoer); uitgang voor motor rotatie
/ * EEPROM.write(0,255);
EEPROM.write(1,255);
EEPROM.write(2,255);
EEPROM.write(3,255); * /
timer_init(); Initialisatie software timer
}

ongeldig timer_init() {}
uint8_t sw_autoOFF = EEPROM.read(0); lezen van de EEPROM "is geactiveerd of als de auto niet te stoppen wanneer de verbinding te verliezen"
Als (sw_autoOFF == '1') {/ / als geactiveerd
char var_Data [3];
var_Data [0] = EEPROM.read(1);
var_Data [1] = EEPROM.read(2);
var_Data [2] = EEPROM.read(3);
autoOFF = atoi (var_Data) * 100; variabele autoOFF ms
}
else if (sw_autoOFF == '0') {}
autoOFF = 999999;
}
anders if(sw_autoOFF == 255) {}
autoOFF = 2500; Indien de EEPROM leeg is, is dafault waarde 2,5 sec
}
currentTime = millis(); Lees de tijd die is verstreken sinds het begin van de toepassing
}

void loop {}
Als (Serial.available() > 0) {/ / als ontvangen van de UART-gegevens
incomingByte = Serial.read(); Raed byte
if(incomingByte == cmdL) {/ / als ontvangen gegevens voor linker motor L
opdracht = cmdL; huidige opdracht
memset(L_Data,0,sizeof(L_Data)); Schakel matrix
L_index = 0; resetten van de matrixindex
}
anders if(incomingByte == cmdR) {/ / als ontvangen gegevens voor linker motor R
opdracht = cmdR;
memset(R_Data,0,sizeof(R_Data));
R_index = 0;
}
anders if(incomingByte == cmdH) {/ / als ontvangen gegevens voor extra kanaal
opdracht = MAfestival;
memset(H_Data,0,sizeof(H_Data));
H_index = 0;
}
anders if(incomingByte == cmdF) {/ / als ontvangen gegevens voor EEPROM op
opdracht = cmdF;
memset(F_Data,0,sizeof(F_Data));
F_index = 0;
}
else if (incomingByte == '\r') command = "e"; einde van regel
else if (incomingByte == "\t") opdracht = 't'; einde lijn voor EEPROM op

Als (opdracht == cmdL & & incomingByte! = cmdL) {}
L_Data [L_index] = incomingByte; elke byte worden opgeslagen in de array
L_index ++; Increment matrixindex
}
anders als (opdracht == cmdR & & incomingByte! = cmdR) {}
R_Data [R_index] = incomingByte;
R_index ++;
}
anders als (opdracht == MAfestival & & incomingByte! = MAfestival) {}
H_Data [H_index] = incomingByte;
H_index ++;
}
anders als (opdracht == cmdF & & incomingByte! = cmdF) {}
F_Data [F_index] = incomingByte;
F_index ++;
}
anders als (opdracht == "e") {/ / als we het lijneinde nemen
Control4WD(atoi(L_Data),atoi(R_Data),atoi(H_Data));
delay(10);
}
anders als (opdracht == 't') {/ / als we de EEPROM lijneinde nemen
Flash_Op(F_Data[0],F_Data[1],F_Data[2],F_Data[3],F_Data[4]);
}
lastTimeCommand = millis(); Lees de tijd die is verstreken sinds het begin van de toepassing
}
if(Millis() > = (lastTimeCommand + autoOFF)) {/ / vergelijken van de huidige timer met variabele lastTimeCommand + autoOFF
Control4WD(0,0,0); stoppen met de auto
}
}

VOID Control4WD (int mLeft, int mRight, uint8_t hoorn) {}

BOOL directionL, directionR; motor draairichting L298N
byte valueL, taxateur; PWM M1, M2 (0-255)

Als (mLeft > 0) {}
valueL = mLeft;
directionL = 0;
}
else if (mLeft < 0) {}
valueL = 255 - abs(mLeft);
directionL = 1;
}
else {}
directionL = 0;
valueL = 0;
}

Als (mRight > 0) {}
Taxateur = mRight;
directionR = 0;
}
else if (mRight < 0) {}
Taxateur = 255 - abs(mRight);
directionR = 1;
}
else {}
directionR = 0;
Taxateur = 0;
}

analogWrite (M1, valueL); snelheid voor linker motor instellen
analogWrite (M2, taxateur); snelheid voor juiste motor instellen
digitalWrite (D1, directionL); instellen van de linker motor draairichting
digitalWrite (D2, directionR); instellen van rechts motor draairichting

digitalWrite (Hoorn, hoorn); extra kanaal
}

VOID Flash_Op (char FCMD, uint8_t z1, z2 uint8_t, uint8_t z3, z4 uint8_t) {}

if(FCMD == Cmdr) {/ / als EEPROM gegevens opdracht gelezen
Serial.Print("FData:"); EEPROM gegevens verzenden
Serial.write(EEPROM.Read(0)); waarde van het geheugen met 0 adres leest en op UART afdrukken
Serial.write(EEPROM.Read(1));
Serial.write(EEPROM.Read(2));
Serial.write(EEPROM.Read(3));
Serial.Print("\r\n"); het einde markeren van de transmissie van data EEPROM
}
anders if(FCMD == cmdw) {/ / als EEPROM gegevens opdracht schrijven
EEPROM.write(0,z1); Z1 record aan een geheugen met 0 adres
EEPROM.write(1,z2);
EEPROM.write(2,z3);
EEPROM.write(3,z4);
timer_init(); initialiseren van de timer
Serial.Print("FWOK\r\n"); Stuur een bericht dat de gegevens met succes aan EEPROM geschreven
}

De code maakt gebruik van een bibliotheek om te werken met EEPROM AVR-geheugen. Arduino bord door USART van de Bluetooth-module ontvangt gegevens klaar voor de linker- en motor. Alle eenvoudige berekeningen worden uitgevoerd in de Android applicatie.

De structuur van het project in Eclipse u kunt zien op de screenshot hierboven.

U kunt de broncode voor de Arduino en het project voor verduistering
Downloaden APK toepassing voor Android-apparaat

De nieuwste versie van de software vindt u op deze pagina Video demonstratie de virtueel stuurwiel-modus (versie 1.2 en hoger):

PS Sorry voor mijn slechte Engels

Gerelateerde Artikelen

Fundamentele tank-station robot controle over Bluetooth mbed met de Freescale K64F

Fundamentele tank-station robot controle over Bluetooth mbed met de Freescale K64F

Dit Instructable is gebaseerd op deze eerdere werk die laat hoe om te controleren van een typische tank-station stijl robot met behulp van de Arduino en een Android app zien, zoals weergegeven in deze RC auto voor Android Instructable.Ik heb gebruikt
Servo controle over Bluetooth met versnellingsmeter

Servo controle over Bluetooth met versnellingsmeter

In ons project, zullen wij beheersen een servomotor via bluetooth. We doen met de motie-gevoelige versnellingsmeter controlemaatregelen.meer informatie: http://make.robimek.com/Servo-Control-over-Bluetooth-with-accelerometer/Stap 1: materialen:Arduin
Android gecontroleerde auto voor beginners (MIT app uitvinder)

Android gecontroleerde auto voor beginners (MIT app uitvinder)

Dit is een eenvoudige arduino auto/robot, bestuurd door een android app gemaakt met behulp van MIT app uitvinder (opensource-app). ALS JE EEN BEGINNER BENT OP DIT TERREIN MAAK JE GEEN ZORGEN IK HEB VERSTREKT ELK DETAIL IN MIJN PROJECT, DUS HET ZAL EE
Eenvoudige Kim Chi voor Beginners

Eenvoudige Kim Chi voor Beginners

Kim Chi, een traditionele gefermenteerde levensmiddelen uit Korea gemaakt van kool, knoflook, Spaanse peper en andere groenten is een voedzaam voedsel, vol met probiotische goedheid. Het is rijk aan vitaminen en als de groenten zijn gefermenteerd en
Een ander Arduino afstandsbediening auto bestuurd door Android telefoon via Bluetooth-Module

Een ander Arduino afstandsbediening auto bestuurd door Android telefoon via Bluetooth-Module

Deze tutorial gaat door het opzetten van de Arduino IDE voor gebruik met een Adafruit motor shield kloon board, alsmede het opzetten van een oude RC auto, zodat het kan worden gecontroleerd met een android telefoon via bluetooth. De Code voor de RC a
Eenvoudige koord Pouch (voor Beginners)

Eenvoudige koord Pouch (voor Beginners)

dit is een kleine zak heb ik besloten om te maken omdat ik iets nodig om te houden van mijn lady's dag Valentijnsdag geschenk. Het is heel eenvoudig te maken, en het kostte me minder dan een uur van start tot finish.Stap 1: materialen Moet u de volge
Snelle en eenvoudige knipperen animatie voor Beginners

Snelle en eenvoudige knipperen animatie voor Beginners

((waarschuwing: de onderstaande animatie werd gedaan in Photoshop Elements 5. Als je ogen tijdens dit instructable bloeden, ben ik op geen enkele wijze verantwoordelijk))De sleutel tot het steeds een goede animator is het eerst gewoon beginnen en wer
Eenvoudige Knit Coaster - voor Beginners

Eenvoudige Knit Coaster - voor Beginners

een achtbaan behoefte aan uw drankje? Maak een van deze eenvoudige gebreide achtbanen, ze zijn eenvoudig en leuk om te maken!Stap 1: Benodigdheden Wat u nodig hebt om een achtbaan. 1. elke soort garen. 2. sommige breinaalden (het maakt eigenlijk niet
Eenvoudige arduino auto met behulp van HC-06 Bluetooth-Module

Eenvoudige arduino auto met behulp van HC-06 Bluetooth-Module

De gemakkelijkste manier om te bouwen van een Arduino-auto en controle met uw Androïde apparaat.Stap 1: Dingen nodig: Laptop met de Arduino software.Elke Arduino. (Im ' using Leonardo).Twee gelijkstroommotoren met banden stevig vastgemaakt.Een acryl
CxemCAR 1 - Android Control RC Car via Bluetooth

CxemCAR 1 - Android Control RC Car via Bluetooth

dit is een opensource-project van RC auto met controle van Android telefoon via Bluetooth. De controller wordt gebruikt met .NET Micro Framework: FEZ Panda II, maar u kunt elke controller werkt met .NET Micro Framework core (Netduino, GHI elektronica
Android gecontroleerd Arduino Bluetooth Panzer

Android gecontroleerd Arduino Bluetooth Panzer

Afstandsbediening auto's zijn leuk om te rijden rond de kamer of het huis zwerven. Wat is er leuker voor het? Wanneer heeft u de zichtbaarheid als u in het rijden. Een draadloze IP-camera is het antwoord. Of laten we zeggen heb je CCTV camera's rond
Één klik in- / uitschakelen van uw Android mobiele using Arduino en pfodApp. Arduino voor Beginners

Één klik in- / uitschakelen van uw Android mobiele using Arduino en pfodApp. Arduino voor Beginners

IntroductieDit instructable laat zien hoe u een Arduino uitvoer van in- en uitschakelen kan overstappen van uw Android mobiele telefoon met slechts één klik op het pictogram van de pfodApp . Het toevoegen van een relais gedreven door deze uitgang om
De generator van de code voor aangepaste Android/Arduino-menu's aan de Arduino uitgangen wissel voort en vandoor. Andriod/Arduino voor Beginners. Absoluut geen programmeerkennis vereist

De generator van de code voor aangepaste Android/Arduino-menu's aan de Arduino uitgangen wissel voort en vandoor. Andriod/Arduino voor Beginners. Absoluut geen programmeerkennis vereist

Update: een gebruiker gevraagd voor submenu ondersteuning. pfodApp altijd ondersteund submenu's maar ik sub-menu's hebt toegevoegd aan pfodDesigner. De instructable stelsel van het Gemeenschapsmodel A Custom Menu ziet u hoe u pfodDesigner wilt samens
Ontwerp een aangepaste Menu systeem--Android/Arduino-menu's voor Beginners--absoluut geen programmering vereist

Ontwerp een aangepaste Menu systeem--Android/Arduino-menu's voor Beginners--absoluut geen programmering vereist

IntroductieDit instructable ziet u hoe u de gratis pfodDesigner beschikbaar op GooglePlay ontwerpen van een menusysteem van de Android met submenu's voor Arduino-compatibele apparaten.De tutorial is geschikt voor complete beginners. Geen codering erv