Arduino, Mini Sonar Robot (3 / 3 steg)

Steg 3: kod

Jag har försökt att skriva koden lätt att vara vanligt för nybörjare också. Men om du har några problem, frågor och får förslag, jag vet.
Några tips:

  • Minsta avstånd är stoppsträckan att förhindra kraschen. Bästa avståndet från varje block att stoppa roboten, är beror på hur växellådan snabbt.
  • Robot kommer tillbaka till max avstånd.
  • backDist och turnDist bör anpassas beroende av robot hastigheten.
  • En slumpmässiga beteende inklusive stopp, har melodi och slumpmässiga rörelsen använt.

//******************************

* Av: http://blog.mshams.ir *

//******************************

PIN-koder

CONST byte pinMotor1 = 4, pinMotor2 = 5, pinMotor3 = 6, pinMotor4 = 7.

CONST pinLed byte = 8, pinTone = 10, pinSonar1 = 11, pinSonar2 = 12;

sund freq

CONST int toneFreq = 800;

sonar avstånd

CONST byte minDistance = 45, maxDistance = 1000;

motor: s

CONST byte M_STOP = 0, M_GO = 1 M_BACK = 2, M_RIGHT = 3, M_LEFT = 4, M_RIGHT2X = 5, M_LEFT2X = 6;

robot stater

CONST byte R_START = 0, R_DRIVE = 1 R_BLOCK = 2, R_TURN = 3;

upptäcka baksmälla

CONST int hangoverWait = 5000;

blocket upptäcka gå tillbaka

CONST int backDist = 1000, turnDist = 300;

slumpmässiga beteende

CONST int randomChance = 300, randomStopWait = 10000, randomTurnWait = 200.

byte state = R_START;

int i, räknare = 0;

int dist;

void setup() {

randomSeed(analogRead(1));

init motor pins

pinMode (pinMotor1, produktionen);

pinMode (pinMotor2, produktionen);

pinMode (pinMotor3, produktionen);

pinMode (pinMotor4, produktionen);

pinMode (pinSonar1, produktionen);

pinMode (pinSonar2, ingång);

init LED stift

pinMode (pinLed, produktionen);

}

void loop() {

Växla (staten) {

fall R_START:

Motor(M_GO);

Melody();

State = R_DRIVE;

bryta;

fall R_DRIVE:

dist = Pingu();

om (dist < minDistance) {

Motor(M_STOP);

State = R_BLOCK;

}

annars om (random (0, randomChance) == 5) {

RandomTone();

Motor(M_STOP);

Delay(randomStopWait);

Motor (random (M_BACK, M_LEFT2X + 1));

Delay(randomTurnWait);

Motor(M_GO);

}

bryta;

fall R_BLOCK:

Beep();

Motor(M_BACK);

Delay(backDist);

Motor (random (M_RIGHT2X, M_LEFT2X + 1));

Delay(turnDist);

State = R_TURN;

bryta;

fall R_TURN:

dist = Pingu();

om (dist > = maxDistance) {

Motor(M_STOP);

Motor(M_GO);

Beep();

State = R_DRIVE;

}

annat {

räknaren + = 1;

om (counter > = hangoverWait) {

räknare = 0;

Motor(M_STOP);

RandomTone();

State = R_BLOCK;

}

}

bryta;

}

}

Annullera Blink (byte state) {

digitalWrite (pinLed, statligt);

}

void Beep() {

Blink(1);

SpeakTone(2);

SpeakTone(1);

Blink(0);

}

void Melody() {

Blink(1);

för (int jag = 1; jag < 10; i ++) {

SpeakTone(i);

}

Blink(0);

}

void RandomTone() {

Blink(1);

för (int jag = 1; jag < 10; i ++) {

SpeakTone (random(1, 10));

}

Blink(0);

}

void SpeakTone(byte note) {

tonen (pinTone, toneFreq * Obs);

Delay(100);

noTone(pinTone);

}

Annullera Motor (byte state) {

byte m1, m2, m3, m4;

Växla (staten) {

fall M_STOP:

M1 = m2 = m3 = m4 = låg;

bryta;

fall M_GO:

M1 = hög;

m2 = låg;

M3 = hög;

M4 = låg;

bryta;

fall M_BACK:

M1 = låg;

m2 = hög;

M3 = låg;

M4 = hög;

bryta;

fall M_RIGHT:

M1 = hög;

m2 = låg;

M3 = låg;

M4 = låg;

bryta;

fall M_LEFT:

M1 = låg;

m2 = låg;

M3 = hög;

M4 = låg;

bryta;

fall M_RIGHT2X:

M1 = hög;

m2 = låg;

M3 = låg;

M4 = hög;

bryta;

fall M_LEFT2X:

M1 = låg;

m2 = hög;

M3 = hög;

M4 = låg;

bryta;

}

digitalWrite (pinMotor1, m1);

digitalWrite (pinMotor2, m2);

digitalWrite (pinMotor3, m3);

digitalWrite (pinMotor4, m4);

}

int Pingu() {

digitalWrite (pinSonar1, låg);

delayMicroseconds(5);

digitalWrite (pinSonar1, hög);

delayMicroseconds(5);

digitalWrite (pinSonar1, låg);

delayMicroseconds(2);

lång varaktighet = pulseIn (pinSonar2, hög);

tillbaka (längd / 29 /2);

}

Se Steg
Relaterade Ämnen

Arduino kontrollerade Servo Robot (serbiska)

vad bättre sätt för att börja experimentera med öppen källkod mikro-styrenheter ( Arduino ) då genom att bygga din egen öppen källkod robot ( CC (SA-av))?Vad till gör med din Serbiska?(här) - Hur ansluta din serbiska till internet och köra det över e...

Arduino självbalanserande Robot

I detta projekt kommer jag att beskriva förklarade uppbyggnaden av robotar står i jämvikt med Arduino.We i vår tidigare version av android kontrollerade projektet. I detta projekt kommer vi flytta till vår kontroll. Låt oss gå Låt oss komma till vårt...

Arduino Mini-Shields

Detta är en uppsättning av enkel, liten formfaktor, mini-sköldar som jag skapade nästan av en slump. När jag gjorde mer och mer av dem, insåg jag att de kan vara riktigt användbara. Det som började som ett sätt att använda vissa reservdelar, förvandl...

Arduino mini USB-24 kanal servo controller ombord

Arduino mini USB-24 kanal servo styrkort Använd för tvåbent robot och fyrfotadjur robot controllerStödja den senaste Windows8 64 bit systemet, stödja Linux-system (xp, vista, win7 stöd)Detta är den uppgraderade styrkort. Upp till 24 servomotorer kan...

Komma igång med BTE13-010 - Arduino Mini clone

Detta är en enkel guide som lär dig hur du kommer igång med detta billigt Arduino mini clone, som täcker alla steg man bör göra för att få det att fungera. I princip är de 4...Lödning PIN huvuden *Binda den uppInstallera rätt drivrutiner **Provning.....

FT232 ändring för Arduino minis etc.

FT232 ändring för Arduino minis etc.Om likhet med mig du beställt denna modell det är en PITA att på valknappen inte ändrar VCC pin spänningen.Oroa dig inte det är en riktigt enkel modifiering. för det problemet som ger dig en extra funktion (jag vis...

Infraröd Sensor guidade Arduino kontrollerade L293D Robot (del 2)

Här är del 2 av Arduino kontrollerade L293D Robot.Del 2 innehåller IR Sensors.This ingår i en serie av instructables leder till en rad efterföljare Robot.QRD1114 Infrarödsensor kopplad till ArduinoSteg 1: Ledningar IR sensorn till ArduinoNegativ från...

EL Wire - Arduino Mini Pro - relä Controller modul 6 kanaler

Söka i andra Instructables jag hittade många sätt att styra EL Wire med arduino men inte alla var som jag ville, så jag beslöt att skapa min egen version, kanske är inte perfekt men fungerar.Denna EL Wire modul kontrollerar 10 mts EL tråd i två sekti...

Mycket enkelt att skapa Arduino bluetooth spion robot med Android RemoteControl app

i detta projekt kommer du att se hur enkel blandning av olika tekniker och tredje part apps gör det möjligt för att skapa en ganska komplex leksak.Roboten gör två saker:1. Arduino baserade spion robot flyttar enligt kommandon levereras från Android R...

Rana: En arduino inspirerade biologiska robot

Rana (italienska groda) är en biologisk inspirerad robot. Det är resultatet av månader av forskning och utveckling. En av huvudmännen tillämpas kommer från en annan Svårbemästrade gjorde jag kallas "arduino tvåbent robot". Denna robot använder k...

Min stora Robot klo

här är min stora robot klo hand, som jag skapat i CAD-program sedan hand gjord av MDF, vissa tydliga polykarbonat lakan och olika hårdvara. Detta projekt var mer om form än om-funktionen. Detta sagt, det fungerar perfekt och smidigt, men redskap tänd...

Hur man gör en Mini bugg Robot?

https://www.youtube.com/watch?v=bpISq6RRdMk&feature=youtu.beSteg 1: För att göra en mini bugg robot du behöver! I dagens video ska jag visa dig en intressant idé om hur man gör en bugg robot!Speciellt använder endast gamla detaljer, till exempel kan...

Programmera Arduino Mini 05 med FTDI Basic

När du behöver en liten arduino med en bra mängd I/O pins, är Arduino Mini för dig. Detta är en av mina favorit mikrokontroller för bärbara tech projekt på grund av dess storlek.Steg 1: material Arduino MiniFTDI BasicManliga headersStartkablar eller...

Arduino Mini CNC Plotter-maskin från dvd-enheter

I detta projekt kommer jag visa dig hur man enkelt bygga din egen billiga Arduino Mini CNC Plotter!Detta projekt är en uppdatering från min tidigare cnc, med bättre konstruktion och med mer precision.Jag bestämde mig att göra detta detaljerad guide a...

Arduino kontrollerade L293D Robot (del 1 - Update 1.0)

Här är del 1 av Arduino och L293D Robot.This är en del av en serie av instructables leder till en rad efterföljare Robot.Detta är en grundläggande Robot gjorde genom att styra två motorer via L293D chip genom en Arduino ombord.Jag har gjort detta pro...

Arduino Mini set av brödunderläggen FTDI adapter

Jag ville att kunna programmera en Arduino Mini (v5) på plats på en skärbräda. Instruktionerna är lätta att hitta på webbplatsen Arduino (Guide till Arduino Mini) men sedan trådarna skulle komma i vägen för mitt projekt. Jag använder en FTDI TTL-232...

USS Enterprise: Arduino Mini drivs.

Hey guys, vi gjorde en cool leksak företaget vi köpte Michaels för $15 och fick det att fungera! Det var en stor erfarenhet vi och byggde en liten leksak från Star Trek. Om du är intresserad av projektet och det är nog ni som vill att vi ska lägga up...

LDRs + Arduino = en enkel robot som kan känna av ljuset!

An LDR är en ljus beroende av motstånd och har många användningsområden, till exempel en photocel som kan förvandla ljus i ditt hus på när dess blir mörkt ute.Ett intressant sätt att förstå hur det fungerar är att läsa sina värderingar med en Arduino...

Akvarium automatiska fläktstyrning med arduino mini

en annan bra sak för akvariet i sommarvärmen. :)Med arduino mini enheten, kan du aktivera automatiskt akvariet fan när vattentemperaturenkorsade den justerade nivån.Justerbar mellan 21-30 * C. (69,8-86 * F)Temperaturgivare: DS18B20 (vattentät)Denna v...