哈哈,今天浏览arduino.cc官网,找到一个好东东,以后,在ubuntu下用终端编程在也不发愁了。

platformio.org是一个物联网全能的IDE,甚至还贴心的提供了在命令行下编程的版本:platformio CLI

好东西不能独享啊,拿出来给看到这篇文章的童鞋们。

一、安装篇。

platformio是用python开发,所以,要先安装python环境,注意是python2.7版本。

#更新系统
apt update
apt upgrade
#安装gcc编译环境
apt install build-essential
#安装python及开发包
apt install python python-all-dev python-setuptools python-wheel
#安装pip及更新到最新版
apt install python-pip
pip install --upgrade pip
#安装PlatFormIO
pip install -U platformio

二、使用前的准备工作。

1、使用前,首先要确定你使用的控制器类型,这里我使用的arduino uno板子。
platformio boards atmelavr
输出:

Platform: atmelavr
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Type                  MCU            Frequency  Flash   RAM    Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------
chiwawa               atmega32u4     16Mhz     28kB    2.5kB  Arduino Industrial 101
leonardo              atmega32u4     16Mhz     28kB    2.5kB  Arduino Leonardo
leonardoeth           atmega32u4     16Mhz     28kB    2.5kB  Arduino Leonardo ETH
lilypadatmega168      atmega168      8Mhz      14kB    1kB    Arduino LilyPad ATmega168
lilypadatmega328      atmega328p     8Mhz      30kB    2kB    Arduino LilyPad ATmega328
LilyPadUSB            atmega32u4     8Mhz      28kB    2.5kB  Arduino LilyPad USB
uno                   atmega328p     16Mhz     31kB    2kB    Arduino Uno
yun                   atmega32u4     16Mhz     28kB    2.5kB  Arduino Yun
yunmini               atmega32u4     16Mhz     28kB    2.5kB  Arduino Yun Mini

通过以上得知,arduino uno的类型是uno,如果用的lilypad的话,根据控制器型号判断为lilypadatmega168 或lilypadatmega328

2、初始化类型为uno的板子:
#在创建工作目录mkdir test
cd test
#执行初始化
platformio init --board uno

三、开始编程。
执行完初始化命令后,系统自动生成1各配置文件和2各目录:

platformio.ini     (为配置文件)

lib      (自动生成的程序库的目录)

src      (存放程序源文件的目录)

现在进入src目录,创建一个以.c或.h或.cpp或.ino等待结尾的文件就可以开始编程了。

四、程序编写注意事项:

程序基本和arduino IDE一致,但是,要在开头写一个头文件(见下)才能通过编译。
#include "Arduino.h"

例如:
#include "Arduino.h"
void setup()
{
    pinMode(LED_BUILTIN,OUTPUT);

}

void loop()
{
    digitalWrite(LED_BUILTIN,HIGH);
    delay(1000);
    digitalWrite(LED_BUILTIN,LOW);
    delay(1000);
}

以上为一个完整的程序编码,文件名任意,但应该以.h .c .cpp .ino等系统可以识别的后缀结尾。

五、编译

编写程序完毕后,退回项目的根目录,然后执行下面命令进行编译:

platformio run -e uno

编译完成后,上传程序到uno

platformio run -t upload

如果想编译后立即上传,执行:

platformio run -e uno -t upload

如果想清理编译过的文件:

platformio run -t clean

6、以上就是基本操作,是不是很好,真佩服老外的编码精神,你刚想到一个念头,已经有人做出原型了,

最后,在推荐一下官网:www.platformio.org

用platformio编写arduino程序的更多相关文章

  1. CSharpGL(11)用C#直接编写GLSL程序

    CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...

  2. 在Linux上编写C#程序

    自从C#开源之后,在Linux编写C#程序就成了可能.Mono-project就是开源版本的C#维护项目.在Linux平台上使用的C#开发工具为monodevelop.安装方式如下: 首先需要安装一些 ...

  3. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  4. 如何让VS2013编写的程序

    总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...

  5. 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值

    编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值 1 #import <Foundation/Foundation.h>  2   3 int main( ...

  6. 在Salesforce中通过编写C#程序调用dataloadercliq的bat文件取触发调用data loader来批量处理数据

    通过这篇文章 http://www.cnblogs.com/mingmingruyuedlut/p/3413903.html 我们已经知道了Data Loader可以对Salesforce的Objec ...

  7. 转 : 用Delphi编写安装程序

    http://www.okbase.net/doc/details/931  还没有亲自验证过,仅收藏 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步 ...

  8. 初学编写JAVA程序

    一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 public class Hello{ public static v ...

  9. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

随机推荐

  1. Discuz常见小问题-如何修改导航栏

    1 比如我要修改第一个导航栏,则在界面-导航设置,主导航,然后点击右边的编辑按钮 2 比如我把"首页"的名字改成"论坛首页",别的都不改,然后点击提交,刷新页面 ...

  2. 安全删除U盘或其他硬件 unlocker的使用方法

    1 假如我在优盘里新建一个文档,并且正在读写文件. 点击右下角的安全删除的时候弹出如下对话框. 2 在该优盘上右击,Unlocker,弹出的对话框显示NOTEPAD.EXE正在使用. 3 在确保左侧是 ...

  3. ubuntu server vsftpd 匿名用户上传下载及目录设置

    ubuntu server vsftpd 匿名用户上传下载及目录设置 1:vsftpd服务器安装: sudo apt-get install vsftpd #安装 cd /srv/ #切换到默认匿名用 ...

  4. 【CSS】瀑布流布局的两种方式:传统多列浮动和绝对定位布局

    传统多列浮动 各列固定宽度,并且左浮动: 一列中的数据块为一组,列中的每个数据块依次排列即可: 更多数据加载时,需要分别插入到不同的列上: 优点: (1)布局简单,应该说没啥特别的难点: (2)不用明 ...

  5. 微信小程序 - switchTab传值

    “众所周知,switchTab是不能携带参数的” 我们有几种方式解决呢?(最好的解决方法是利用全局变量,这样可以避免因缓存造成的数据错误) 1. 通过全局变量(需要用到的页面都要引用它) 点击下载示例 ...

  6. vue 常见报错问题

    情况一:http://eslint.org/docs/rules/no-tabs  Unexpected tab character 解决方案:缩进是4个空格,而不是tab,设置indent 情况二 ...

  7. JDK核心JAVA源代码解析(1) - Object

    想写这个系列非常久了,对自己也是个总结与提高.原来在学JAVA时.那些JAVA入门书籍会告诉你一些规律还有法则,可是用的时候我们一般非常难想起来,由于我们用的少而且不知道为什么.知其所以然方能印象深刻 ...

  8. Springboot UT 引入某些类

    http://www.infoq.com/cn/articles/Unit-Testing-Complete-Integration-Testing-Begins https://segmentfau ...

  9. Google Hack的一些整理

    这里是一些关于Google Hack方面的整理 黑客专用信息和资料搜索地址为: http://www.google.com/custom?hl=xx-hacker 这里是google关键字的用法,要设 ...

  10. 如何通过from语句调用模块的变量名?

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #如何通过from语句调用模块的变量名? #my.py def printer(x): print x #如何 ...