Arduino-programmering i c. Grunnleggende om programmering i Arduino IDE. Driverinstallasjon for Arduino

Denne artikkelen vil hjelpe deg med å komme i gang med Arduino og inkluderer en beskrivelse av de forskjellige typene Arduino, hvordan du laster ned Arduino-programvareutviklingsmiljøet, og beskriver de forskjellige brettene og tilbehøret som er tilgjengelig for Arduinoen som du trenger for å utvikle Arduino-prosjektene dine.

Arduino er en åpen kildekode enkeltkortkontroller som kan brukes i mange forskjellige applikasjoner. Dette er muligens det enkleste og billigste mikrokontrolleralternativet for hobbyister, studenter og fagfolk til å utvikle mikrokontrollerbaserte prosjekter. Arduino-kort bruker enten en Atmel AVR-mikrokontroller eller en Atmel ARM-mikrokontroller, og noen versjoner har et USB-grensesnitt. De har også seks eller flere analoge inngangspinner og fjorten eller flere digitale input/output (I/O) pinner som brukes til å koble sensorer, stasjoner og andre perifere kretser til mikrokontrolleren. Prisen på Arduino-brett, avhengig av funksjonssettet, varierer fra seks til førti dollar.

Arduino-bretttyper

Det finnes mange forskjellige typer Arduino-brett, som vist i listen nedenfor, hver med sine egne funksjoner. De er forskjellige i prosesseringshastighet, minne, I/O-porter og tilkobling, men hovedkomponenten i funksjonaliteten deres forblir uendret.

  • Arduino robot
  • Arduino Ethernet

Variasjonen av Arduino-brett og deres tekniske beskrivelser finner du i "" underdelen av "Kjøp"-delen av denne siden.

Programvare (IDE)

Programvaren som brukes for Arduino-programmering er Arduino IDE. IDE er en Java-applikasjon som kjører på mange forskjellige plattformer, inkludert PC, Mac og Linux-systemer. Den er designet for nybegynnere som ikke er kjent med programmering. Den inkluderer en editor, kompilator og laster. Også inkludert i IDE er kodebiblioteker for bruk av periferiutstyr som serielle porter og ulike typer skjermer. Arduino-programmer kalles "skisser" og er skrevet på et språk som ligner veldig på C eller C ++.

De fleste Arduino-kort kobles til en datamaskin ved hjelp av en USB-kabel. Denne tilkoblingen lar deg laste opp skisser til Arduino-brettet ditt og gir også strøm til brettet.

USB-kabel for Arduino

Programmering

Arduino-programmering er enkelt: Først bruker du IDEs koderedigering for å skrive programmet, så kompilerer og laster du det ned med ett klikk.

Arduino-programvaren inkluderer to hovedfunksjoner:

  • oppsett ()
  • Løkke ()

Du kan bruke funksjonen oppsett () for å initialisere brettinnstillingene. Denne funksjonen utføres kun én gang når brettet er slått på.

Løkke-funksjonen () utføres etter at funksjonen for oppsett () er fullført, og i motsetning til funksjonen for oppsett () kjører den kontinuerlig.

Programfunksjoner

Nedenfor er en liste over de mest brukte funksjonene i Arduino-programmering:

  • pinMode - setter pinnen til å gå inn eller ut av modus;
  • analogRead - leser den analoge spenningen på den analoge inngangspinnen;
  • analogWrite - Skriver analog spenning til analog utgangspinne;
  • digitalRead - leser den digitale inngangspin-verdien;
  • digitalWrite - Setter den digitale utgangspin-verdien til høy eller lav;
  • Serial.print - Skriver data til serieporten som lesbar ASCII-tekst.

Arduino biblioteker

Arduino-biblioteker er samlinger av funksjoner som lar deg kontrollere enheter. Noen av de mest brukte bibliotekene er:

  • EEPROM - lesing og skriving til "permanent" lagring;
  • Ethernet - for tilkobling til Internett ved hjelp av Arduino Ethernet Shield-kortet;
  • Firmata - for å kommunisere med applikasjoner på en datamaskin ved hjelp av en standard seriell protokoll;
  • GSM - for å koble til GSM / GRPS-nettverket ved hjelp av GSM-kortet;
  • LiquidCrystal - for å kontrollere flytende krystallskjermer (LCD);
  • SD - for lesing og skriving av SD-kort;
  • Servo - for å kontrollere servodrev;
  • SPI - for kommunikasjon med enheter som bruker SPI-bussen;
  • SoftwareSerial - for seriell kommunikasjon gjennom alle digitale pinner;
  • Stepper - for å kontrollere steppermotorer;
  • TFT - for å tegne tekst, bilder og former på Arduino TFT-skjermer;
  • WiFi - for å koble til internett ved hjelp av Arduino WiFi-skjoldet;
  • Wire er et to-leder grensesnitt (TWI / I2C) for overføring og mottak av data gjennom et nettverk av enheter eller sensorer.

Arduino oppsettstrinn


Merk: Du må kanskje installere drivere hvis systemet ditt ikke oppdager Arduino.

Hallo! Jeg er Aleksandr Sergeevich Alikin, lærer for tilleggsutdanning, jeg leder "Robotics" og "Radiotechnics" sirkler ved Central Children's School of Music i Labinsk. Jeg vil gjerne fortelle deg litt om en forenklet måte å programmere Arduino på ved å bruke "ArduBloсk"-programmet.

Jeg introduserte dette programmet i den pedagogiske prosessen og er fornøyd med resultatet; det er etterspurt blant barn, spesielt når du skriver de enkleste programmene eller for å lage en slags innledende fase av komplekse programmer. ArduBloсk er et grafisk programmeringsmiljø, det vil si at alle handlinger utføres med tegnede bilder med signerte handlinger på russisk, noe som i stor grad forenkler studiet av Arduino-plattformen. Barn fra 2. klasse kan enkelt lære å jobbe med Arduino takket være dette programmet.

Ja, noen vil kanskje si at Scratch fortsatt eksisterer, og det er også et veldig enkelt grafisk miljø for Arduino-programmering. Men Scratch flasher ikke Arduino, den kontrollerer den bare via en USB-kabel. Arduino er datamaskinavhengig og kan ikke stå alene. Når du lager dine egne prosjekter, er autonomi for Arduino det viktigste, spesielt når du lager robotenheter.

Selv de velkjente LEGO-robotene, som NXT eller EV3, er ikke lenger så interessante for elevene våre med ArduBloсk-programmet som vises i Arduino-programmering. Arduino er også mye billigere enn noen LEGO-konstruktør, og mange komponenter kan ganske enkelt tas fra gammelt elektronisk husholdningsutstyr. ArduBloсk-programmet vil hjelpe i arbeid, ikke bare nybegynnere, men også aktive brukere av Arduino-plattformen.

Så hva er ArduBlock? Det er som sagt et grafisk programmeringsmiljø. Nesten fullstendig oversatt til russisk. Men i ArduBloсk er høydepunktet ikke bare dette, men også det faktum at ArduBloсk-programmet vi har skrevet konverterer til Arduino IDE-koden. Dette programmet er innebygd i Arduino IDE-programmeringsmiljøet, det vil si at det er en plugin.

Nedenfor er et eksempel på en blinkende LED og et konvertert program i Arduino IDE. Alt arbeid med programmet er veldig enkelt og enhver student kan forstå det.

Som et resultat av å jobbe med programmet kan du ikke bare programmere Arduino, men også studere kommandoene som vi ikke forstår i tekstformatet til Arduino IDE, men hvis du er "for lat" til å skrive standardkommandoer, kan du bør raskt skissere et enkelt program i ArduBlok med musen, og feilsøke det i Arduino IDE ...

For å installere ArduBlok, må du først laste ned og installere Arduino IDE fra den offisielle Arduino-nettsiden og finne ut innstillingene når du arbeider med Arduino UNO-kortet. Hvordan du gjør dette er beskrevet på samme side eller på Amperka, eller se den på YouTube. Vel, når vi fant ut alt dette, må du laste ned ArduBlok fra den offisielle siden, her. Jeg anbefaler ikke å laste ned de nyeste versjonene, for nybegynnere er de veldig vanskelige, men versjonen fra 2013-07-12 er selve tingen, denne filen er den mest populære der.

Gi deretter nytt navn til den nedlastede filen til ardublock-all og i "dokumenter"-mappen. Vi oppretter følgende mapper: Arduino> verktøy> ArduBlockTool> verktøy og i den siste kaster vi den nedlastede og omdøpte filen. ArduBlok fungerer på alle operativsystemer, til og med Linux, jeg testet det personlig på XP, Win7, Win8, alle eksempler for Win7. Installasjonen av programmet er lik for alle systemer.

Vel, hvis det er enklere, forberedte jeg et arkiv på Mail-disken 7z, og pakker ut som du vil finne 2 mapper. I den ene fungerer Arduino IDE allerede, og i den andre mappen må innholdet sendes til dokumentmappen.

For å jobbe med ArduBlok, må du kjøre Arduino IDE. Så går vi til Verktøy-fanen og der finner vi ArduBlok-elementet, klikker på det - og her er det målet vårt.

La oss nå ta en titt på programgrensesnittet. Som du allerede har forstått, er det ingen innstillinger i den, men det er mange ikoner for programmering, og hver av dem har en kommando i Arduino IDE-tekstformatet. Det er enda flere ikoner i de nye versjonene, så det er vanskelig å forstå den nyeste versjonen av ArduBlok og noen av ikonene er ikke oversatt til russisk.

I "Kontroll"-delen finner vi en rekke sykluser.

I "Porter"-delen kan vi administrere verdiene til portene, så vel som lydgiveren, servo- eller ultralydsensoren som er koblet til dem.

I seksjonen "Tall / Konstanter" kan vi velge digitale verdier eller lage en variabel med deg, men det du neppe vil bruke nedenfor.

I seksjonen "Operatorer" finner vi med deg alle nødvendige sammenlignings- og beregningsoperatører.

Verktøy-delen bruker hovedsakelig ikoner over tid.

TinkerKit Bloks er seksjonen for kjøpte TinkerKit-sensorer. Vi har selvfølgelig ikke et slikt sett, men dette betyr ikke at ikoner ikke vil fungere for andre sett, tvert imot - det er veldig praktisk for gutta å bruke ikoner som å slå på en LED eller en knapp. Disse tegnene brukes i nesten alle programmer. Men de har en særegenhet - når de er valgt, er det feil ikoner som angir porter, så de må fjernes og ikonet fra "tall / konstanter"-delen, den øverste i listen, må erstattes.

"DF Robot" - denne delen brukes hvis det er sensorer spesifisert i den, de blir noen ganger møtt. Og dagens eksempel er ikke et unntak, vi har "Justerbar IR Switch" og "Line Sensor". "Linjesensoren" er forskjellig fra den på bildet, siden den er fra Amperka. Handlingene deres er identiske, men sensoren fra Amperka er mye bedre, siden den har en følsomhetsregulator.

"Seeedstudio Grove" - ​​Jeg har aldri brukt sensorene i denne delen, selv om det bare er joysticks. Denne delen er utvidet i nye versjoner.

Og den siste delen er Linker Kit. Sensorene som ble presentert i den kom ikke over meg.

Jeg vil gjerne vise et eksempel på et program på en robot som beveger seg langs kjørefeltet. Roboten er veldig enkel, både i montering og i innkjøp, men først. La oss starte med å kjøpe og montere den.

Her er selve settet med deler, alt ble kjøpt på nettsiden til Amperka.

  1. AMP-B001 Motor Shield (2 kanaler, 2 A) 1 890 rubler
  2. AMP-B017 Troyka Shield 1 690 rub
  3. AMP-X053 Batterirom 3 × 2 AA 1 60 rubler
  4. AMP-B018 Linjesensor digital 2 580 rubler
  5. ROB0049 Tohjuls plattform miniQ 1 1890 rub
  6. SEN0019 Infrarød hindringssensor 1 390 rubler
  7. FIT0032 Feste for infrarød hindringssensor 1 90 rubler
  8. A000066 Arduino Uno 1 1150 rub

Først, la oss montere hjulplattformen og lodde ledningene til motorene.

Deretter skal vi installere stativene for å feste Arduino UNO-kortet, som ble tatt fra det gamle hovedkortet eller andre lignende fester.

Deretter fester vi Arduino UNO-kortet til disse stativene, men vi kan ikke skru en bolt - kontaktene forstyrrer. Du kan selvfølgelig løse dem opp, men dette er etter ditt skjønn.

Deretter fester vi den infrarøde hindringssensoren til dens spesielle feste. Vær oppmerksom på at følsomhetskontrollen er plassert på toppen, dette er for enkel justering.

Nå installerer vi digitale linjesensorer, her skal vi se etter et par bolter og 4 muttere til dem.Vi monterer to muttere mellom selve plattformen og linjesensoren, og fikser resten av sensorene.

Installer deretter motorskjoldet, eller på en annen måte kan du ringe motorføreren. I vårt tilfelle, vær oppmerksom på jumperen. Vi vil ikke bruke en separat strømforsyning for motorene, så den er installert i denne posisjonen. Den nedre delen er forseglet med elektrisk tape slik at det ikke er tilfeldige kortslutninger fra USB-kontakten til Arduino UNO, for sikkerhets skyld.

Plasser Troyka-skjoldet på toppen av motorskjoldet. Det er nødvendig for bekvemmeligheten av å koble til sensorene. Alle sensorene vi bruker er digitale, så linjesensorene kobles til port 8 og 9, som de også kalles pins, og den infrarøde hindersensoren kobles til port 12. Vær oppmerksom på at portene 4, 5, 6, 7 ikke kan brukes ettersom de brukes av Motor Shield til å kontrollere motorer. Jeg spesialmalte til og med disse portene med en rød tusj slik at elevene kunne finne ut av det.

Hvis du allerede har lagt merke til det, har jeg lagt til en svart bøssing, for sikkerhets skyld, slik at batterirommet vi installerte ikke flyr ut. Og til slutt fikser vi hele strukturen med et vanlig strikk.

Det finnes 2 typer batteriromkoblinger. Første ledningsforbindelse til Troyka Shield. Det er også mulig å lodde strømpluggen og koble den til selve Arduino UNO-kortet.

Nå er roboten vår klar. Før du begynner å programmere, må du lære deg hvordan alt fungerer, nemlig:
- Motorer:
Port 4 og 5 brukes til å kontrollere en motor, og 6 og 7 brukes til den andre;
Vi justerer rotasjonshastigheten til motorene med PWM på portene 5 og 6;
Forover eller bakover ved å signalisere port 4 og 7.
- Sensorer:
Alle av oss er digitale, derfor gir de logiske signaler i form av 1 eller 0;
Og for å justere dem, er det gitt spesielle regulatorer i dem, og ved hjelp av en passende skrutrekker kan de kalibreres.

Detaljer finner du på Amperka. Hvorfor er den her? Fordi det er mye informasjon om å jobbe med Arduino.

Vel, vi så kanskje på alt overfladisk, studerte og satte selvfølgelig sammen roboten. Nå skal det programmeres, her er det - det etterlengtede programmet!

Og programmet konvertert til Arduino IDE:

Ugyldig oppsett () (pinMode (8, INPUT); pinMode (12, INPUT); pinMode (9, INPUT); pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (5, OUTPUT); pinMode (6) , OUTPUT);) void loop () (if (digitalRead (12)) (if (digitalRead (8)) (if (digitalRead (9)) (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite ( 6, 255); digitalWrite (7, HIGH);) else (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite (6, 50); digitalWrite (7, LOW);)) annet (hvis (digitalRead) (9)) (digitalWrite (4, LOW); analogWrite (5, 50); analogWrite (6, 255); digitalWrite (7, HIGH);) annet (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite (6, 255); digitalWrite (7, HIGH);))) annet (digitalWrite (4, HIGH); analogWrite (5, 0); analogWrite (6, 0); digitalWrite (7, HIGH);))

Avslutningsvis vil jeg si at dette programmet bare er en gave for utdanning, selv for selvstudier, det vil hjelpe deg med å lære kommandoene til Arduino IDE. Det viktigste høydepunktet er at det er mer enn 50 installasjonsikoner, det begynner å "glitte". Ja, dette er faktisk et høydepunkt, siden konstant programmering bare på ArduBlok ikke vil lære deg hvordan du programmerer i Arduino IDE. Den såkalte "glitchen" gjør det mulig å tenke og prøve å huske kommandoer for nøyaktig feilsøking av programmer.

Ønsker deg suksess.

Arduino er veldig populær blant alle byggeentusiaster. Det er nødvendig å bli kjent med dem som aldri har hørt om ham.

Hva er Arduino?

Hvordan kan du oppsummere Arduino? De beste ordene vil være: Arduino er et verktøy som du kan lage ulike elektroniske enheter med. I hovedsak er det en ekte universell maskinvareplattform. Den kan brukes både til å bygge enkle kretsløp og for å implementere ganske komplekse prosjekter.

Konstruktøren er basert på maskinvaren, som er et input-output-kort. For programmering av brettet brukes språk som er basert på C/C++. De ble navngitt henholdsvis Processing / Wiring. Fra gruppe C arvet de den ytterste enkelhet, takket være at de mestres veldig raskt av enhver person, og å bruke kunnskap i praksis er ikke et ganske betydelig problem. For at du skal forstå brukervennligheten, sies det ofte at Arduino er for nybegynnere med veivisere og konstruktører. Selv barn kan håndtere Arduino-brett.

Hva kan du samle på den?

Bruken av Arduino er ganske mangfoldig, den kan brukes både for de enkleste eksemplene, som vil bli anbefalt på slutten av artikkelen, og for ganske komplekse mekanismer, inkludert manipulatorer, roboter eller produksjonsmaskiner. Noen håndverkere klarer å lage nettbrett, telefoner, hjemmeovervåking og sikkerhetssystemer, smarthussystemer eller bare datamaskiner på grunnlag av slike systemer. Arduino-prosjekter for nybegynnere, som selv noen uten erfaring kan komme i gang med, er på slutten av artikkelen. De kan til og med brukes til å lage primitive virtuelle virkelighetssystemer. Alt takket være innholdet i den allsidige maskinvaren og mulighetene som Arduino-programmering gir.

Hvor kan jeg få tak i komponentene?

Komponenter laget i Italia regnes som originale. Men prisen på slike sett er heller ikke lav. Derfor lager en rekke selskaper eller til og med enkeltpersoner Arduino-kompatible enheter og komponenter med håndverk, som de spøkefullt kaller produksjonskloner. Når man kjøper slike kloner kan man ikke si med sikkerhet at de vil fungere, men ønsket om å spare penger tar sitt toll.

Komponenter kan kjøpes enten som en del av sett, eller separat. Det finnes til og med ferdige sett for å sette sammen biler, helikoptre med forskjellige typer kontroller eller skip. Settet, som vist ovenfor, laget i Kina, vil koste $ 49.

Mer om maskinvare

Arduino-kortet er en enkel AVR-mikrokontroller som har blitt flashet med en bootloader og har minimum nødvendig USB-UART-port. Det er også viktige komponenter, men innenfor rammen av artikkelen vil det være bedre å kun fokusere på disse to komponentene.

Først om mikrokontrolleren, en mekanisme bygget på en krets, der det utviklede programmet er plassert. Programmet kan påvirkes ved å trykke på knapper, motta signaler fra komponentene i skapelsen (motstander, transistorer, sensorer, etc.), etc. Dessuten kan sensorene være svært forskjellige i deres formål: belysning, akselerasjon, temperatur, avstand, trykk , hindringer etc. Enkle deler kan brukes som displayenheter, fra LED og summer til komplekse enheter som grafiske displayer. Motorer, ventiler, releer, servoer, elektromagneter og mange andre er vurdert, som er veldig, veldig lange å liste. Med noe fra disse listene jobber MK direkte, ved hjelp av tilkoblingsledninger. Noen mekanismer krever adapterenheter. Men når du først begynner å designe, vil det være vanskelig for deg å komme av. La oss nå snakke om Arduino-programmering.

Lær mer om styreprogrammeringsprosessen

Et program som allerede er klart til å fungere på en mikrokontroller kalles firmware. Det kan være enten ett prosjekt eller Arduino-prosjekter, så det ville være ønskelig å lagre hver fastvare i en egen mappe for å fremskynde prosessen med å finne de nødvendige filene. Den er sydd på MK-krystallen ved hjelp av spesialiserte enheter: programmerere. Og her har "Arduino" én fordel - den trenger ikke en programmerer. Alt er gjort for å gjøre programmering av Arduino enkelt for nybegynnere. Den skrevne koden kan lastes inn i MK ved hjelp av en USB-kabel. Denne fordelen oppnås ikke av noen allerede innebygde programmerere, men av en spesiell firmware - en bootloader. En bootloader er et spesialprogram som starter umiddelbart etter tilkobling og lytter til om det er noen kommandoer, om det skal flashes krystallen, om det er Arduino-prosjekter eller ikke. Flere svært attraktive fordeler dukker opp ved å bruke en bootloader:

  1. Bruker kun én kommunikasjonskanal, som ikke krever ekstra tidskostnader. Arduino-prosjekter krever for eksempel ikke at du kobler til mange forskjellige ledninger, og det har oppstått forvirring når du bruker dem. Én USB-kabel er nok for vellykket drift.
  2. Beskyttelse mot skjeve hender. Det er ganske enkelt å bringe mikrokontrolleren til tilstanden til en murstein ved hjelp av direkte fastvare, du trenger ikke anstrenge deg for mye. Når du arbeider med en bootloader, kan du ikke komme til potensielt farlige innstillinger (ved å bruke utviklingsprogrammet, selvfølgelig, men du kan bryte alt). Derfor er Arduino for nybegynnere designet ikke bare fra synspunktet at det er forståelig og praktisk, det vil også tillate deg å unngå uønskede utgifter forbundet med uerfarenheten til personen som jobber med dem.

Prosjekter for å komme i gang

Når du har skaffet deg et sett, en loddebolt, kolofonium og loddemetall, bør du ikke umiddelbart forme veldig komplekse strukturer. Selvfølgelig kan du blinde dem, men sjansen for suksess i Arduino for nybegynnere er ganske lav for komplekse prosjekter. For å trene og "stoppe" hånden din, kan du prøve å implementere noen få enklere ideer som vil hjelpe deg å forstå samspillet og arbeidet til "Arduino". Som slike første trinn i arbeidet med Arduino for nybegynnere, er det tilrådelig å vurdere:

  1. Lag som vil fungere takket være "Arduino".
  2. Koble en egen knapp til "Arduino". I dette tilfellet kan du gjøre det slik at knappen kan regulere lyset på LED-en fra punkt #1.
  3. Potensiometer tilkobling.
  4. Servokontroll.
  5. Koble til og arbeide med en trefarget LED.
  6. Koble til et piezoelektrisk element.
  7. Fotoresistor tilkobling.
  8. Koble til en bevegelsessensor og signalerer om arbeidet.
  9. Koble til en fuktighets- eller temperatursensor.

Prosjekter for fremtiden

Du er neppe interessert i "Arduino" for å koble til individuelle lysdioder. Mest sannsynlig er du tiltrukket av muligheten til å lage din egen bil, eller en flygende platespiller. Slike prosjekter er komplekse å implementere, de vil ta mye tid og utholdenhet, men etter å ha fullført dem vil du få det du ønsker: verdifull erfaring med å bygge med Arduino for nybegynnere.

Hallo! Jeg er Aleksandr Sergeevich Alikin, lærer for tilleggsutdanning, jeg leder "Robotics" og "Radiotechnics" sirkler ved Central Children's School of Music i Labinsk. Jeg vil gjerne fortelle deg litt om en forenklet måte å programmere Arduino på ved å bruke "ArduBloсk"-programmet.

Jeg introduserte dette programmet i den pedagogiske prosessen og er fornøyd med resultatet; det er etterspurt blant barn, spesielt når du skriver de enkleste programmene eller for å lage en slags innledende fase av komplekse programmer. ArduBloсk er et grafisk programmeringsmiljø, det vil si at alle handlinger utføres med tegnede bilder med signerte handlinger på russisk, noe som i stor grad forenkler studiet av Arduino-plattformen. Barn fra 2. klasse kan enkelt lære å jobbe med Arduino takket være dette programmet.

Ja, noen vil kanskje si at Scratch fortsatt eksisterer, og det er også et veldig enkelt grafisk miljø for Arduino-programmering. Men Scratch flasher ikke Arduino, den kontrollerer den bare via en USB-kabel. Arduino er datamaskinavhengig og kan ikke stå alene. Når du lager dine egne prosjekter, er autonomi for Arduino det viktigste, spesielt når du lager robotenheter.

Selv de velkjente LEGO-robotene, som NXT eller EV3, er ikke lenger så interessante for elevene våre med ArduBloсk-programmet som vises i Arduino-programmering. Arduino er også mye billigere enn noen LEGO-konstruktør, og mange komponenter kan ganske enkelt tas fra gammelt elektronisk husholdningsutstyr. ArduBloсk-programmet vil hjelpe i arbeid, ikke bare nybegynnere, men også aktive brukere av Arduino-plattformen.

Så hva er ArduBlock? Det er som sagt et grafisk programmeringsmiljø. Nesten fullstendig oversatt til russisk. Men i ArduBloсk er høydepunktet ikke bare dette, men også det faktum at ArduBloсk-programmet vi har skrevet konverterer til Arduino IDE-koden. Dette programmet er innebygd i Arduino IDE-programmeringsmiljøet, det vil si at det er en plugin.

Nedenfor er et eksempel på en blinkende LED og et konvertert program i Arduino IDE. Alt arbeid med programmet er veldig enkelt og enhver student kan forstå det.

Som et resultat av å jobbe med programmet kan du ikke bare programmere Arduino, men også studere kommandoene som vi ikke forstår i tekstformatet til Arduino IDE, men hvis du er "for lat" til å skrive standardkommandoer, kan du bør raskt skissere et enkelt program i ArduBlok med musen, og feilsøke det i Arduino IDE ...

For å installere ArduBlok, må du først laste ned og installere Arduino IDE fra den offisielle Arduino-nettsiden og finne ut innstillingene når du arbeider med Arduino UNO-kortet. Hvordan du gjør dette er beskrevet på samme side eller på Amperka, eller se den på YouTube. Vel, når vi fant ut alt dette, må du laste ned ArduBlok fra den offisielle siden, her. Jeg anbefaler ikke å laste ned de nyeste versjonene, for nybegynnere er de veldig vanskelige, men versjonen fra 2013-07-12 er selve tingen, denne filen er den mest populære der.

Gi deretter nytt navn til den nedlastede filen til ardublock-all og i "dokumenter"-mappen. Vi oppretter følgende mapper: Arduino> verktøy> ArduBlockTool> verktøy og i den siste kaster vi den nedlastede og omdøpte filen. ArduBlok fungerer på alle operativsystemer, til og med Linux, jeg testet det personlig på XP, Win7, Win8, alle eksempler for Win7. Installasjonen av programmet er lik for alle systemer.

Vel, hvis det er enklere, forberedte jeg et arkiv på Mail-disken 7z, og pakker ut som du vil finne 2 mapper. I den ene fungerer Arduino IDE allerede, og i den andre mappen må innholdet sendes til dokumentmappen.

For å jobbe med ArduBlok, må du kjøre Arduino IDE. Så går vi til Verktøy-fanen og der finner vi ArduBlok-elementet, klikker på det - og her er det målet vårt.

La oss nå ta en titt på programgrensesnittet. Som du allerede har forstått, er det ingen innstillinger i den, men det er mange ikoner for programmering, og hver av dem har en kommando i Arduino IDE-tekstformatet. Det er enda flere ikoner i de nye versjonene, så det er vanskelig å forstå den nyeste versjonen av ArduBlok og noen av ikonene er ikke oversatt til russisk.

I "Kontroll"-delen finner vi en rekke sykluser.

I "Porter"-delen kan vi administrere verdiene til portene, så vel som lydgiveren, servo- eller ultralydsensoren som er koblet til dem.

I seksjonen "Tall / Konstanter" kan vi velge digitale verdier eller lage en variabel med deg, men det du neppe vil bruke nedenfor.

I seksjonen "Operatorer" finner vi med deg alle nødvendige sammenlignings- og beregningsoperatører.

Verktøy-delen bruker hovedsakelig ikoner over tid.

TinkerKit Bloks er seksjonen for kjøpte TinkerKit-sensorer. Vi har selvfølgelig ikke et slikt sett, men dette betyr ikke at ikoner ikke vil fungere for andre sett, tvert imot - det er veldig praktisk for gutta å bruke ikoner som å slå på en LED eller en knapp. Disse tegnene brukes i nesten alle programmer. Men de har en særegenhet - når de er valgt, er det feil ikoner som angir porter, så de må fjernes og ikonet fra "tall / konstanter"-delen, den øverste i listen, må erstattes.

"DF Robot" - denne delen brukes hvis det er sensorer spesifisert i den, de blir noen ganger møtt. Og dagens eksempel er ikke et unntak, vi har "Justerbar IR Switch" og "Line Sensor". "Linjesensoren" er forskjellig fra den på bildet, siden den er fra Amperka. Handlingene deres er identiske, men sensoren fra Amperka er mye bedre, siden den har en følsomhetsregulator.

"Seeedstudio Grove" - ​​Jeg har aldri brukt sensorene i denne delen, selv om det bare er joysticks. Denne delen er utvidet i nye versjoner.

Og den siste delen er Linker Kit. Sensorene som ble presentert i den kom ikke over meg.

Jeg vil gjerne vise et eksempel på et program på en robot som beveger seg langs kjørefeltet. Roboten er veldig enkel, både i montering og i innkjøp, men først. La oss starte med å kjøpe og montere den.

Her er selve settet med deler, alt ble kjøpt på nettsiden til Amperka.

  1. AMP-B001 Motor Shield (2 kanaler, 2 A) 1 890 rubler
  2. AMP-B017 Troyka Shield 1 690 rub
  3. AMP-X053 Batterirom 3 × 2 AA 1 60 rubler
  4. AMP-B018 Linjesensor digital 2 580 rubler
  5. ROB0049 Tohjuls plattform miniQ 1 1890 rub
  6. SEN0019 Infrarød hindringssensor 1 390 rubler
  7. FIT0032 Feste for infrarød hindringssensor 1 90 rubler
  8. A000066 Arduino Uno 1 1150 rub

Først, la oss montere hjulplattformen og lodde ledningene til motorene.

Deretter skal vi installere stativene for å feste Arduino UNO-kortet, som ble tatt fra det gamle hovedkortet eller andre lignende fester.

Deretter fester vi Arduino UNO-kortet til disse stativene, men vi kan ikke skru en bolt - kontaktene forstyrrer. Du kan selvfølgelig løse dem opp, men dette er etter ditt skjønn.

Deretter fester vi den infrarøde hindringssensoren til dens spesielle feste. Vær oppmerksom på at følsomhetskontrollen er plassert på toppen, dette er for enkel justering.

Nå installerer vi digitale linjesensorer, her skal vi se etter et par bolter og 4 muttere til dem.Vi monterer to muttere mellom selve plattformen og linjesensoren, og fikser resten av sensorene.

Installer deretter motorskjoldet, eller på en annen måte kan du ringe motorføreren. I vårt tilfelle, vær oppmerksom på jumperen. Vi vil ikke bruke en separat strømforsyning for motorene, så den er installert i denne posisjonen. Den nedre delen er forseglet med elektrisk tape slik at det ikke er tilfeldige kortslutninger fra USB-kontakten til Arduino UNO, for sikkerhets skyld.

Plasser Troyka-skjoldet på toppen av motorskjoldet. Det er nødvendig for bekvemmeligheten av å koble til sensorene. Alle sensorene vi bruker er digitale, så linjesensorene kobles til port 8 og 9, som de også kalles pins, og den infrarøde hindersensoren kobles til port 12. Vær oppmerksom på at portene 4, 5, 6, 7 ikke kan brukes ettersom de brukes av Motor Shield til å kontrollere motorer. Jeg spesialmalte til og med disse portene med en rød tusj slik at elevene kunne finne ut av det.

Hvis du allerede har lagt merke til det, har jeg lagt til en svart bøssing, for sikkerhets skyld, slik at batterirommet vi installerte ikke flyr ut. Og til slutt fikser vi hele strukturen med et vanlig strikk.

Det finnes 2 typer batteriromkoblinger. Første ledningsforbindelse til Troyka Shield. Det er også mulig å lodde strømpluggen og koble den til selve Arduino UNO-kortet.

Nå er roboten vår klar. Før du begynner å programmere, må du lære deg hvordan alt fungerer, nemlig:
- Motorer:
Port 4 og 5 brukes til å kontrollere en motor, og 6 og 7 brukes til den andre;
Vi justerer rotasjonshastigheten til motorene med PWM på portene 5 og 6;
Forover eller bakover ved å signalisere port 4 og 7.
- Sensorer:
Alle av oss er digitale, derfor gir de logiske signaler i form av 1 eller 0;
Og for å justere dem, er det gitt spesielle regulatorer i dem, og ved hjelp av en passende skrutrekker kan de kalibreres.

Detaljer finner du på Amperka. Hvorfor er den her? Fordi det er mye informasjon om å jobbe med Arduino.

Vel, vi så kanskje på alt overfladisk, studerte og satte selvfølgelig sammen roboten. Nå skal det programmeres, her er det - det etterlengtede programmet!

Og programmet konvertert til Arduino IDE:

Ugyldig oppsett () (pinMode (8, INPUT); pinMode (12, INPUT); pinMode (9, INPUT); pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (5, OUTPUT); pinMode (6) , OUTPUT);) void loop () (if (digitalRead (12)) (if (digitalRead (8)) (if (digitalRead (9)) (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite ( 6, 255); digitalWrite (7, HIGH);) else (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite (6, 50); digitalWrite (7, LOW);)) annet (hvis (digitalRead) (9)) (digitalWrite (4, LOW); analogWrite (5, 50); analogWrite (6, 255); digitalWrite (7, HIGH);) annet (digitalWrite (4, HIGH); analogWrite (5, 255); analogWrite (6, 255); digitalWrite (7, HIGH);))) annet (digitalWrite (4, HIGH); analogWrite (5, 0); analogWrite (6, 0); digitalWrite (7, HIGH);))

Avslutningsvis vil jeg si at dette programmet bare er en gave for utdanning, selv for selvstudier, det vil hjelpe deg med å lære kommandoene til Arduino IDE. Det viktigste høydepunktet er at det er mer enn 50 installasjonsikoner, det begynner å "glitte". Ja, dette er faktisk et høydepunkt, siden konstant programmering bare på ArduBlok ikke vil lære deg hvordan du programmerer i Arduino IDE. Den såkalte "glitchen" gjør det mulig å tenke og prøve å huske kommandoer for nøyaktig feilsøking av programmer.

Ønsker deg suksess.

Så du har en prosessor. Som du sikkert forstår, kan prosessoren på en eller annen måte programmeres til å gjøre det du vil at den skal gjøre. For at nyttig arbeid skal gjøres, er det nødvendig (a) å skrive et nyttig program og (b) gi det til prosessoren for utførelse.

Generelt spiller det ingen rolle hva slags prosessor du har: den nyeste Intel Pentium i den bærbare datamaskinen eller en mikrokontroller på Arduino-kortet. Prinsippene for å skrive et program, dvs. programmering er de samme i begge tilfeller. Den eneste forskjellen er hastigheten og mengden av muligheter for å jobbe med andre enheter.

Hva er et program og hvor du skal skrive det

Prosessoren, til tross for all kompleksiteten i produksjonen, er i hovedsak en ganske enkel og grei ting. Han vet ikke hvordan han skal tenke. Han kan bare blindt, byte for byte, utføre instruksjonene som ble gitt til ham. Her er et grovt eksempel på en sekvens med instruksjoner:

Byte instruksjonHva betyr det for prosessoren
00001001 betyr: ta neste byte og lagre den i celle #1
00000110 ... dette er bare den neste byten vi husker i celle #1: nummer 5
00011001 betyr: trekk en fra verdien i celle nr. 1 og la det oppdaterte resultatet stå der
00101001 betyr: sammenligne verdien i celle nummer 1 med null og hvis den er null - hopp over så mange byte som angitt i neste byte
00000100 ... hvis resultatet var null, ønsker vi å hoppe over 4 byte, til den nest siste instruksjonen
10000011
01000001 ... bokstaven "A" bare tilsvarer denne koden
00101000 betyr at vi ønsker å hoppe tilbake så mange byte som angitt i neste byte
00000110 ... vi hopper 6 byte tilbake til instruksjon #3
10000011 betyr at vi ønsker å vise tegnet hvis kode er skrevet i neste byte
00100001 ... skiltet "!" matcher bare denne koden

Som et resultat av utførelsen av en slik sekvens av instruksjoner, vil panikkfrasen "AAAA!" vises på skjermen.

Ganske mye kode for et så enkelt formål! Det er klart at hvis alle programmer ble skrevet slik, direkte, ville utviklingen av komplekse produkter ta århundrer.

Hvorfor trengs programmeringsspråk

For å forenkle oppgaven en million ganger, ble programmeringsspråk oppfunnet. Det er mange av dem, og selv av de som stadig blir hørt, kan du raskt huske et dusin eller to: Assembler, C, C ++, C #, Java, Python, Ruby, PHP, Scala, JavaScript.

Programmer på disse språkene er mye nærmere menneskets naturlige språk. Og derfor er de enklere, raskere og hyggeligere å skrive, og viktigst av alt, de er mye enklere. lese: til deg umiddelbart etter skriving, deg om et år eller din kollega.

Problemet er at slike språk ikke er forståelige for prosessoren, og før han gir ham dette programmet, trenger han det. kompilere: oversett fra naturlig språk til de samme instruksjonene i form av nuller og enere. Dette gjøres av programmer kalt kompilatorer... Hvert språk, med mindre det forblir på fantasinivået, har sin egen kompilator. For populære språk er det vanligvis flere å velge mellom, fra forskjellige produsenter og for forskjellige plattformer. De fleste av dem er fritt tilgjengelig på Internett.

Så det er programmer på et språk som er ganske forståelig for mennesker: de kalles også "kildekode", ganske enkelt "kode" eller "kildekode". De er skrevet til enkle tekstfiler med noen et tekstredigeringsprogram, i det minste ved hjelp av notisblokk. Deretter blir de til sett med nuller og enere som er forståelige for prosessoren ved hjelp av kompilatoren: kompilatoren mottar kildekoden som input, og ved utgangen den lager binær kjørbar, den som prosessoren forstår.

Binære filer er ikke lesbare og er generelt ment kun for kjøring av prosessoren. De kan være av forskjellige typer, avhengig av hva de mottas for: .exe er programmer for Windows, .hex er programmer for kjøring av en mikrokontroller som Arduino, etc.

Hvorfor er det så mange programmeringsspråk og hva er forskjellen?

    Hvorfor? Fordi det er mange mennesker og selskaper på jorden, og mange trodde at de kunne gjøre det beste: mer praktisk, klarere, raskere, slankere.

    Hva er forskjellen: Ulike språk har ulik balanse mellom skrivehastighet, leseforståelighet og utførelseshastighet.

La oss se på det samme programmet som viser en sang om 99 flasker øl på skjermen på forskjellige programmeringsspråk.

For eksempel Perl-språket. Skrevet raskt; det er umulig å forstå hva programmereren mente; utføres sakte:

sub b ($ n = 99 - @_ - $ _ || Nei; "$ n flaske". "s" x !! - $ n. "av øl"); $ w = "på veggen"; dø kart (b. "$ w, \ n "... b. ", \ n Ta en ned, gi den rundt, \ n "... b (0). "$ w. \ n \ n "} 0 .. 98

Java språk. Det tar relativt lang tid; lett å lese; kjører ganske fort, men tar opp mye minne:

klasse flasker (offentlig statisk void hoved ( String args) ( String s = "s"; for (int øl = 99; øl> - 1;) ( System.out .print (øl + "flaske" + s + "av øl på veggen,"); System.out .println (øl + "flaske" + s + "av øl,"); if (øl == 0) ( System.out .print ( "Gå til butikken, kjøp litt mer,") ; System.out .println ( "99 flasker øl på veggen. \ N") ; System.exit (0); ) annet System.out .print ( "Ta ned en, gi den rundt,"); s = (- øl == 1)? "": "s"; System.out .println (øl + "flaske" + s + "av øl på veggen. \ n") ; } } }

Assembler språk. Det tar lang tid; vanskelig å lese; veldig fort:

kodesegment anta cs: kode, ds: kode org 100t start:; Hovedsløyfe mov cx, 99; flasker til å begynne med loopstart: ring printcx; skriv ut nummeret mov dx, offset line1 ; skriv ut resten av den første linjen mov ah, 9; MS-DOS utskriftsstrengrutine int 21t kall printcx; skriv ut nummeret mov dx, offset line2_3 ; resten av 2. og 3. linje mov ah, 9 int 21t dec cx; ta ett nedkall printcx; skriv ut nummeret mov dx, offset line4 ; skriv ut resten av den fjerde linjen mov ah, 9 int 21t cmp cx, 0; Tom for øl? jne loopstart; hvis ikke, fortsett innen 20 timer; avslutt til MS-DOS ; subrutine for å skrive ut CX-register i desimal printcx: mov di, offset numbufferend ; fyll bufferen fra slutten mov øks, cx ; legg tallet i AX slik at vi kan dele det printcxloop: mov dx, 0 ; høyordens tellerord - alltid 0 mov bx, 10 div bx ; del DX: AX med 10. AX = kvotient, DX = resten legg til dl, "0" ; konverter resten til et ASCII-tegn mov [ds: di], dl; legg den i utskriftsbufferen cmp ax, 0; Noen flere sifre å regne ut? je printcxend; hvis ikke, avslutt des di ; sett neste siffer før gjeldende jmp printcxloop; loop printcxend: mov dx, di ; skriv ut, fra det siste beregnede sifferet mov ah, 9 int 21t ret; Datalinje1 db "flasker med øl på veggen,", 13, 10, "$" line2_3 db "ølflasker", 13, 10, "Ta ned en, gi den rundt,", 13, 10, "$" line4 db "flasker med øl på veggen.", 13, 10, 13, 10, "$" numbuffer db 0, 0, 0, 0, 0 numbufferend db 0, "$" kode slutter slutt start

Hva er Arduino programmert på?

Hvis vi snakker om Arduino eller mikrokontrollere fra Atmel, på hvilket språk kan du skrive programmer for dem? Teoretisk svar: noen. Men i praksis er valget begrenset til Assembler, C og C++. Dette skyldes det faktum at sammenlignet med en stasjonær datamaskin har de svært begrensede ressurser. Kilobyte minne, ikke gigabyte. Megahertz på prosessoren, ikke gigahertz. Dette er en pris å betale for å være billig og energieffektiv.

Derfor trenger du et språk som kan kompilere og utføre effektivt. Det vil si å bli konvertert til de samme nullene og enere fra instruksjoner så optimalt som mulig, uten å bruke dyrebare instruksjoner og minne i det tomme rommet. Disse språkene er akkurat så effektive. Ved å bruke dem selv innenfor de trange grensene for mikrokontrollerens ressurser, kan du skrive funksjonsrike programmer som kjører raskt.

Assembler, som du har sett, kan ikke kalles den enkleste og mest elegante, og som et resultat er flaggskipspråket for Arduino C / C ++.

Mange kilder sier at Arduino er programmert i Arduino, Processing, Wiring. Dette er ikke helt korrekt påstand. Arduino er programmert i C/C++, og det de kaller disse ordene er bare et praktisk «body kit» som lar deg løse mange vanlige oppgaver uten å finne opp hjulet på nytt hver gang.

Hvorfor er C og C++ nevnt i samme setning? C ++ er en overbygning over C. Ethvert C-program er et gyldig C ++-program, men ikke omvendt. Du kan bruke begge deler. Oftere enn ikke vil du ikke engang tenke på hva du bruker når du løser det aktuelle problemet.

Mer til poenget: det første programmet

La oss skrive det første Arduino-programmet og få brettet til å kjøre. Du må lage en tekstfil med kildekoden, kompilere den og overføre den resulterende binære filen til mikrokontrolleren på brettet.

La oss gå i rekkefølge. La oss skrive kildekoden. Du kan skrive det i notisblokk eller et annet redigeringsprogram. Men for å gjøre arbeidet praktisk, finnes det såkalte utviklingsmiljøer (IDE: Integrated Development Environment). De gir et tekstredigeringsprogram med utheving og hint, en kompilator lansert med en knapp, og mange andre gleder i form av et enkelt verktøy. For Arduino kalles dette miljøet Arduino IDE. Den er fritt tilgjengelig for nedlasting på den offisielle nettsiden.

Installer miljøet og kjør det. I vinduet som vises, vil du se: det meste av plassen er gitt til tekstredigereren. Koden er skrevet inn i den. Koden i Arduino-verdenen kalles også skisse.

Så la oss skrive en skisse som ikke gjør noe. Det vil si det minste mulig korrekte C++-programmet som kaster bort tid.

void oppsett () () void loop () ()

Vi vil ikke fokusere på betydningen av den skrevne koden foreløpig. La oss kompilere det. For å gjøre dette, i Arduino IDE, er det en "Bekreft"-knapp på verktøylinjen. Klikk på den og i løpet av noen få sekunder vil den binære filen være klar. Dette vil bli annonsert med påskriften "Ferdig kompilering" under tekstredigeringsprogrammet.

Som et resultat fikk vi en binær fil med filtypen .hex, som kan kjøres av mikrokontrolleren.

Nå må du legge den inn i Arduino. Denne prosessen kalles opplasting, blinking eller opplasting. For å laste opp til Arduino IDE, er det en Last opp-knapp på verktøylinjen. Koble Arduino til datamaskinen din via en USB-kabel, klikk på "Last opp" og om noen få øyeblikk vil programmet lastes opp til Arduino. I dette tilfellet vil programmet som var der tidligere bli slettet.

Den vellykkede fastvaren vil bli annonsert av inskripsjonen "Done Uploading".

Hvis du støter på en feil mens du prøver å laste ned, sørg for at:

    I Verktøy → Brett-menyen velges porten som Arduino faktisk er koblet til. Du kan sette inn og koble fra USB-kabelen for å finne ut hvilken port som kommer og går: dette er Arduino.

    Du har installert de nødvendige driverne for Arduino. Dette er nødvendig for Windows, ikke nødvendig for Linux, og bare nødvendig for eldre brett før Arduino Duemilanove på MacOS.

Gratulerer! Du har gått hele veien fra et blankt ark til et fungerende program i Arduino. Selv om hun ikke gjør noe, er det allerede en suksess.