kategorier: Utvalda artiklar » Praktisk elektronik
Antal visningar: 67360
Kommentarer till artikeln: 7

Ansluta och programmera Arduino för nybörjare

 

Verkar studiet av mikrokontroller komplicerade och obegripliga? Innan Arudino uppträdde var det verkligen inte lätt och krävde en viss uppsättning programmerare och annan utrustning.


Vad är en Arduino?

Detta är en typ av elektronisk konstruktör. Det ursprungliga målet med projektet är att låta människor enkelt lära sig att programmera elektroniska apparater, samtidigt som man lägger minimal tid åt den elektroniska delen.

Montering av de mest komplicerade kretsarna och anslutningen av brädorna kan utföras utan lödkolv och med hjälp av hoppare med löstagbara anslutningar "far" och "mor". På detta sätt kan både bilagor och expansionskort anslutas, som i lexikonet för arduinisterna helt enkelt kallas ”Sköldar”.

Vad är Arduino?

Vad är det första Arduino-brädet som köper en nybörjare?

Basen och mest populära brädet beaktas Arduino uno. Denna avgift liknar ett kreditkort. Ganska stort. De flesta sköldar som är till försäljning är perfekta för henne. Det finns uttag på kortet för anslutning av externa enheter.

Arduino uno

I inhemska butiker för 2017 är priset cirka 4-5 dollar. På moderna modeller är Atmega328 hennes hjärta.

Arduino uno

Arduino-kortets bild- och funktionsavkodning av varje stift, Arduino UNO pinout

Mikrokontrollern på detta kort är ett långt chip i DIP28-paketet, vilket innebär att den har 28 ben.

Det näst mest populära brädet kostar nästan två gånger billigare än det förra - 2-3 dollar. Det här är styrelsen Arduino nano. Faktiska styrelser är byggda av samma Atmega328, de är funktionellt lika med UNO, det finns skillnader i storlekar och en matchande lösning med USB, mer om detta senare. En annan skillnad är att en plugg i form av nålar är anordnad för anslutning av enheter till kretskortet.

Arduino nano

Antalet stift (ben) på detta bräde är detsamma, men du kan observera att mikrokontrollern är tillverkad i ett mer kompakt TQFP32-paket, ADC6 och ADC7 läggs till i fallet, de andra två "extra" benen duplicerar kraftbussen. Dess dimensioner är ganska kompakta - ungefär storleken på en tumme på din hand.

Aruino nano pinout 

Det tredje mest populära styrelsen är Arduino Pro Mini, den har inte en USB-port för anslutning till en dator, jag ska berätta för dig hur du ska kommunicera lite senare.

Jämförelse mellan Arduino Nano och Pro Mini

Jämförelse mellan Arduino Nano och Pro Mini

Detta är den minsta styrelsen av alla övervägda, annars liknar den de två föregående, och Atmega328 är fortfarande dess hjärta. Vi kommer inte att överväga andra styrelser, eftersom det här är en artikel för nybörjare och jämförelsen av brädor är ämnet för en separat artikel.

Arduino Pro Mini-urklipp, i den övre delen, USB-UART-anslutningsdiagrammet, stift “GRN” - är anslutet till återställningskretsen för mikrokontrollern, det kan kallas annorlunda, som du måste ta reda på senare.

resultat:

Om UNO är praktiskt för prototyper, är Nano och Pro Mini praktiska för de slutliga versionerna av ditt projekt, eftersom de tar lite plats.

Arduino för nybörjare

Hur ansluter du Arduino till en dator?

Arduino Uno och Nano ansluter till en dator via USB. Samtidigt finns det inget hårdvarosupport för USB-porten, en kretslösning för nivåkonvertering används här, vanligtvis kallad USB-till-seriell eller USB-UART (rs-232). Samtidigt blinkas en speciell Arduino-startladdare in i mikrokontrollern, vilket tillåter blinkning på dessa bussar.

I Arduino Uno implementeras denna ligatur på en mikrokontroller med USB-stöd - ATmega16U2 (AT16U2). Det visar sig att den ytterligare mikrokontrollern på kortet behövs för att blinka huvudmikrokontrollern.

I Arduino Nano implementeras detta av FT232R-chipet eller dets analoga CH340. Detta är inte en mikrokontroller - det är en nivåomvandlare, detta faktum gör det enkelt att montera Arduino Nano från början med dina egna händer.

Normalt installeras drivrutiner automatiskt när Arduino-kortet är anslutet. Men när jag köpte en kinesisk kopia av Arduino Nano kände enheten igen, men den fungerade inte, en rund klistermärke med data på släppdatumet limmades på omvandlaren, jag vet inte om det gjordes med avsikt, men efter att ha avskalat det såg jag märket CH340.

Innan dess hade jag inte stött på detta och tänkte att alla USB-UART-omvandlare var monterade på FT232, jag var tvungen att ladda ner drivrutiner, de är väldigt enkla att hitta på begäran av "Arduino ch340 driver". Efter en enkel installation - det fungerade!

Genom samma USB-port kan mikrokontrollern också drivas, dvs. om du ansluter den till adaptern från en mobiltelefon fungerar ditt system.


Vad ska jag göra om mitt kort inte har USB?

Arduino Pro Mini är mindre. Detta uppnåddes genom att ta bort USB-kontakten för firmware och samma USB-UART-omvandlare. Därför måste det köpas separat. Den enklaste omvandlaren på CH340 (den billigaste), CPL2102 och FT232R, till försäljning kostar från $ 1.

När du köper, var uppmärksam på vilken spänning denna adapter är designad för. Pro mini finns i versionerna 3.3 och 5 V, en bygel finns ofta på omvandlarna för att växla matningsspänningen.

Arduino Pro Mini

När du blinkar Pro Mini, strax innan den startar, måste du klicka på RESET, men i omvandlare med DTR behöver du inte göra detta, anslutningsdiagrammet i figuren nedan.

Anslutningsdiagram för firmware

De förenas av specialterminaler "Mama-Mama" (kvinnlig-kvinnlig).

Arduino-anslutning

Egentligen kan alla anslutningar göras med hjälp av sådana terminaler (Dupont), de är båda på två sidor med uttag och med pluggar, och på ena sidan av uttaget och på den andra kontakten.

kontakt

Hur skriver man program för Arduino?

För att arbeta med skisser (namnet på firmware är på arduino-språket) finns det en speciell integrerad miljö för att utveckla Arduino IDE, du kan ladda ner den gratis från den officiella webbplatsen eller från någon tematisk resurs, vanligtvis finns det inga problem med att installera den.

Program för Arduino

Så ser programgränssnittet ut. Du kan skriva program på det förenklade C AVR-språket som är speciellt utvecklat för arduino, i själva verket är det en uppsättning bibliotek som heter Wiring samt i ren C AVR. Att använda den underlättar koden och påskyndar sitt arbete.

Längst upp i fönstret finns en bekant meny där du kan öppna filen, inställningar, välja brädet du arbetar med (Uno, Nano och många, många andra) och också öppna projekt med färdiga kodexempel. Nedan finns en uppsättning knappar för att arbeta med firmware, knapparna du ser i figuren nedan.

Programgränssnitt

Längst ner i fönstret finns ett område för att visa information om projektet, status för koden, firmware och förekomsten av fel.


Grunderna för programmering av Arduino IDE

I början av koden måste du deklarera variabler och ansluta ytterligare bibliotek, om de finns, görs detta enligt följande:

# inkludera biblioteka.h; // anslut biblioteket med namnet ”Biblioteka.h”

# definiera peremennaya 1234; // Förklara en variabel med ett värde av 1234

Kommandot Definiera gör det möjligt för kompilatorn att välja variabeltyp, men du kan ställa in den manuellt, till exempel ett heltal int, eller en flytande punktflöde.

int led = 13; // skapade variabeln "led" och tilldelade det värdet "13"

Programmet kan bestämma stiftets tillstånd som 1 eller 0. 1 är en logisk enhet, om stift 13 är 1, kommer spänningen på dess fysiska ben att vara lika med matningsspänningen för mikrokontrollern (för arduino UNO och Nano - 5 V)

Den digitala signalen spelas in med hjälp av kommandot digitalWrite (stift, värde), till exempel:

digitalWrite (led, hög); // skriv enheten till stift 13 (vi meddelade den ovan) logg. Unit.

Som ni förstår är åtkomsten till portarna genom att numrera på kortet, motsvarande siffra. Här är ett exempel som liknar den föregående koden:

digitalWrite (13, hög); // stift stift 13 till en

Ofta kallas den eftertraktade tidsfördröjningsfunktionen med kommandot fördröjning (), vars värde ställs in i millisekunder, mikrosekunder uppnås med

fördröjning Mikrosekunder () Försening (1000); // mikrokontroller väntar 1000 ms (1 sekund)

Portinställningarna för ingång och utgång ställs in i funktionen void setup {} med kommandot:

ogiltig installation () {

pinMode (NOMERPORTA, OUTPUT / INPUT); // argument - variabelnamn eller portnummer, input eller output att välja mellan

}

Void loop {}


Förstå det första Blink-programmet

Som ett slags "Hej, värld" för mikrokontroller finns det ett LED-blinkande program, låt oss analysera dess kod:

I början, med pinMode-kommandot, sa vi mikrokontrollern att tilldela en port med en LED till utgången.Du har redan lagt märke till att koden inte deklarerar variabeln “LED_BUILTIN”, faktum är att i Uno, Nano och andra kort från fabriken är den inbyggda LED-anslutningen ansluten till stift 13 och den är lödd till kortet. Det kan användas av dig för indikering i dina projekt eller för en enklare kontroll av dina blinkande program.

Därefter ställer vi in ​​den utgång som lysdioden är lödad till enhet (5 V), nästa rad gör att MK väntar 1 sekund och ställer sedan LED_BUILTIN-stiftet till noll, väntar en sekund och programmet upprepas i en cirkel, så när LED_BUILTIN är 1 - LED ( och all annan belastning ansluten till porten) är påslagen när den vid 0 är avstängd.

Fungerar allt och allt är klart? Gå sedan vidare!



Vi läser värdet från den analoga porten och använder lästa data

Atmega328 AVR-mikrostyrenhet har en inbyggd 10-bitars analog-till-digital-omvandlare. 10-bitars ADC låter dig läsa spänningsvärdet från 0 till 5 volt, i steg om 1/1024 av signalens hela amplitudområde (5 V).

För att göra det tydligare, tänk på situationen, anta att spänningsvärdet vid den analoga ingången är 2,5 V, då kommer mikrokontrollern att läsa värdet från stift "512" om spänningen är 0 - "0", och om 5 V - (1023). 1023 - eftersom räkningen går från 0, dvs 0, 1, 2, 3, etc. upp till 1023 - totalt 1024 värden.

Så här ser det ut i koden genom att använda standardskissen “analogInput” som exempel

int sensorPin = A0;

int ledPin = 13;

int-sensorVärde = 0;

ogiltig installation () {

pinMode (ledPin, OUTPUT);

}

void loop () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

fördröjning (sensorValue);

digitalWrite (ledPin, LOW);

fördröjning (sensorValue);

}

Kopplingsschemat för potentiometern till Arduino, analogt, den centrala utgången som du kan ansluta till vilken analog ingång som helst

Kopplingsschemat för potentiometern till Arduino, analogt, den centrala utgången som du kan ansluta till vilken analog ingång som helst.

Förklara variabler:

  • Ledpin - tilldela oberoende en stift med en inbyggd LED till utgången och ge ett individuellt namn;

  • sensorPin - analog ingång, ställs in enligt markeringen på kortet: A0, A1, A2, etc.;

  • sensorValue - en variabel för att lagra ett heltal läsvärde och arbeta ytterligare med det.

Koden fungerar så här: sensorValue spara det analoga värdet som läses med sensorPin (analogRead-kommando). - här slutar arbetet med den analoga signalen, då är allt som i föregående exempel.

Vi skriver enheten i ledPin, lysdioden tänds och väntar en tid som är lika med värdet på sensorValue, dvs från 0 till 1023 millisekunder. Stäng av lysdioden och vänta igen under denna tidsperiod, varefter koden upprepas.

Med hjälp av potentiometern ställer vi sålunda in blinkande frekvens för lysdioden.


Kartfunktion för Arudino

Inte alla funktioner för ställdon (jag vet inte) stöder “1023” som ett argument, till exempel är servo begränsad av rotationsvinkeln, det vill säga med en halv varv (180 grader) (halv varv) för servomotorn, det maximala argumentet för funktionen är ”180”

Nu om syntaxen: karta (värdet vi översätter är det minsta ingångsvärdet, det maximala ingångsvärdet, det minsta utgångsvärdet, det maximala utgångsvärdet).

I kod ser det ut så här:

(karta (analogRead (pot), 0, 1023, 0, 180));

Vi läser värdet från potentiometern (analogRead (pot)) från 0 till 1023, och vid utgången får vi siffror från 0 till 180

Värde Kartvärden:

  • 0=0;

  • 1023=180;

I praktiken tillämpar vi detta på arbetet med samma servokod, titta på koden med Arduino IDE, om du noggrant läser de föregående avsnitten krävs det ingen förklaring.

Och anslutningsdiagrammet.

Kopplingsschema

Slutsatser Arduino är ett mycket bekvämt verktyg för att lära sig att arbeta med mikrokontroller. Och om du använder ren C AVR, eller som det ibland kallas "Pure C", kommer du att minska kodvikten avsevärt och passa mer i mikrokontrollerns minne, som ett resultat kommer du att få ett utmärkt fabrikstillverkat felsökningskort med USB-firmware.

Arduino för nybörjare

Författarens yttrande:

Jag gillar arduino. Det är synd att många erfarna mikrokontrollerprogrammerare kritiserar det orimligt, att det är för förenklat. I princip är det bara språket som förenklas, men ingen tvingar dig att använda det, plus att du kan blixta mikrokontrollern genom ICSP-anslutningen och fylla i den kod du vill ha utan några startladdare som du inte behöver.

För dig som vill spela med elektronik, som en avancerad konstruktör, är den perfekt, men för erfarna programmerare kommer ett bräde som inte kräver montering också att vara användbart!

För mer information om Arduino och funktionerna i dess användning i olika scheman, se e-boken -Arduino för dummies. Illustrerad praktisk guide.

Se även på elektrohomepro.com:

  • Metoder för att läsa och hantera Arduino I / O-portar
  • Vilket Arduino-bräde att välja
  • Typer och arrangemang av AVR-mikrokontroller
  • Microcontroller Remote Control: IR Remote, Arduino, ESP8266, 433 ...
  • Ansluter analoga sensorer till Arduino, lässensorer

  •  
     
    kommentarer:

    # 1 skrev: ELEKTROMAG | [Cite]

     
     

    Vilken litteratur om att studera programmeringskod rekommenderar du?

     
    kommentarer:

    # 2 skrev: Andrew | [Cite]

     
     

    ELEKTROMAGUlli Sommer. Arduino / Freeduino Microcontroller Board Programming, av Jeremy Bloom. Vi studerar Arduino. Verktyg och tekniker för teknisk magi, John Boxell. Vi studerar Arduino. 65 gör-det-själv-projekt. Böcker om Arduino på ozon: i.electricianexp.com/arduino_books.php

     
    kommentarer:

    # 3 skrev: Victor | [Cite]

     
     

    Mycket intressant och spännande material, tack!

     
    kommentarer:

    # 4 skrev: Ural | [Cite]

     
     

    Tack för informationen, "karta" -funktionen var väldigt praktisk, jag undrade hur man skulle komma runt, bara börja lära sig leksaker på Arduino.

     
    kommentarer:

    # 5 skrev: Dima | [Cite]

     
     

    Något jag inte hittar för arduino sköldar för att dela på mil-std-1553b, även om för komp bussar - högar, ett mycket populärt gränssnitt. Poke där du kan söka-köpa.

    P.S. datumet för artikeln visas inte - kanske är hon tio år gammal och är det inte värt att skriva kommentarer?

     
    kommentarer:

    # 6 skrev: Eremino | [Cite]

     
     

    Hur man gör en insignalsrepeater på Arduino för 4 eller valfritt antal utgångar.

    Likaså med 4 ingångskanaler till 16 utgångskanaler. I detta fall måste du växla ingången till alla fyra utgångar samtidigt på varje ingångskanal.

     
    kommentarer:

    # 7 skrev: Oleg | [Cite]

     
     

    Killar, berätta, var har du lärt dig att programmera? Jag granskade mycket information och ingen skrev tydligt. Här är all information inte för en nybörjare, egentligen är inte mycket tydligt, understatements. Många ord har skrivits om vilket inte ett ord, till exempel skriver författaren, i början måste du förklara biblioteket och ange #include biblioteka.h; // men om detta ord skrev han ingenting # inkludera varför är det möjligt att förstå allt detta. Jag saknar redan tålamod, ingen kan förklara på normalt sätt och förklara så vad som skulle hända här är det nödvändigt att skriva detta. Det är naturligtvis noll, men jag försöker läsa, jag ser ingenting obegripligt, vilket inte förklarar mycket överflödigt. Och jag kan säga att jag inte är en dum idiot, jag kan reparera nästan all elektronik, det vill säga jag är vänner med mitt huvud, men jag förstår inte det för de skriver de som vet, men de glömde nyanserna som de själva drog in i det.