Vakta hunden och Mailman Scenario med Arduino (4 / 4 steg)

Steg 4: programmering

Vakthund

För vakthund robot, koden är programmerat som en "om annat" klausul. I dess vilande tillstånd, eller med andra ord den "else" del av satsen programmeras roboten att utföra "svajar" funktion där den skannar från sida till sida. Funktionen sway består av Arduino skicka signaler till servon till sväng vänster, fördröjning för lite, och sedan vända sig till rätt, förseningen för lite, och upprepa. Om någon av de infraröda sensorerna upptäcker något inom en viss zon, att roboten utföra en typ av larm. Larmet innehåller en "ögla" samt koder för att utlösa ljus och ljud. Larmet börjar genom att stoppa servon, sedan initierar den for-loop. Loopen utlöser blinkande av 4 lysdioder på Arduino styrelsen enligt hur många blixtar i loop funktion, i det här fallet valde vi 20 blixtar. Arduinoen fortsätter sedan att spela en ton sedan köra framåt spela en andra signal och sedan tillbaka bort till sin startposition. Grunden för detta program är att vakthund är vakar över sitt territorium, om det ser något då det larmar och "jagar" inkräktaren bort.

Kod för vakthund:


#include / / include Servo biblioteket
Servo servoLeft; Deklarera vänster och höger Servos Servo servoRight;

void setup() / / initiering kod

{pinMode (10, ingång); / / Ställ in stift till input/output power

pinMode (9, OUTPUT);

pinMode (3, ingång);

pinMode (2, utgång);

pinMode (5, OUTPUT);

pinMode (6, OUTPUT);

tonen (11, 3000, 1000); Spela tonen i 1 sekund

Delay(1000);

servoLeft.attach(13); Anslut vänster och höger servon till stift

servoRight.attach(12); }

void loop() / / Main looping kod

{int irLeft = irDetect (9, 10, 39000); / / ställa in vänster och höger infraröda sensorer för att upptäcka för rörelse inom visst område intervall

int irRight = irDetect (2, 3, 39000);

om ((irLeft == 0) || (irRight == 0)) Om vänster eller höger infraröda sensorer upptäcker något, utföra alarmfunktionen

{alarm(20);

}

annat / / i alla andra fall, utföra funktionen "svajar"

{sway(0);}

}

int irDetect (int irLedPin, int irReceiverPin, lång frekvens)

{tonen (irLedPin, frekvens, 8); / / IRLED 38 kHz för minst 1 ms

Delay(1); Vänta 1 ms

int ir = digitalRead(irReceiverPin); IR-mottagare -> IR-variabel

Delay(1); Ner tid innan dubbelgranska

returnera ir; Returnera 1 ingen identifiera, 0 upptäcka}

Annullera larm (int blinkar) / / Alarm funktion

{servoLeft.writeMicroseconds(1500); / / skicka stopp signaler till både servon

servoRight.writeMicroseconds(1500);

för (int jag = 1; jag < = blinkar; i ++) / / ställa upp för funktionen "för loop" som variabeln ökar från 1 till antalet blixtar förklarade

{digitalWrite 5, hög, digitalWrite (6, hög); / / slå på lysdioder på stift 5 och 6

Delay(50); Fördröjning för 50 millisekunder

digitalWrite (5, låg). Stänga av lysdioder på stift 5 och 6

digitalWrite (6, låg).

Delay(50); Fördröjning för 50 millisekunder

} tonen (11, 4000, 1000); Spela tonen i 1 sekund

Delay(1000);

Forward(2000); Gå framåt i 2 sekunder

digitalWrite 5, hög,

digitalWrite (6, hög); / / slå på lysdioder på stift 5 och 6

tonen (11, 2000, 1000); Spela tonen i 1 sekund

Delay(1000);

digitalWrite (5, låg).

digitalWrite (6, låg).

Backward(2000); Gå bakåt i 2 sekunder

}

Annullera sway (int tid) / / gunga funktion

{servoLeft.writeMicroseconds(1700); / / rotera servon vid full hastighet moturs servoRight.writeMicroseconds(1700);

Delay(1000); ... för 1 sekund

servoLeft.writeMicroseconds(1300); Rotera servon på full hastighet medurs servoRight.writeMicroseconds(1300);

Delay(1000); ... för 1 sekund

}

utan laga kraft framåt (int tid) / / framåt funktion

{servoLeft.writeMicroseconds(1700); / / vänster Servo full hastighet moturs servoRight.writeMicroseconds(1300); / / rätt Servo full hastighet medurs

Delay(Time); Fördröjning för deklarerade tidsvärde

}

tomrum bakåt (int tid) / / bakåt funktion

{servoLeft.writeMicroseconds(1300); / / vänster Servo full hastighet medurs

servoRight.writeMicroseconds(1700); Rätt Servo höghastighets-motsols

Delay(Time); Fördröjning för deklarerade tidsvärde

}

Mailman

För Mailman robot, koden är programmerat som en "om annat" klausul också. Den huvudsakliga funktionen är att genom phototransistors, Mail mannen robot kommer att trenden mot ljuskällan. Om brevbäraren upptäcker något via dess IR-sensorer på vardera sidan, kommer att sedan brevbäraren släppa ut en viss ton som signalerar att den inser att det har uppmärksammats av den vakthund. Sedan, brevbäraren kommer backup för att komma bort från hunden eftersom det kommer in mot roboten. Grunden för denna del av koden är att brevbäraren vill komma till ljuskällan; om det ser hunden, sedan vet det dock att uppgiften inte kan ske.

Kod för Mailman Robot:



#include / / include servo bibliotek
Servo servoLeft; Deklarera vänster och höger servo Servo servoRight;

void setup() / / inbyggda initiering block {pinMode (10, ingång); / / Set pins till input/output power pinMode (9, OUTPUT), pinMode (3, OUTPUT), pinMode (2, utgång); pinMode (5, ingång); pinMode (12, OUTPUT), tonar (11, 3000, 1000); / / spela tonen för 1 andra delay(1000); / / fördröjning för att avsluta tonen servoLeft.attach(13); / / bifoga vänster signal till stift 13 servoRight.attach(12); / / koppla rätt signal till stift 12} void loop() / / Main slinga auto-repetitioner {int irLeft = irDetect (9 10, 39000); Ställa in vänster och höger infraröda sensorer för att upptäcka för rörelse inom vissa området rad int irRight = irDetect (2, 3, 39000); flyta TLämnad = float(rcTime(12)); Hamna på ljus & göra float float tRight = float(rcTime(2)); Få rätt ljus & göra float float ndShade; Normaliserade differentiell skugga ndShade = tRight / (TLämnad + tRight) - 0,5; Beräkna det och subtrahera 0.5 int speedLeft, speedRight; Deklarera hastighet variabler om ((irLeft == 0) || (irRight == 0)) Om vänster eller höger infraröda sensorer upptäcker något, utföra funktionen larm {backward(2000);} else om (ndShade > 0,0) / / skugga höger? {/ / Långsamt ner vänster hjul speedLeft = int (200,0 - (ndShade * 1300.0)); speedLeft = begränsa (speedLeft, -200, 200); speedRight = 200; / / Full fart rätt hjul} else om (ndShade < 0,0) / / skugga på vänster? {/ / Långsamt ner rätt hjul speedRight = int (200,0 + (ndShade * 1300.0)), speedRight = begränsa (speedRight, -200, 200); speedLeft = 200; / / Full fart vänster hjul} annat {} manöver (speedLeft, speedRight, 20); Ställ in ratten hastigheter}

lång rcTime (int pin) / / rcTime mäter förfall på pin {pinMode (pin, utgång); / / laddning kondensator digitalWrite (pin, hög); / /... genom att ställa in pin ouput-hög delay(5); // .. för 5 ms pinMode (pin, mata); Ställ in pinkodsskydd att mata in digitalWrite (pin, låg); // .. med ingen pullup lång tid = micros(); Markera den tid while(digitalRead(pin)); Väntar på spänning < tröskel tid = micros() - tid. Beräkna förfalla time återvända tid; Returer förfalla tid}

int irDetect (int irLedPin, int irReceiverPin, lång frekvens) {tonen (irLedPin, frekvens, 8); / / IRLED 38 kHz för minst 1 ms delay(1); / / Wait 1 ms int ir = digitalRead(irReceiverPin); / / IR-mottagare -> IR-variabel delay(1); / / ned tid innan dubbelgranska tillbaka ir; / / återvända 1 ingen identifiera, 0 upptäcka}

manöver funktionen void manöver (int speedLeft, int speedRight, int msTime) {servoLeft.writeMicroseconds(1500 + speedLeft); / / ställa in vänster servo hastighet servoRight.writeMicroseconds (1500 - speedRight); / / Ställ in rätt servo hastighet if(msTime==-1) / / om msTime = -1 {servoLeft.detach(); / / Stop servo signaler servoRight.detach();} delay(msTime); / / fördröjning för msTime}

tomrum bakåt (int tid) / / bakåt funktionen {servoLeft.writeMicroseconds(1300); / / vänster Servo full hastighet medurs servoRight.writeMicroseconds(1700); / / rätt Servo full hastighet moturs delay(time); / / fördröjning för deklarerade värde}

utan laga kraft framåt (int tid) {servoLeft.writeMicroseconds (1700); servoRight.writeMicroseconds (1300); delay(time);}

Se Steg
Relaterade Ämnen

Ansiktsigenkänning och spårning med Arduino och OpenCV

uppdateringar20 feb 2013: Som svar på en fråga från student Hala Abuhasna om du vill använda klassen .NET seriell, använda namnkonventionen "\\\.\\COMn" och ersätt n med en nummer > 9 definiera com-porten för COM-portar över 9 som COM10, COM1...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Kontrollera allt och spara energi med Arduino

Jag använde detta för min egen mycket specifikt problem men det skulle kunna användas för någonting egentligen.Problemet:De flesta högtalare är inte smart, och så du måste stänga dem off manuellt, särskilt studio typ monitorhögtalare. På grund av det...

Julgran med LED och musik, kontrollerade med Arduino

i den här julen, nästan alla har gjort sin julgran i ditt hem, liten eller stor. I denna post, kommer vi se hur man skapar en julgran med några €, använder Arduino. Genom denna microcontroller kommer att kunna välja mellan flera olika profiler, som d...

Tjurar och kor spel med arduino

Även känd som kor och tjurar eller svin och tjurar eller tjurar och Cleots) är en gammal kod tillkommen sinne eller papper och penna spel för flera spelare, föregick den liknande kommersiellt saluförda brädspel Mastermind.Det är ett spel med siffror...

Bil till Arduino meddelande: CAN-Bus sniffning och sänder med Arduino

Från Wikipedia är Controller Area Network (CAN) bussen en "fordonet buss standard syftar till att mikrokontroller och enheter att kommunicera med varandra inom ett fordon utan värddator." Dessa enheter kan också betecknas som elektroniska styren...

5 enkel knapp och lett projekt med Arduino

Vad du behov dessa 5 projekt.En Arduino uno eller klon.3mm 5mm eller 10mm lysdioder någon kommer att fungera och 1 RGB ledde.Vissa tryck-knappar.En skärbräda.Hane-hane hoppare ledningar.Några 10k och 220 motstånd.10 ledde stapeldiagram eller lysdiode...

Trådlös Audio Streaming och taligenkänning med Arduino

i detta projekt jag ansluta min Arduino ombord till en WiFly modul (https://www.sparkfun.com/products/10822) från ambulerande nätverk och strömma ljud till datorn, så att BitVoicer (http://www.bitsophia.com/BitVoicer.aspx) kan utföra taligenkänning....

LCD, potentiometer och pwm ledde med Arduino

Vad behöver du:Arduino ombordLCD 16 * 2Trimmer 10 kΩPotentiometer 10 kΩLED 5mm220, 330 Ω motståndNågra tröjorSkärbrädaVad skiss gör:I denna skiss, ska skrivas potentiometer analoga värdet på LCD- och nära det pwm värdet till ledde.Anslutningar:Arduin...

Piano trappor med Arduino och Raspberry Pi

Vem älskar inte musik? Dessa Piano trappor är en interaktiv och relativt smidig musikaliska installation som kan tillämpas på i princip alla trapphus. Jag byggde dem för HackPrinceton tillsammans med mina vänner Erica Portnoy och Vincent Castaneda, o...

Roligt spel med arduino och bearbetning

Denna tutorial ska show dig hur man gör en första person FPS-shooter i bearbetning med hjälp av en arduino. Detta projekt lämnades till oss som en avslutande tentamen i en teknisk specialkurs, (gymnasieskolan).Video av projektet! :) (Svårt att spela...

OBJEKTET identifiering och spårning med hjälp av OPENCV, VISUAL STUDIO C ++ 2010 och ARDUINO

IntroduktionI detta projekt skickar Webcam video ramar till Visual Studio C ++ som innehåller öppen CV biblioteket på vår dator.Om Visual Studio C ++ programmet upptäcker bilden av objektet från webbkameran och sedan beräknas de co koordinaterna X, Y...

Kom igång med Arduino och Codebender

Arduino är en öppen källkod prototyping plattform baserad på lätt-till-använda maskinvara och programvara.Arduino uno, Arduino mega och Arduino nano är några populära Arduino styrelser och kan läsa ingångar och förvandla dem till utgångar, till exemp...

DIY: En 5 minuter kontaktlösa OLED termometer med Arduino och MLX90614

Hej, alla! Idag ska jag visa dig hur man gör en kontaktlösa OLED termometer med Arduino UNO och IR temp sensor MLX90614 i 5 minuter. Detta projekt är mycket enkelt, det kräver grundläggande programmering och elektroniska kompetens att göra det.Kan bö...

Temperatur och luftfuktighet övervakning med hjälp av SHT25 och Arduino Nano

Vi har nyligen arbetat med olika projekt som krävs för temperatur och luftfuktighet övervakning och sedan insåg vi att dessa två parametrar faktiskt spela en nyckelroll i att ha en uppskattning av den arbetande effektiviteten i ett system. Både på de...

Hur man gör en avlägsen kontrollerade Robotic Hand med Arduino

Detta är mitt skolprojekt för den 5: e året i gymnasiet (jag är italienska, vi har 5 år på gymnasiet).Det består i en konstgjord hand kontrolleras av en handske med flex sensorer. Konstgjord hand återger rörelser i handen med kontroll handsken, trådl...

Övervakning och vård - med hjälp av Intel Edison

Vintern är här! Följ detta instructable att övervaka och skapa en automatisk kontrollerar växten vattnas system för dina krukväxter med Intel Edison.Övervaka följande miljövariabler med Xively.com för att hålla din anläggning friska genom vinternTemp...

Ljus söker RC bil hacka (med Arduino)

skapa en robotics plattform från scratch tar tilld av arbete och ett par dollar. Köpa en färdig byggt en är lätt men kostnader tilld av pengar (åtminstone för mig). Så istället jag beslutat att piggy tillbaka av de företag som gör fjärrkontroll bilar...

Enklaste metoden att göra en LED Fade med Arduino Uno

Hej alla, detta är min första Instructable, och i det, jag kommer att visa dig hur man tona en LED med en Arduino Uno, 2 hoppare ledningar, 1 Resistor och en skärbräda.Njut!Steg 1: Vad du behöver.1 x 220 Ohm motstånd2 x Breadboarding ledningar1 x Ard...