Dra System för att minska (4 / 5 steg)

Steg 4: Komponera en Arduino skiss

Nedan är den kod som jag använde för att kontrollera mitt system.

Jag använder flera bibliotek för att möjliggöra användning av IR-mottagaren, LCD-skärm över I2C och servo.

De flesta av mina variabler definieras inom de funktioner som använder dem men vi behöver definiera ta emot PIN-koden för IR mottagaren så att vi kan initiera objektet IR-mottagare. Vi behöver också att instansiera resultaten av IR-mottagaren och servo och LCD-display.

Setup-funktionen börjar genom att starta den seriella monitorn och initiera LCD och slå på bakgrundsbelysningen. Under installationen måste vi även börja IR-mottagaren koppla servo för att pin-nummer 9 och definiera stift 6 och 7 som utgångar för motor och relä.

Stora slingan synar bara tre funktioner som beskrivs nedan

/***************************************************************************************
Control System Program för en enkel Arduino baserade dra Reduction System
Av Korey Prince

Det här programmet förvandlar ett relä på och av med hjälp av en IR fjärrkontroll och upptäcker hastigheten på en
motor att avgöra när ansätta en vinge baserat på tillförsel av en potentiometer
***************************************************************************************/
inkludera alla biblioteken i detta program
#include < irremote.h >
#include < liquidcrystal_i2c.h >
#include < wire.h >
#include < servo.h >

int RECV_PIN = 11. //define IR få som stift 11
IRrecv irrecv (RECV_PIN), //instantiate en IR-mottagare objekt
decode_results resultat; //instantiate ett decode_results-objekt.
Detta objekt är separat från IR-mottagaren.

Servo myservo; //instantiate ett servo objekt att styra vingen

LiquidCrystal_I2C lcd (0x27, 16, 2); //instantiate en 16 x 2 I2C LCD display med adress 0x27

void setup()
{
Serial.BEGIN (9600); //Start seriell bildskärmen
LCD.init(); / / initiera lcd

irrecv.enableIRIn(); Starta mottagaren

myservo.attach (9, 544, 1200); / / tillmäter objektet servo servo på pin 9

pinMode (6, OUTPUT); //define stift 6 som en utgång för motorn
pinMode (7, OUTPUT); //define stift 7 som en utgång för reläet
pinMode (8, OUTPUT); //define stift 8 som en utgång för den gröna lysdioden
pinMode (12, OUTPUT); //define stift 12 som en utgång för den röda lysdioden
}

void loop()
{
få kommandon från funktionen recvIR för att slå strömmen med fjärrkontroll
recvIR();

kontrollera hastigheten på motorerna och aktivera servo om tröskelvärdet
activateDRS();

få varv per milli-sekund från revPerMilli funktion
revPerMilli();
}

Idén om activateDRS funktion är att vända ett servo till en specifik position när ett villkor uppfylls. Villkoret är i detta fall motorSpeed. Om motoriska hastighet är större än av lika med 200 servo kommer att flytta till 60 grader position. Om servo är mindre som 200 som servo återgår till ursprungsläget.

int activateDRS() {< br > int pos = 0; //define variabeln pos för position
servo
int motorSpeed; //define en annan variabel och uppsättningen det lika till funktionen
motorController()

motorSpeed = motorController();

flytta servo till dess aktiva plats när hastigheten på motorerna når 200
om (motorSpeed > = 200) {
för (pos = 60; pos > = 0; pos-= 1) / / går från 0 grader till 60 grader
{/ / i steg om 1 grad
myservo.write(POS); / / tala servo gå för att placera i variabel "pos"
digitalWrite 8, hög.
digitalWrite 12, låg.
Delay(15); / / väntar 15 MS för servo att nå ställning
lcd.setCursor(0,1);
LCD.Print ("DRS: ON");
bryta; / / tillåta programmet att avsluta när servo positionen nås
}
tala om för användaren att DRS systemet är på
Serial.println ("DRS: på");
}
om (motorSpeed < 200) {
för (pos = 0; pos < = 60; pos + = 1) / / går från 900 grader till 0 grader
{
myservo.write(POS); / / tala servo gå för att placera i variabel "pos"
digitalWrite 8, låg.
digitalWrite 12, hög.
Delay(15); / / väntar 15 MS för servo att nå ställning
lcd.setCursor(0,1);
LCD.Print ("DRS: OFF");
bryta; / / tillåta programmet att avsluta när servo positionen nås
}
}
återvända motorSpeed;
}

Den motor controller funktionen helt enkelt definierar en potentiometer som en analog ingång och kartor motor värdet till digitala utbud som används i funktionen activateDRS

int motorController() {< br > //define variabler
int potPin = A0;
int motorPin = 6;
int potValue = 0;
int motorValue = 0;

definiera potPin som en analog ingång
potValue = analogRead(potPin);

karta analoga värdet av potten klämmer fast motorn
motorValue = karta (potValue, 0, 1023, 0, 255);
skriva det analoga värdet av motorn till PWM motor stift 6
analogWrite (motorPin, motorValue);
Serial.println(motorValue);

återvända motorValue;
}

Vi kontrollera här om ett visst kommando har tagits emot. om det har aktivera vi reläet. om ett annat kommando skickas reläet kommer vända bort som skär makt till motor och servo.

void recvIR() {< br > //has en överföring har fått?
om (irrecv.decode (& resultat))
{
Serial.println (results.value), //If ja: tolka de mottagna kommandona...
om (results.value == 12419199) {//Power buttom på AOC fjärrkontroll
LCD.Clear();
lcd.noBacklight (); //turn på bakgrundsbelysningen
Delay(100);
}
om (results.value == 12398799) {//Vol upp buttom på AOC fjärrkontroll
Delay(100);
LCD.Clear();
LCD.backlight (); //turn på bakgrundsbelysningen
LCD.Print ("System Ready");
digitalWrite (7, hög). Aktivera reläet (HIGH är spänningsnivån)
Delay(100);
}
om (results.value == 12392679) {//Channel upp buttom på AOC fjärrkontroll
LCD.Clear();
LCD.Print ("System av");
Delay(500);
lcd.noBacklight (); //turn av bakgrundsbelysning
digitalWrite (7, låg). Inaktivera reläet genom att spänningen låg
digitalWrite 12, låg.
Delay(100);
}
irrecv.Resume(); Ta emot nästa värde
}
}

Funktionen revsPerMilli beräknar rotationerna av hjulet per millisekund av första väntar avbrott värdet att öka till över 100. När revolutionerna når 100 beräknas den omkrets och hastighet av hjulet. denna funktion använder en inbyggd i Arduino funktionen anropas millis för att få tid i millisekunder.

Obs: Jag har inte kunnat få kodare ska fungera så denna funktion inte är nödvändiga för att koden ska fungera. Jag la den främst som en förbättring för senare.

flyta revPerMilli() {< br > //define variabler
unsigned int rpmilli;
float hastighet;
osignerade långa timeold;
beräkna varv per milli(second)
rpmilli = revolutions/(millis()-timeold);

om (rotationer > = 100) {
Uppdatera RPM varje 100 räknas, öka detta för bättre RPM upplösning,
minskningen för snabbare uppdatering
Delay(100);

lagra förra gången i en variabel
timeold = millis();
varv = 0;

beräkna omkretsen av hjulet
flyta WHEELCIRC = 2 * PI * 0.065;
ange hastigheten av hjulet
hastighet = rpmilli * WHEELCIRC * 3600;

Serial.Print ("RPM:");
Serial.Print(rpmilli);
Delay(100);
}
återvända rpmilli;
}

Se Steg
Relaterade Ämnen

Hur till Gap eller effektivisera en bil för att minska dra och väg buller

Anledningen till att några bilar kan gå snabbare än 200 Miles i timmen är luftmotstånd. Detta är också anledningen till att en Jeep Wrangler får 16 MPG. Att minska dra på din bil kan ha en ganska betydande inverkan på bränsleförbrukning vid motorväge...

100 sätt att minska din påverkan

världens mest riklig och rikaste energiförsörjning är bevarandet.Utveckla energi effektiva livsstilar är det första steget i att minska den miljöpåverkan som har människor på denna jord. Jag gjorde detta Instructable på detaljer många olika sätt att...

Motoriserade System för att höja och sänka hängande växter

Hängande växter är ett bra sätt att lägga till lite grönt runt ditt hus. Men det finns många bra platser för hängande växter som är alldeles för obekvämt att använda. Till exempel om du har riktigt högt i tak, du inte vill behöva gå upp på en stege v...

Grunderna i förvandlar ditt Remote Controll fordon till ett autonomt System (Drone) genom att använda en Arduino

jag började detta projekt med målet att billigt vrida min RC helikopter till något av en UAV eller åtminstone att passa vissa sensorer att minska kollisioner och andra "mis haps."Nu är tyvärr i början av projektet missbedömde jag min lilla helik...

7 enkla Tips för att minska stressen i Travel

moderna ålder kan vara super stressigt. Från att försöka hitta utrymme för ditt bagage på ett fullsatt plan till försöker inte få pick hål på upptagen turist ställen. Här är några snabbt, enkelt och billigt tips att minska några av dessa påfrestninga...

Rama in vulkan dra System (VDS)

Hej allaMitt namn är Cyriel van der Meer. Jag är en student vid Howest University College västra Flandern.Jag lär bli en industriell produktdesigner.Så för den kursen Design & prototyper, jag sitted i en grupp tillsammans med Jordy Van Hoegaerden och...

Tips för att minska elektriska störningar.

All elektronik är känslig för elektriska störningar. Vissa mer än andra. Varifrån kommer detta buller? I närheten elektronik, kablar/sladdar fungerar som antenner för bullrig utrustning, atmosfäriska störningar (tack Moder natur), power utility och ä...

Förståelse sändare-anhängare: Med transistorer att minska Sag

Många elektroniska kretsar, inklusive spänningsavdelare och filter, producera signaler det sag när strömmen ritas. En sändare-anhängare använder en transistor för att minska denna sag med en faktor 100.Följande information är anpassade från en elektr...

Ojämn lödning teknik för att minska risken för kort

I ett nötskal, minska du längden på en tråd på neg så att avsnittet avisolerade lödning är endast kunna kontakta isolerad ledare på den andra linjen. Detta kommer att fungera för att minska risken för kort innan värme krymper spark i.Steg 1: Skär din...

NYLON väderkvarn fläns att minska fågel

detta är fäste för en standard 2,5 meter 8 blad elektriskageneration väderkvarn. Detta liknar flera kommersiella väderkvarn flänsar.Flänsen är tryckt i NYLON för att ge en shore 45 enda flexibel anslutning viktigaste drivaxel från åtta glasfiber blad...

Att minska fläktljudet av en NAS-enhet.

Wow, min första instructable så var försiktig.Mitt hemnätverk innehåller bland annat en NAS-enhet.Detta är en enhet att du skulle köra 24 x 7 för allmän tillgänglighet rätt?Men jag föredrar att hålla enheten i vardagsrummet, eftersom det är där 1Gb e...

Linje en gitarr förstärkare chassi att minska RF

jag gjorde detta instructable på Techshop Detroit.Webbplatsen för Techshop kan hittas här:www.Techshop.wsFör detta steg i min multi del instructable kommer jag modifiera chassit för att passa de ingående uttag och fodret inuti chassit med koppar. Jag...

Hur att minska svullna ögon snabbt

hur många av oss har en lång natts festande oh... Jag menar att studera, och vaknar vi upp och vi ser ut som sova depraverade zombies. Detta är en snabb spets och jag vet att alla har denna ingrediens i deras skafferi. Det är en snabb lösning för att...

Använda vintern till att minska energikostnaderna

vintern i norra delen av USA kan spela förödelse på elräkningar. Det finns många åtgärder du kan vidta för att minska kostnaderna. Detta instructable kommer att ge dig ett enkelt sätt att använda Moder natur för att minska vissa kostnader.Steg 1: Enk...

Enkelt sätt att minska mobil dataanvändning på Android.

Här är ett enkelt sätt att minska bandbredden för din mobil data när du sparar lite pengar om du främst använder din telefon för snabbmeddelanden eller e-kontroll. Om du använder tunga multimediainnehåll på mobil data då detta kommer bara hindra dig....

Att minska veck i skor

detta instructable visar dig hur att spara lite pengar på skor genom att lära dig hur att minska eller ta bort veck från de flesta skorSteg 1: Att korrekt fullborda processen behöver du:Slitna skor-att minska veckEn disktrasa - att lägga över toppen...

3 steg & mest effektivt sätt att isolera ditt Garage dörren att minska värme få

Isolerande en garageport är värt av många skäl. Det huvudsakliga skälet någon kanske vill isolera garaget helt enkelt eftersom de tillbringar tid där. Vare sig det är trä, automotive mixtrande eller lyft vikter på en hem gym - dessa är alla anledning...

Rum av rummet åtgärder för att minska den globala uppvärmningen och din elräkning.

Detta är en instructable som kostar nästan ingenting (med undantag för nya saker som diskmaskiner:) och minska ut globala fotavtryck. En film jag tycker du bör alla se först är denna länkDetta är intressant också länkTack vare Greenpeace för bilden.O...

System för att automatiskt begränsa TV-tid

De flesta av oss tillbringar alldeles för mycket tid framför TV: N. Så jag konstruerade ett system som automatiskt kommer att begränsa när och hur mycket TV: N kan vara på. Systemet fungerar genom att kontrollera insignalen går till TV: N. Detta görs...