Android-styrda pneumatiska kanon drivs av Arduino (9 / 11 steg)

Steg 9: Programmera din Arduino



Om du planerar att utveckla ditt eget Arduino koden, då det är vettigt att utveckla det tillsammans med maskinvaran. På så sätt kan du utveckla stegvis och testa varje komponent som du går. Det gör felsökning mycket lättare än om du skulle försöka att skriva hela projektet på en gång och testa i slutet.

Hela källkoden Arduino är ansluten. Om inte du är intresserad av ändrande den eller lära sig hur det fungerar, kan du bara hämta och distribuera den. Om du vill se hur det fungerar, Läs igenom detta steg och sedan bläddra igenom koden.

Start i evt_loop.cpp, anropar programmet först evt_loop_init. Då, upprepade gånger samtal event_loop_proc på obestämd tid, tills Arduino förlorar makt. Titta på dessa två funktioner, ser du att de flesta av Arduino koden är centrerad kring idén om meddelandeköer . Meddelandeköer är användbart i situationer där ett system måste prata med en annan i en asynkron sätt. I vår situation har vi ett Bluetooth-modem som kan ta emot data när som helst. I allmänhet går mycket arbete in i att se till att data aldrig försvinner, oavsett vad enheten gör när meddelandet anländer. Tack och lov, Arduino Uno har en inbyggd 128 byte maskinvara seriell buffert. Eftersom var och en av våra Bluetooth meddelanden 1 byte, kommer denna buffert förmodligen vara mer än tillräckligt för vårt program. Så sitter vår ansökan i en loop, väntar på ett meddelande för att komma in från Bluetooth. I en kommersiell produkt är det typiskt för mikrokontroller att gå in i ett lågenergi / viloläge här att spara energi. För enkelhetens skull gjorde vi inte det här (se bt.cpp's bt_wait_for_msgs funktion).

När ett meddelande anländer till Bluetooth kö (se bt.cpp's bt_check_for_msgs funktion), data läses i och lagt till en meddelandekö tillägnad hantering av data kommer in från Bluetooth-modulen. Vi gör detta eftersom vi ville att våra microcontroller att vara fri att göra andra saker när det inte hanterar meddelanden. Meddelandekön är som en brevlåda. Nästa gång programmet får en chans, ska det kolla postlådan och se om det finns några meddelanden för den. Inte använda en meddelandekö är som skriker högljutt från andra sidan rummet. Allt skulle i så fall måste sluta och tjänsten omedelbart kommandot innan han återvände till vad det gjorde. Msgq_push returneras (definieras i msgq.cpp) en mängd svarskoder (definieras i msgq.h) som indikerar ett olika antal kö villkor. Till exempel om programmet aldrig kollat sin postlåda, är det möjligt för denna kö att fylla upp. I så fall skulle svar värdet visar att kön var full. Detta möjliggör felhantering, som är en viktig del av inbäddade systemutveckling.

Tillbaka i evt_loop_proc läses meddelandet in i en lokal variabel. Dessutom skickas en pekare till en svarstyp i. Et-tecknet (&) före den variabla rsp innebär rsp's adress i minnet att paseed i msgq_pop, i stället för dess värde. Om du inte har hört talas om detta begrepp innan, IBM vet mycket om det, och de skulle älska att avslöja denna information till dig. Den här pekaren berättar msgq_pop en plats i minnet där det kan sätta svar värdet. Det är ungefär som ett sätt att få en funktion för att returnera två värden--meddelandet, och status.

Efter att meddelandet från kön (liknar ta brevet ur brevlådan), kontrolleras svaret. Om åtgärden inte lyckades, hela Bluetooth meddelandekön återställs och programmet fortsätter. Det är egentligen inte en hel del annat programmet kunde göra i detta tillstånd.

Om programmet gör det förbi det fel baksidan, ser det på värdet av meddelandet. Om meddelandet var en '1', hanterar den en relä. Om det var en '2', hanterar den annan. Något annat, och det ignorerar meddelandet.

Vår enhet har inte en manometer, så det finns inget sätt för Android app att veta om materialet i burkarna är trycksatt eller inte. Som ett resultat, är hänsyn nog tryckluft, det möjligt för ännu vara tillräckligt Tryck vänster att skjuta två gånger utan att behöva fylla på tanken. För att ta hänsyn till detta, Stäng reläet Arduino en sekund efter det öppnas. Detta förhindrar extra luft slösas fat är tom. Koden som hanterar växla reläer finns i relay.cpp.

För att hantera denna automatisk stängning, använder vi en timer. De flesta mikrokontroller har hårdvara timers för hög precision timing, så i det här exemplet är en bra introduktion. Ta en titt på timer.h och timer.cpp om du vill veta mer om hur timern fungerar. När ett giltigt Bluetooth meddelande har tagits emot, motsvarande reläet är omedelbart stängt (evt_loop.cpp's evt_loop_proc funktion), vilket gör att nuvarande att flöda från batteriet till sprinkler ventil. En timer är sedan, upphör att gälla på en sekund (1.000.000 mikrosekunder i koden). Callback-funktionen ange sedan vara evt_loop_handle_timer, som modulen timer kommer att kalla när den angivna tiden har förflutit.

Inuti evt_loop_handle_timer öppnas båda kavlarna, som stoppar flödet av luft från båda burkarna. Vi tänkte att detta skulle vara det enklaste sättet att ta. När ett kommando har behandlats, evt_loop_proc kallas igen (från cannon.pde) och processen upprepas.

När din Arduino är programmerad, startar det automatiskt köra ditt program när du tillämpar kraft via en 9V batteri.

Se Steg
Relaterade Ämnen

SmartMesh - Arduino och Android styrda pneumatiska Facade

Projektet var en del av Multimodal Media Madness 2014, värd stolen för Computer Aided arkitektonisk Design (CAAD) och Media Computing Group RWTH Aachen University. För fler smarta skal, se denna sida: http://hci.rwth-aachen.de/m3_ss14Under detta proj...

Mångsidig multi-shot pneumatiska kanon

en av de stora nackdelarna för att göra och drift av en pneumatisk kanon är behovet av en ny luft avgift för varje skott. Detta behov av förnyad trycksättning av sin kanon verkligen kan äta upp en hel del tid och skär i roligt faktor av en dag av ele...

Slutet-runt pneumatiska kanon

medan inte särskilt nytt eller kreativa, här är mina planer för en enkel pneumatisk (tryckluftsdrivna drivs) potatis kanon. Det kan också användas för andra projektiler, så länge de passar ner en av utbytbara fat. Det använder en elektriskt manövrera...

Enkelklick på/av från din Android mobil med hjälp av Arduino och pfodApp. Arduino för nybörjare

IntroduktionDetta instructable visar hur du kan byta en Arduino utgång på och bort från din Android mobil med bara ett klick på ikonen pfodApp . Lägga till ett relä som drivs av denna utgång för att växla den riktig hårdvaran. Ingen Android kodning k...

DIY fristående väderstation drivs av Arduino

Hej beslutsfattare uteÅterigen är detta inte en steg för steg Instructable. Som alltid jag glömde att ta snaps ta sedan starten av projektet.Idén att bygga en weather station med öppen hårdvara sparkade en lång tillbaka. Vi människor från en DIY loka...

Driva din Arduino Uno med fyra uppladdningsbara AA-batterier

detta Instructable visar hur att driva din Arduino Uno med fyra uppladdningsbara AA-batterier. Du behöver:En Arduino Uno4 AA batterihållare (jag rekommenderar starkt detta en från RadioShack, som det inte bara har en intern switch för att aktivera Ar...

Driva din Arduino från din bil

The Arduino-- och AVRs generellt--har ett brett utbud av makt leveransalternativ, från omkring 1.8V till 5.5V. Valet av spänning bestäms vanligtvis av önskad klocka hastighet eller makt konsumtion kraven. Arduino och dess många varianter har makt kne...

Vakuum kanon drivs flygplan

Detta projekt jag gjorde en vakuum kanon drivs flygplan, bygger detta arbete på en massa andra vakuum kanoner från instuctables. Flygplan är gjord av balsa, att göra det så lätt som möjligt.Steg 1: FlygplanMaterial.Allt du behöver för planet är några...

Driver en Arduino utan kablar

vill någonsin tänkt på att driva en Arduino utan sladdar? Kolla in.Steg 1: Få dessa saker Du behöver dessa för detta.1.Arduino(must)2. batterihållare (6v)3.4 x AA batterierVem som helst prova med ett 9v batteri. Om arbeten, posta en kommentar.Steg 2:...

Driva din Arduino/AVR med ett Hand-Cranked batteri

om du någonsin velat driva din Arduino eller AVR från ett batteri för utveckling testning (batterierna har olika makt leverans kvaliteter än, säg, transformerad AC eller ens en reglerad vägg vårta i DC) testning men var trötta för att gå igenom batte...

Snabba Controlled RC bil med (4 CH Motor Driver styrenhet + Arduino + Bluetooth)

Hej, eftersom detta är min första instructable här, jag hoppas du gillar det och Känn dig fri att fråga om något inte klart i den.För det första, jag började detta projekt efter jag ville styra 4 motorer som kräver relativt hög effekt (12Volts, 4 amp...

Awesome billigt pneumatiska kanon!

i detta instructable, jag kommer att visa dig hur man gör en billig och kraftfull luft kanon. Det är en av de mest enkla pneumatiska "air kanoner" det är kraft, Billigt, enkelt att bygga och kommer att lansera en potatis eller andra projektilen...

Pneumatiska kanon

om du vill ha kul med din familj då detta projekt är för dig. vill starta en potatis 100ft med bara en puff av luft som är din hela kvarter även din lillebror kan göra det dess en av de säkraste kanoner kan du bygga och det tar endast 30 minuter för...

EL Wire hatt: Sekvenserade och ljud aktiverat med fjärrkontroll - drivs med Arduino och Sparkfun

Välkommen till Instructable guide av hatten EL Wire med några roliga funktioner.Konceptet är en EL Wired hatt med 8 sekvenserade EL ledningar kontrolleras av en trådbunden fjärrkontroll. Flera hastighetslägen kontrollerbar sekvens är förprogrammerad...

Road Rage hämnd drivs av Arduino

Har du någonsin haft någon avbröt du i trafiken men tutande ditt horn inte räcker?Jag är en passiv förare; Det krävs mycket för att få mig galen men jag måste tänka på ett roligt sätt att låta folk veta att de avbröt mig att på ett oväntat sätt.Därfö...

Elektronisk musik boxas drivs av Arduino (typ av)

musik är den mest universella uttrycksmedel. Oavsett kulturella språk eller ålder tanken framförs dock musik skulle inte skiljer sig mycket. Det är säkert att säga alla älskar musik, en typ eller en annan. När en favorit bit spelas finns det en överv...

Dubbla Motor Driver med Arduino använder en SN754410NE Quad halv H-bro

En steg för steg handledning av ArduinoFunMed detta Instructable ska jag visa dig hur du använder en SN754410NE Quad H-Bridge IC för att styra två 12 volt DC motorer.Jag har lagt en video så att du kan se den dubbla Motor i aktion. Som ni kan se i vi...

Android skjutreglaget för att styra Arduino RGB LED

Detta är verkligen ett roligt projekt istället för att kontrollera RGB ledde från potentiometern kan du styra den från android app, android app för detta projekt skapades med MIT app inventor, där du kan flytta varje reglage som har tilldelats till R...

Android tar emot data från arduino via bluetooth (app inventor 2)

denna korta film visar dig, hur ta emot data från arduino med din android-telefon.App i app inventor 2.I video im används för stor förseningen att ta emot data, kan du minska.Tack....