Arduino Unon (esim. lataaminen jne.) liittäminen Arduino IDE: hen (käyttäen Fedora-pakettia) toimii hyvin Fedora 21: n alla.
Mutta haluan mieluummin käyttää vim + make + vim-quickfix-mode jne.
Kuinka voin tehdä sen?
Mieluiten Fedora-arkistojen käytettävissä olevien työkalujen avulla.
Oletan, että IDE kutsuu ulkoisia komentorivi-apuohjelmia lataamista varten jne.
IDE: n sarjavalvojan vastaava on todennäköisesti yhdistämässä pääteemulaattoria (esim. screen
) – /dev/ttyACM0
, eikö?
Ehkä on hyvä esimerkkiprojekti, jota voidaan tarkastella makefailessa?
Vastaa
Ehdotan Googlingia Makefile-projekteille. Tein jonkin aikaa sitten Blink-ohjelmaa varten, katsomalla pohjimmiltaan IDE: n luomat ja kopioimalla että yleisemmällä tavalla.
# # Simple Arduino Makefile # # Author: Nick Gammon # Date: 18th March 2015 # where you installed the Arduino app ARDUINO_DIR = C:/Documents and Settings/Nick/Desktop/arduino-1.0.6/ # various programs CC = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-gcc" CPP = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-g++" AR = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-ar" OBJ_COPY = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-objcopy" MAIN_SKETCH = Blink.cpp # compile flags for g++ and gcc # may need to change these F_CPU = 16000000 MCU = atmega328p # compile flags GENERAL_FLAGS = -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=$(F_CPU)L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 CPP_FLAGS = $(GENERAL_FLAGS) -fno-exceptions CC_FLAGS = $(GENERAL_FLAGS) # location of include files INCLUDE_FILES = "-I$(ARDUINO_DIR)hardware/arduino/cores/arduino" "-I$(ARDUINO_DIR)hardware/arduino/variants/standard" # library sources LIBRARY_DIR = "$(ARDUINO_DIR)hardware/arduino/cores/arduino/" build: $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(MAIN_SKETCH) -o $(MAIN_SKETCH).o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/malloc.c -o malloc.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)avr-libc/realloc.c -o realloc.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WInterrupts.c -o WInterrupts.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring.c -o wiring.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_analog.c -o wiring_analog.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_digital.c -o wiring_digital.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_pulse.c -o wiring_pulse.c.o $(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)wiring_shift.c -o wiring_shift.c.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)CDC.cpp -o CDC.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)HID.cpp -o HID.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)IPAddress.cpp -o IPAddress.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)main.cpp -o main.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)new.cpp -o new.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Print.cpp -o Print.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Stream.cpp -o Stream.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)Tone.cpp -o Tone.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)USBCore.cpp -o USBCore.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WMath.cpp -o WMath.cpp.o $(CPP) $(CPP_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)WString.cpp -o WString.cpp.o rm core.a $(AR) rcs core.a malloc.c.o $(AR) rcs core.a realloc.c.o $(AR) rcs core.a WInterrupts.c.o $(AR) rcs core.a wiring.c.o $(AR) rcs core.a wiring_analog.c.o $(AR) rcs core.a wiring_digital.c.o $(AR) rcs core.a wiring_pulse.c.o $(AR) rcs core.a wiring_shift.c.o $(AR) rcs core.a CDC.cpp.o $(AR) rcs core.a HardwareSerial.cpp.o $(AR) rcs core.a HID.cpp.o $(AR) rcs core.a IPAddress.cpp.o $(AR) rcs core.a main.cpp.o $(AR) rcs core.a new.cpp.o $(AR) rcs core.a Print.cpp.o $(AR) rcs core.a Stream.cpp.o $(AR) rcs core.a Tone.cpp.o $(AR) rcs core.a USBCore.cpp.o $(AR) rcs core.a WMath.cpp.o $(AR) rcs core.a WString.cpp.o $(CC) -Os -Wl,--gc-sections -mmcu=$(MCU) -o $(MAIN_SKETCH).elf $(MAIN_SKETCH).o core.a -lm $(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $(MAIN_SKETCH).elf $(MAIN_SKETCH).eep $(OBJ_COPY) -O ihex -R .eeprom $(MAIN_SKETCH).elf $(MAIN_SKETCH).hex
Sinun on muutettava ainakin ARDUINO_DIR
, jotta voit viitata luennon, johon olet asentanut IDE: n. Jos käytät muita asioita, kuten Wire-kirjastoa, sinun on laajennettava sitä jonkin verran uusien kirjastojen kokoamiseksi. Jälleen voit käyttää muutosten ohjaamiseen IDE: n itse luomaa.
Yläpuolella olevilla välilyönneillä varustetut rivit tarvitsevat -välilehden -merkki välilyöntien sijaan, kuten Makefileen normaalisti.
Kommentit
- make-tiedoston lähetysosio on myös hyödyllistä ladata käännetty luonnos arduinoon (käyttäen avr-dude).
- Se olisi ehdottomasti hyödyllistä. Koska IDE on toistaiseksi tyydyttänyt kokoamis- ja lataamistarpeeni, en ole kovin motivoitunut selvittämään, miten se tehdään. 🙂
- Katso metamorfinen vastaus saadaksesi helpomman ratkaisun
vastaus
Käytän komentoriviliittymää arduino
-komentoon .
Suoritan sitä kuten tämä:
arduino --upload sketch/sketch.ino --port /dev/ttyUSB*
On sivu , joka kuvaa muita komentorivityökaluja, kuten inotool
. Sivulla on myös esimerkki Makefile
. Nämä vaihtoehdot vaikuttavat houkuttelevilta, mutta ilmeisesti yksikään niistä ei toimi tämän kirjoituksen jälkeen. Oletan, että tämä johtuu joistakin Arduino IDE -jakelutiedostojen viimeaikaisista muutoksista, joista ne riippuvat.
Kuten yllä on, arduino
on ajettu hieman hitaasti, koska se täytyy ladata Java Java, mutta ainakin se toimii. On myös arduino-builder
komento, joka tulee Arduino IDE -jakelua. Tämän kirjoituksen jälkeen se ei ollut riittävän hyvin dokumentoitu, jotta voisin selvittää, miten sitä käytetään. Esimerkiksi README-ohjelmassa tai missään opastamassani ohjelmassa ei ole esimerkkejä komentoriveistä, enkä voinut selvittää, miten sen avulla voidaan lähettää koodi taululle. Oletettavasti se pystyy kuitenkin tuottamaan meille nopeamman käännöksen kuin arduino
. README mainitsee myös edellisen käännöksen objektitiedostojen uudelleenkäytön, joten siinä on joitain mallinomaisia toimintoja.
Sarjaulostulon tarkasteleminen Käytän jotain sellaista kuin
stty -F /dev/ttyUSB* 1000000 raw -clocal -echo cat /dev/ttyUSB*
Numeron 1000000 on vastattava numeroa, jonka välität osoitteeseen Serial.begin()
lautakoodisi. Voit myös käyttää screen
-ohjelmaa, jos sinulla on tarkoituksenmukainen vuorovaikutteinen levyohjelma tai voit käyttää mitä tahansa apuohjelmaa kirjoittaaksesi suoraan laitteeseen. Muuten erääntymispäiväni näkyy muodossa /dev/ttyACM0
(Unon sijaan /dev/ttyUSB0
).
Kommentit
vastaus
Tarvitset Makefile-tiedoston. Arduinolle on olemassa muutama Makefile-projekti. Google-haku ”Arduino Makefile” -palveluun palauttaa monia tuloksia, mukaan lukien hyvältä näyttävät tulokset Githubissa: https://github.com/sudar/Arduino-Makefile
Komentoriviltä kääntäminen ei ole vähäistä, koska Arduino IDE käsittelee kirjastoja.
Vastaa IDE: n sarjaa monitori todennäköisesti yhdistää pääteemulaattorin (esim. näyttö) kohteeseen / dev / ttyACM0, eikö?
Sarjamonitorille suosittelen minicomia. Se on täysin toimiva pääteemulaattori (vt102) komentorivillä.
minicom -D /dev/ttyACM0 -b 115200
… esimerkiksi.
Kommentit
- Tämä Makefile on pääosin hyväksytyn vastauksen ylläpidetty versio.GitHubissa on myös malliprojekti, joka näyttää, miten se asetetaan: github.com/ladislas/Bare-Arduino-Project
vastaus
virallinen CLI-työkalu
Arduino-tiimi kehittää cli asiakas https://github.com/arduino/arduino-cli
Ilmoitus : https://blog.arduino.cc/2018/08/24/announcing-the-arduino-command-line-interface-cli/
Voit tehdä melkein kaiken tällä toiminnolla, levyjen ja kirjastojen lataamisesta aina skriptien kokoamiseen ja lähettämiseen. Valvontaosasta puuttuu (voit käyttää Metamorphic ”-menetelmää käyttämällä stty
cat
, Se toimii!)
Komennot ovat hyvin samankaltaisia kuin Metamorphic” vastauksen kanssa, koska tämä työkalu haarautuu tästä
Ohjeet Github-repossa ja man-sivulla:
$ arduino-cli Arduino Command Line Interface (arduino-cli). Usage: arduino-cli [command] Examples: arduino <command> [flags...] Available Commands: board Arduino board commands. compile Compiles Arduino sketches. config Arduino Configuration Commands. core Arduino Core operations. help Help about any command lib Arduino commands about libraries. sketch Arduino CLI Sketch Commands. upload Upload Arduino sketches. version Shows version number of Arduino CLI.
Vastaa
Jos haluat täysin yhteensopivan ratkaisun arduino-projektiisi (kyllä, voit jakaa projektisi muiden ihmisten kanssa vain tavallinen Arduino IDE), sinun on tarkistettava amake työkalu arduinon klien yksinkertaistamiseksi, käytän sitä Geanyn kanssa, mutta muut käyttävät sitä vi, Atomilla jne.
Se on innoittamana ja nyt kuolleet Ino- ja Arturo-projektit; vie 5 minuuttia sen testaamiseen ja anna palautetta.
Esimerkki käytöstä:
cd ~/Arduino/Blink/ [move to your arduino project folder] amake -v uno Blink.ino [to compile/verify your code] amake -u uno Blink.ino /dev/ttyUSB0 [to upload your code to an arduino connected via USB]
Siinä on älykäs liima, se osaa muistaa taulun ja tiedoston ja jopa tunnistaa taulun USB: n automaattisesti; joten onnistuneen ”amake -v” -komennon jälkeen voit tehdä tämän komentorivillä ja se toimii.
amake -v [to compile/verify your code] amake -u [to upload your code to an arduino connected via USB]
Jos käytät joitain IDE-makroja, voit käsittele kääntö- ja latauskomennot helposti, esimerkiksi Geany IDE: n avulla siitä tulee:
- Käännä / vahvista: cd% d; amake -v uno% f
- Lataa: cd% d; amake -u uno% f
Saat enemmän apua vain ”amake” tai ”amake -h” suorittamisesta asennuksen jälkeen.
Se voi myös tukea KAIKKI -taulu / lib / ohjelmoija, jonka olet asentanut / määrittänyt Arduino IDE -laitteeseesi, kyllä, moderni kortti, kuten Adafuit Trinket M0 / Arduino M0 jne …
Käynnistä vain Arduino IDE, siirry taulunhallintaohjelmaan, asenna tuki ja kaikki, noudata joitain yksinkertaisia ohjeita ja olet asetettu.
Taulu sinua ei tueta? ei ole ongelma, tunnista fqbn (lue README.md-tiedosto) ja välitä se taulun nimellä.
Etsin testaajia kasvattamaan numeroa tai taulua aliakset ja oikean USB-allekirjoituksen automaattinen tunnistus.
Muista, että tämä on yksityinen kasvatettu työkalu, joka on nyt jaettu yleisön kanssa. Tiedätkö, vain ohjelmoija naarmuttaa sen kutinaa …
Kippis.
*.ino
-tiedosto, koska se ei näytä välttämättä lataavan--upload
-parametri.