`
爱迪生的小屋
  • 浏览: 36368 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在Arduino上用Java编程 3.通过Eclipse开发Arduino程序

阅读更多

在Arduino上用Java编程

 

1.序

2.TotoroVM使用方法

3.通过Eclipse开发Arduino程序

    Eclipse是广受欢迎的程序开发环境,支持Java,C等多种程序语言,由于他优秀的插件机制和成熟的社区支撑,有着近乎无限的可能性。用惯了Eclipse的语法提示的我,对于Arduino自带的IDE实在是不能适应。通过Eclipse开发Arduino程序,自然也是要通过插件的支持,而这个插件名叫AVR Eclipse Plugin,它不但可以编写,编译Arduino程序,还支持一键烧录的功能。下面,让我们来一步一步搭建一个支持Arduino的Eclipse。

第一步,Eclipse:

    去到Eclipse的官网的下载页面 http://www.eclipse.org/downloads/ 找到最新版的 Eclipse IDE for C/C++ Developper,下载需要的32/64位版本。http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-cpp-juno-SR2-win32.zip

    有了Eclipse IDE for C/C++之后还可以安装一个mingw或者cygwin,两者都有gcc可以编译出windows下的执行文件,区别是mingw编译出来的文件可以直接执行,而cygwin编译出来的文件比较小,但需要有一个cygwin1.dll支持。装他们的目的是为了调试为Arduino写的C++程序(需要自己实现一些调试用的Arduino.h中的方法),以弥补Arduino芯片上难于调试程序的尴尬。

    我使用的的mingw,下载安装包 http://sourceforge.net/projects/mingw/files/latest/download?source=files 安装好后,将<MingGW>\bin目录加到path中,启动Eclipse后会自动实别。然后就可以在新建C/C++项目中选择MinGW GCC,初次使用可以选择 New->C++ Project->Executable->Hello World C++ Project,在Toolchains中选择MinGW GCC,系统会自动生成一个Hello World项目,直接执行<Ctrl+F11>即可编译生成Hello World程序。

    上面简单介绍了Eclipse IDE for C++的一般使用方法,接下来进入正题,开始Arduino编译之旅:

第二步,Arduino IDE

    从Arduiono官网 http://arduino.cc/en/Main/Software 上下载Arduino IDE,其中包含了Arduino的编译命令avr-gcc,库文件和硬件配置信息。以供Eclipse直接使用。

第三步,AVR Eclipse Plugin

    下载地址 http://nchc.dl.sourceforge.net/project/avr-eclipse/avr-eclipse%20stable%20release/2.4.0/avreclipse.2.4.0.final.p2repository.zip 。

    Eclipse的插件有多种安装方式,我倾向于把插件安装到Eclipse目录之外,通过link的方式调用。方法为:

    解压插件包到任意目录,如: D:\eclipse_plugins\avreclipse.2.4.0.final.p2repository

    到Eclipse的安装目录下新建一个links目录,在links目录中新建一个任何名称的.link文件,如avreclipse.link,编译这个文件,填入刚才的插件路径:

 

path=D:\\eclipse_plugins\\avreclipse.2.4.0.final.p2repository

    重启Eclipse,如能在Window->Preferences菜单中看到AVR选项即说明插件安装成功。

    配置插件Window->Preferences->AVR->Paths,统统指向Arduino IDE里的目录

    AVR-GCC : <arduino-1.0.4>\hardware\tools\avr\bin

    GNU-make : <arduino-1.0.4>\hardware\tools\avr\utils\bin

    AVR Header Files : <arduino-1.0.4>\hardware\tools\avr\avr\include

    AVRDude : <arduino-1.0.4>\hardware\tools\avr\bin

    如图:    


    配置插件Window->Preferences->AVR->AVRDude

    选择Use custom config file for AVRDude,输入<arduino-1.0.4>/hardware\tools\avr\etc\avrdude.conf

    在Programmer configuration中添加配置

        - Programmer Hardware选择Arduino

        - Override default port 填写arduino的com口,不知道可以去设备管理器中的Usb serial port上找

        - Override default baudrate填写115200

    如图:

    配置完成!

第四步,编译静态链接库

    Arduino的一些标准的库需要事先编译,以省得每个新的项目都把这些东西重要编译一遍。

    新建一个C++ AVR静态库项目ArduinoCore:

        - Toolchains : AVR-GCC



 

        - Configurations : Release(Arduino没法调试)



 

        - MCU Type : ATMega328P (我的Arduino UNO是这个芯片)

        - MCU Frequency : 16000000

         Finish

    导入静态库通用源码:在ArduinoCore项目上右键->Import->File System

        - From Directory : <arduino-1.0.4>\hardware\arduino\cores\arduino

     钩选所有文件,Finish

    导入静态库型号源码:在ArduinoCore项目上右键->Import->File System

        - From Directory : <arduino-1.0.4>hardware\arduino\variants\standard\pins_arduino.h (Arduino UNO的型号)

    钩选,Finish

    设置编译参数在ArduinoCore项目上右键->Preferences->C/C++ Build->Settings

        - AVR Compiler -> Directories : "${workspace_loc:/${ProjName}}"    (引入ArduinoCore自己)

        - AVR Compiler -> Optimization -> Other Optimize Flags -ffunction-sections -fdata-sections

          * 这两个参数是告诉编译器把程序中的代码段和数据库都分散保存,这样以后编译时就有可能只包含用到的方法和数据,给执行文件减肥

        - AVR C++ Compiler -> Directories : "${workspace_loc:/${ProjName}}"

        - AVR C++ Compiler -> Optimization -> Other Optimize Flags -ffunction-sections -fdata-sections

    Finish

    编译项目 Project->Build Project。成功后会生成一个静态文件libArduinoCore.a并出现如下信息:


第五步,编写Arduino程序

    准备就绪,可以编写自己的项目了。

    新建一个C++ AVR应用项目 ArduinoDemo:

        - Toolchains : AVR-GCC

        - Configurations : Release

        - MTU Type : ATMega328P

        - MTU Frequency : 16000000

        Finish

    配置编译参数 

        - AVR Compiler -> Directories : "${workspace_loc:/ArduinoCore}"    (引入ArduinoCore)

        - AVR Compiler -> Optimization -> Other Optimize Flags -ffunction-sections -fdata-sections

        - AVR C++ Compiler -> Directories : "${workspace_loc:/ArduinoCore}"

        - AVR C++ Compiler -> Optimization -> Other Optimize Flags -ffunction-sections -fdata-sections

        - AVR C++ Linker -> General -> Other Arguments -Wl,--gc-sections

        * 配合之前的 -ffunction-sections -fdata-sections,编译时过滤未用到的方法和数据

 

        - AVR C++ Linker -> Libraries -> Libraries ArduinoCore   (libArduinoCore.a,去除lib和.a)

        - AVR C++ Linker -> Libraries -> Libraries Path "${workspace_loc:/ArduinoCore/Release}"

     完成,下面可以写程序了,我们以arduino标准的demo程序Blink为例,新建一个新的cpp文件blink.cpp:

 

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
 *复制自arduino示例
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

/* main方法 */
int main(void) {
    /* Must call init for arduino to work properly */
    init();
    setup();

    for (;;) {
        loop();
    }
}

     *arduino代码和c++代码的唯一区别就是arduino会自动生成main方法,依次调用init(), setup()和loop()方法,我们需要自己添加它。

    编译项目 Project->Build Project。成功后会会打印程序的大小,用户需要自行确保程序小于arduino的flash空间大小32K

    烧录程序

    把arduino连接到电脑的USB口

    右键点击项目 Properties->AVR->AVRDude,在Programmer Configuration中选取之前设置过的Arduino,关闭。

    选择菜单AVR->Upload Project to Target Device或者按工具栏上的AVR图标

     

    完工,在Arduino上测试我们的程序吧!

 

 

  • 大小: 84.2 KB
  • 大小: 154.7 KB
  • 大小: 83.8 KB
  • 大小: 77.3 KB
  • 大小: 67.9 KB
  • 大小: 86.4 KB
  • 大小: 143.3 KB
  • 大小: 15.9 KB
  • 大小: 75.4 KB
  • 大小: 70.4 KB
  • 大小: 14.7 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

    xbee-api-0.9.zip_BEESTACK_XBee-PROreg 900HP_arduino API_xbee_xb

    在Arduino上使用XBee API,可以极大地简化无线通信的实现过程。 "Xbee-PROreg 900HP"是指XBee PRO系列的900MHz高功率版本。这种模块提供更远的传输距离和更高的功率输出,适合在大型或需要远程通信的项目中使用。 ...

    arduino-eclipse-plugin:一个插件,可以轻松在Eclipse中对arduino进行编程

    Sloeber,用于Eclipse的Arduino IDE Eclipse IDE(集成开发环境)是功能齐全的编程编辑器,具有许多出色的功能,可帮助您更快速,更轻松地进行编码。 Arduino IDE的功能非常强大–但是在编写,浏览和理解您(以及...

    Sloeber_V4.3.2_win64.2019-10-07_08-26-30.tar.gz

    Sloeber_V4.3.2_win64.2019-10-07_08-26-30.tar.gz是一款专为Arduino爱好者设计的开发工具,它巧妙地结合了Eclipse的强大功能与Arduino的易用性,为编程者提供了高效且舒适的开发环境。这个版本是针对Windows 64位...

    java版直播间源码-bpm-detect:相应地通过Arduino分析音乐和控制灯光的Java程序

    该程序专为我设计并安装在旧公寓天花板上的灯而设计。 它由 16 个 3 英尺长的 12V RGB LED 灯条组成。 每个条带通过将 Arduino 连接到一组 4 个 TLC5940 芯片来单独控制,每个通道由一个晶体管和一个外部 12V 电源...

    使用Firmata和JAVA从RaspberryPi访问Arduino的GPIO-项目开发

    标题中的“使用Firmata和JAVA从RaspberryPi访问Arduino的GPIO-项目开发”涉及到一个跨平台的硬件交互技术,即通过Raspberry Pi(简称RPi)与Arduino之间的通信来控制Arduino的GPIO(通用输入/输出)接口。在这个项目...

    Sloeber_V4.3.2_linux64.2019-10-07_08-26-30.tar.gz

    描述中提到的“借eclipse壳的arduino开发工具”意味着Sloeber是基于Eclipse框架开发的,Eclipse是一个开源的、跨平台的集成开发环境,被广泛应用于Java、C++等各种语言的开发。在Arduino领域,Sloeber扩展了Eclipse...

    程序和软硬件设计软件.rar

    3. 单片机编程:对于嵌入式系统,如Arduino和STM32,有专门的IDE,如Arduino IDE和Keil uVision,用于编写和烧录单片机代码,实现硬件控制。 4. 模拟与数字信号处理:MATLAB和Simulink提供强大的数学计算和系统建模...

    详细硬件开发资源.zip

    尽管标签上标记的是“java”,但通常在硬件开发领域,Java可能被用作嵌入式系统或者物联网(IoT)项目中的编程语言。因此,我们可以期待这些资源可能涵盖了Java在硬件接口和设备控制方面的应用。 硬件开发是一个广泛...

    Sloeber_V4.3.3_linux64.2020-04-23_11-36-51.zip

    通过Sloeber,用户可以直接在Eclipse中进行Arduino项目的开发,享受其强大的代码补全、语法高亮、错误检测等功能,极大地提升了开发效率。 其次,Sloeber支持JDK10及以上版本,这使得它能够利用Java最新的特性和...

    java串口通信简单的例子

    在这个“java串口通信简单的例子”中,我们将深入探讨如何在Java环境中实现串口通信,并通过Eclipse集成开发环境进行调试和运行。 首先,我们需要了解串口通信的基础知识。串口,也称为串行接口,是一种通过串行...

    中鸣超级轨比赛模块程序

    6. **编程语言与开发工具**:虽然未明确指出,但这类程序通常由C++、Python或Java等编程语言编写,并可能使用如Visual Studio、Eclipse或Arduino IDE等开发环境。开发者需要熟悉这些工具,以便进行代码编写、调试和...

    JIFI:用于编程和模拟基于 Arduino 的机器人的 GUI

    1. **安装与设置**:下载JIFI的源码包(JIFI-master),使用Java开发环境(如Eclipse或IntelliJ IDEA)导入并构建项目。 2. **连接Arduino**:将Arduino设备通过USB连接到计算机,确保驱动程序正确安装。 3. **创建...

    zigduino光盘快速使用指南

    Eclipse作为集成开发环境(IDE),需要在有Java运行环境的系统上才能正常运行。用户应当根据自己的操作系统情况,按照光盘上提供的安装指导完成JDK的安装。 接下来,Eclipse的Arduino环境配置是整个开发过程的关键...

    sonarlog_eclipse:Java应用程序可记录来自IOIO的声纳读数并在Android设备上内插匹配的GPS位置

    "sonarlog_eclipse" 是一个项目名称,表明这是一个使用Eclipse开发环境的Java程序,专门用于处理声纳数据。"Java应用程序可记录来自IOIO的声纳读数" 指出该程序能从连接的IOIO(Input/Output IO)设备获取声纳读数,...

    serialduino:另一个用于Java的Arduino串行监视器

    蓝牙RFCOMM(正在开发中,将在v1.0上受支持) 在Linux Mint 18上测试。 依存关系: jSSC,用于com支持驱动程序-https: 将库导入其他项目 单机版 下载jSSC和。 将此库导入到Eclipse Build Path项目中。 玛文 如果...

    see-postfiy.zip_disease7do_串口编程

    串口通信在游戏开发中可能用于调试工具、外设交互或是特殊硬件的集成,比如通过串口连接Arduino来控制游戏中的某些物理效果。 【压缩包子文件的文件名称列表】揭示了项目的一些结构和文件类型: 1. `e.classpath`...

    免费下载java串口通信包 mfz-rxtx-2.2-20081207-win-x64.zip

    Java串口通信是Java编程中一个重要的组成部分,特别是在设备交互、物联网(IoT)和嵌入式系统中。MFZ-RXTX是一个第三方库,它为Java提供了串行通信的功能,使得开发者能够在Java应用程序中方便地与串口进行数据交换。...

    bArduino:这是一个旨在开发由基于Android或Java的客户端控制的自动饮料搅拌机的项目

    这是一个旨在开发由基于Android或Java的客户端控制的自动饮料搅拌机的项目。 Arduino相关代码在/ Arduino中。 Arduino / State_Machine.ino是用于控制和测量流体流量的Arduino。 Arduino / led_machine.ino是控制...

    蓝牙与安卓通信

    1. **手机应用程序开发**:在安卓平台上,主要的开发语言是Java,因此我们可以使用Eclipse IDE和Android SDK来创建应用。首先,我们需要创建一个新的Android项目,并设计用户界面。在示例中,使用`AbsoluteLayout`...

Global site tag (gtag.js) - Google Analytics