Arduino experiment (Supersize Instructable) (3 / 14 steg)
Steg 3: Skicklighet nivå: grundläggande. (1)
- Nakna ben & grundläggande start projekt (Blink & Fade LED lampor och kodning grunderna) med Arduino MikroKONTROLLANT är täckt i flera steg.
- Blinkar och sedan bleknar A LED ljus med tidsinställda förseningar med "Digital" PIN-koden, sedan med en "Analog" stift till styrspänningen input (förmåga att använda grundläggande kod Setup, tidsinställd aktivering förseningar & spänning kontroll i analog form)
- För det första hämta din Arduino IDE (Integrated Development Environment) som används på datorn och hämtat från, för att kommunicera med din Arduino styrelsen Använd följande länk... http://Arduino.cc/en/main/Software nedladdning 1.0.5 eller den senaste versionen av IDE (nej behov till installera)
- Koppla upp din Arduino till din dator via USB-kabeln, och öppna den IDE vanligen någonstans i enhet C: av din PC hård driva (om inte du sätta det på andra håll) nu titta på avsnittet verktyg och hitta där "COM"-portar finns ta bort din Arduino USB-kabel och se vilken COM-port försvann som nu är din Arduino, Anslut den igen , och ställa in com-porten, nästa plocka din Arduino ombord från styrelsen lista att försöka att inte glömma denna del när du har bytt till mega, mikro, nano eller varje annan ändring av styrelsen... Nästa klick fil "Exempel" grunderna och sedan blinka, Observera kodning struktur,, om pin uppställningar med int, void setup, ogiltig loop, primära delar av kodning (kodning efter denna linje ___)
- / * Blink vänder på en LED på för en sekund, sedan bort för en sekund, upprepade gånger. Denna exempelkod är offentlig. * / / / Stift 13 har en lysdiod ansluten på de flesta Arduino styrelser. ge den ett namn: int ledde = 13.
Rutinen installationsprogrammet körs en gång när du trycker på reset: void setup() {/ / initiera digital stiftet som en utgång. pinMode (ledde, OUTPUT);}
Rutinen loop kör om och om igen för alltid: void loop() {digitalWrite (ledde, högt); / / slå LED på (HIGH är spänningsnivån) delay(1000); / / vänta på en andra digitalWrite (ledde, låg); / / stänga LED av genom att göra spänning låg delay(1000); / / vänta en sekund}
(Kopiera och klistra in ovanstående kod i del 5 i IDE eller använda exempel skissen redan där) Se primära kodning struktur och delar och lära känna dem väl för framtida projekt hänvisa tillbaka till grunderna nu och sedan lära om glömda kodning eller värden, förseningen kodning är i millisekunder 1000 är 1 sekund 5000 att vara 5seconds så vidare, Digital Pin 13 på arduino har en inbyggd i LED begränsa motstånd, om du använder en annan pin Glöm inte att lägga till en 560 ohm resistor för att stoppa det bränna ut i en puff av rök, Digital skriver funktion att förklara antingen hög/på/eller låg/av på LED med förseningar i båda ändarna 1 sekund för på 1 sekund för off i grundläggande skissen.
Ställ in den förbindelse som förbinder en LED + positiva stift till digital stift 13 och dess - negativa stift till grn (marken) för att slutföra kretsen till LED-ljus, använda ARDX mallar och ett Lödfritt set av brödunderläggen med bygel ledningar högt rekommenderade. (Titta på videor och se bilder för inställning av kretsen och provning)
Snurra motorn snurra skiss (täckta i flera steg), Med en ARDX mall för att göra layout av kretsen mer lätt när bifogas ett Lödfritt set av brödunderläggen, delar krävs är, massor av hoppare ledningar olika färger, Transistor typ: (P2N2222A) eller en variant av denna gemensamma transistor typ, 2.2 k motstånd är knutet till base/mellersta transistorn stift, blockering diod feedback stopp, så att strömmen inte strömma tillbaka in i micro controller och stek den , eller motor itself,(Optional) 220uf kondensatorn för om motorn gör inte snurra, och behöver ström jämna ut på väg till motorn.
Att ha gjort din grundläggande kodning i det senaste projektet Detta känns mycket mer enkel och mer mekanisk spinning en motor har många ansökningar från sällskapsdjur leksak robot hjul, se samma som förra gången när kretsen har ställts in, bilder och videoklipp, ladda upp koden till din IDE miljö kod efter denna linje ___
int motorPin = 9; definiera pin motorn är ansluten till
(om du använder pin 9,10,11 eller 3Du kan också styra hastighet)
/ * * setup() - funktionen körs en gång när du slår din Arduino på * vi satt motors stiftet vara en utgång (slå pin hög (+ 5v) eller låg (marken) (-)) * istället för indata (kontrollera om en PIN-kod är hög eller låg) * / void setup() {pinMode (motorPin, produktionen);}
/ * * loop() - denna funktion startar när installationen är klar och sedan upprepa * vi anropa en funktion som kallas motorOnThenOff() * /
void loop() / / kör om och om igen {motorOnThenOff(); / / motorOnThenOffWithSpeed(); / / motorAcceleration();}
/ * * motorOnThenOff() - vänder sig motor på sedan off * (märka här koden är identisk med koden som vi använde för * blinkande LED) * / void motorOnThenOff() {int onTime = 2500; //the antalet millisekunder för motorn aktivera för int offTime = 1000; //the antalet millisekunder för motorn att stänga av för digitalWrite (motorPin, hög); / / varv motorn på delay(onTime); / / väntar onTime millisekunder digitalWrite (motorPin LÅG); vänder sig motor av delay(offTime); väntar på offTime millisekunder}
/ * * motorOnThenOffWithSpeed() - vänder sig motor på sedan off men använder hastighet värden samt * (märka här koden är identisk med koden som vi använde för * blinkande LED) * / void motorOnThenOffWithSpeed() {int onSpeed = 200. / / ett tal mellan 0 (slutat) och 255 (full hastighet) int onTime = 2500; //the antalet millisekunder för motorn aktivera för int offSpeed = 50; / / ett tal mellan 0 (slutat) och 255 (full hastighet) int offTime = 1000; //the antalet millisekunder för motorn att stänga av för analogWrite (motorPin, onSpeed); vänder sig motor på delay(onTime); väntar på onTime millisekunder analogWrite (motorPin, offSpeed); vänder sig motor av delay(offTime); väntar på offTime millisekunder}
/ * * motorAcceleration() - accelererar motorn till full fart sedan * tillbaka till noll * / void motorAcceleration() {int fördröjningstid = 50, //milliseconds mellan varje hastighet steg //Accelerates motorn för (int jag = 0; jag < 256; i ++) {//goes genom varje hastighet från 0 till 255 analogWrite(motorPin, i); //sets den nya hastigheten delay(delayTime); / / väntar fördröjningstid millisekunder} //Decelerates motorn för (int jag = 255; jag > = 0; i--) {//goes genom varje hastighet från 255 till 0 analogWrite (motorPin , i); Anger den nya hastigheten delay(delayTime); väntar på fördröjningstid millisekunder}}
Ovanstående kod kommer kan du styra den motorn är på och av med fördröjning liknar blink skissen men med en motor, faktum är att du kan använda samma kodning som blink skissen för att göra det snurra med fördröjning, bara byta namn på LED för Motor Pin att göra det lättare att förstå, sedan spara skissen som spin motor spinn etc , föreslog förbättringar inkluderar kontrollera hastigheten på motorn med en "Analog" stift samma som LED toningen skiss och "Optimera" kodning för att göra det mindre, med nya funktioner såsom i ++ att öka hastigheten från 0 till 256 analoga skriver högsta inställningen 5 volt, "jag-" funktionen gör de motsatta steg ner från 256 till 0 för saktande varvtal... (här koden metoden är endast lämpligt i stora till mycket stora kodning program, såsom robotics system, motor/servo/IR/Data logger kodning skulle lämnar inte mycket utrymme om någon mindre styrelser med mindre minne.
Använda anpassade delar kan vara mycket mer kul, speciellt om du använder en hög effekt vibration motor, med många olika sorters motorer för att se som fungerar bäst med denna krets också tillrådligt, liten leksak motorer fungerar bäst.
8-bitars SKIFTREGISTER (IC) (kontrollera x8 LED's med x3 stift & LED animationer) I flera steg... kommer att nu något mer intressant användning av integrerad krets tech IC, (74HC595 SKIFT Register) göra följande, användning x3 Arduino stift att skifta ut 8-bitar av data, vilket LED animationer... en förklaring på hur detta görs med Data/spärr/Klocka stift på IC-Chip vänligen leta efter mikrochips datablad online ( http://www.nxp.com/documents/data_sheet/74HC_HCT59... ) klistra in länken i ett tomt sökfält i goggle för datablad på denna komponent, lära känna det och dess funktionssätt, och ni förstår IC Stifttilldelningar i ingen tid alls.
Samma som alltid sätta upp din krets enligt bilder och video visar, också kan hitta online dokumentation på hur man gör detta ännu mer i detalj om det behövs (kolla & Kontrollera igen dina ledningar här) Detta blir mest ledningar du har använt ännu och det är lätt att miss-aline trådarna eller inte driva en jumper tråd hela vägen , att göra farliga kortslutning om i tillförselområdet makt, alltid kontrollera ditt ledningar när man gör komplexa konfigurationer som denna, eller länka IC marker, eftersom de kräver en hel del kabeldragning, ladda upp koden nedan den här raden till din IDE utom under vilket namn du vill ha i skisss ___
PIN-kod definitioner
PIN-kod definitioner //The 74HC595 använder en seriell kommunikation //link som har tre stift int data = 2; int clock = 3; int spärren = 4;
Används för enskild LED manipulation int ledState = 0; CONST int å = hög; CONST int OFF = låg;
/ * * setup() - funktionen körs en gång när du slår din Arduino på * vi satt tre kontroll stiften att utgångar * / void setup() {pinMode (data, produktionen); pinMode (klocka, OUTPUT); pinMode (spärren, OUTPUT);}
/ * * loop() - denna funktion startar när installationen är klar och sedan upprepa * vi satt som lysdioder vi vill på sedan ringa en rutin som skickar de till 74HC595 * / void loop() / / kör om och om igen {int fördröjningstid = 100; //the antal millisekunders fördröjning mellan LED uppdateringar för (int jag = 0; jag < 256; i ++) {updateLEDs(i); delay(delayTime);}}
/ * * updateLEDs() - skickar LED står i ledStates till 74HC595 * sekvens * / void updateLEDs (int value) {digitalWrite (latch, låg); //Pulls marker spärren låg shiftOut (data, klocka, MSBFIRST, värde); //Shifts ut de 8 bitarna till SKIFT register digitalWrite (latch, hög); //Pulls spärren hög visar data}
/ * * updateLEDsLong() - skickar LED står i ledStates till 74HC595 * sekvens. Samma som updateLEDs förutom att skifta ut görs i programvara * så du kan se vad som händer. * / void updateLEDsLong (int value) {digitalWrite (latch, låg); //Pulls marker spärren låg för (int jag = 0; jag < 8; i ++) {//Will upprepa 8 gånger (en gång för varje bit) int bit = värde & B10000000; //We använda en "bitmask" för att välja endast den åttonde //bit i vårt nummer (den som vi tar upp denna gång genom värde = värde << 1; //we flytta våra upp en bit värde så nästa gång bit 7 är //bit 8 och vi kommer att göra vår matematik på det if(bit == 128) {digitalWrite (data, hög);} //if bit 8 är Ställ och ange våra data pin hög annat {digitalWrite (data, låg);} //if bit 8 är deaktiverat sedan ställa in data pin låg digitalWrite (klocka, hög); de följande tre raderna puls klocka pin delay(1); digitalWrite (klocka, låg); } digitalWrite (latch, hög); drar låset hög skiftande våra data till visas}
Dessa används i bitvis matematik som vi använder för att ändra enskilda lysdioder //For mer detaljer http://en.wikipedia.org/wiki/Bitwise_operation int bitar [] = {B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000}; int masker [] = {B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111}; / * * changeLED (int ledde, int stat) - ändrar en enskild LED * lysdioder är 0 till 7 och staten är antingen 0 - OFF eller 1 - å * / void changeLED (int ledde, int stat) {ledState = ledState & masker [ledde]; //clears ledState av bet vi tar upp if(state == ON) {ledState = ledState | bitar [ledde];} //if biten är på vi kommer att lägga till ledState updateLEDs(ledState); //send den nya LED-staten till SKIFT registrera}
Detta är helt klart den största koden ännu att vara mer komplex sedan den andra hittills, dissekera koden själv denna gång plocka isär i nya funktioner som finns, B00000001, B00000010 (Bet koder) 01 att vara de första 10 är det nästa så vidare så vidare, försöka lära känna huvudsakligen 3 delar av IC-chip spärr/Data/klocka stift och var de finns för framtida projekt.
Animationer kan hämtas online för LED's för att få dem att blinka på vissa sätt, prova att använda olika färg eller flera färg leds som jag gjorde, snarare än alla samma färg, det gör det lättare att se animationen och ser mycket bättre också, se till att alla resistorer knutna till lysdioder är isatt, ibland en kommer att flytta sin plats medan du ansluter massa hoppare ledningar.
9 g SERVO kontroll (används vanligen i robotics) 9g Mini Servo är ganska lätt för att ställa in rörelsen att vara begränsad i pulser kontrollera servon databladet online för din typ av servo, kan användas i robotic plats system som ultrasonic sensor vända förmåga, dörrlås, gemensamma rörelsen, och axeln servo armar används i fabriken tillverkning och konstruktion helt automatiserad på pre programmerat servo's inuti dessa arms.less steg sedan vanligt denna gång som ni nu vet hur man ställer upp en krets och ladda upp program till din IDE, som väl så grundläggande kodning funktioner och mycket mer.
Ställ in din Servo enligt bilderna publiceras, och lägga till tillägg etiketter för bättre visuell indikering av servo vinkel när gjort gå till Arduino huvudsidan och Sök för servo biblioteket själv lära dig att lägga till det genom att läsa upp på biblioteket, en gång gjort och du har det till exempel eller skissbok, ladda upp "Svep" exempel som finns där måste ladda ner denna för att använda koden nedan här line___
#include servo myservo; skapa objekt för att styra en servo servo / / maximalt åtta servo objekt kan skapas int pos = 0; variabel att lagra servo position void setup() {myservo.attach(9); / / tillmäter objektet servo servo på stift 9} void loop() {för (pos = 0; pos < 180; pos + = 1) / / går från 0 grader till 180 grader {/ / i steg om 1 grad myservo.write(pos); / / tala servo gå till position i variabel "pos' delay(15); / / väntar 15 MS för servo att nå ställning} för (pos = 180, pos > = 1; pos-= 1) / / går från 180 grader till 0 grader {myservo.write () POS); berätta servo gå till position i variabel "pos' delay(15); Waits 15 MS för servo att nå ställning}}
Lek med servo för en medan det kan fastna då och då bara twist upp tillbaka till sin utgångspunkt och tryck på Återställ så startas om kodning biblioteket, servo bör sedan rotera 180degrees och tillbaka, försök att ändra puls tidpunkten i små steg att hitta en som fungerar bättre för din servo, nästa del är ganska lätt krok upp en 10k bifoga Potentiometer till gör den här potten till analoga stift 0 samt som knyter den in-/ + anslutningar/rails på skärbräda med bygel ledningar se mina bilder och videor till se hur jag anslutit den, eller hänvisa till din egen expertis, prova experiment är alltid bättre, att hitta det ut för dig själv, dess bara 3 trådar och 3 för servo som redan är anslutna, räkna pinut av din potten själv dess mycket enkel att du kommer att arbeta ut det om du har fått detta långt och gjort alla tidigare experiment.