在 Ubuntu 环境下使用 VSCode 和 PlatformIO 下载程序到 Arduino Uno

news2024/11/13 14:54:29

  1. 安装 VSCode

    • 访问 VSCode 官网 下载 .deb 包
    • 使用以下命令安装:
      sudo dpkg -i <下载的文件名>.deb
      sudo apt-get install -f
      
  2. 安装 PlatformIO 扩展

    • 在 VSCode 中,转到扩展市场(Ctrl+Shift+X)
    • 搜索 “PlatformIO IDE”
    • 点击 “安装”
  3. 创建 PlatformIO 项目

    • 在 VSCode 中,点击 PlatformIO 图标(通常在左侧栏)
    • 选择 “New Project”
    • 选择 Board: “Arduino Uno”
    • 选择 Framework: “Arduino”
    • 选择项目位置并命名
      在这里插入图片描述
  4. 编写代码

    • src/main.cpp 中编写或粘贴您的 Arduino 代码
      #include <Arduino.h>
      
      void printMenu() {
          Serial.println("\n--- Arduino Menu ---");
          Serial.println("1. Say Hello");
          Serial.println("2. Get Arduino Uptime");
          Serial.println("3. Blink LED");
          Serial.println("Enter your choice:");
      }
      
      void setup() {
          Serial.begin(9600);
          while (!Serial) {
              ; // Wait for serial port to connect (needed for native USB port only)
          }
          Serial.println("Arduino ready for communication!");
          pinMode(LED_BUILTIN, OUTPUT);
          printMenu();
      }
      
      void loop() {
          if (Serial.available() > 0) {
              char choice = Serial.read();
              
              // Clear the serial buffer
              while (Serial.available() > 0) {
                  Serial.read();
              }
              
              switch (choice) {
                  case '1':
                      Serial.println("Hello from Arduino!");
                      break;
                  case '2':
                      Serial.print("Arduino uptime: ");
                      Serial.print(millis() / 1000);
                      Serial.println(" seconds");
                      break;
                  case '3':
                      Serial.println("Blinking LED 3 times...");
                      for (int i = 0; i < 3; i++) {
                          digitalWrite(LED_BUILTIN, HIGH);
                          delay(500);
                          digitalWrite(LED_BUILTIN, LOW);
                          delay(500);
                      }
                      Serial.println("Blinking complete!");
                      break;
                  default:
                      Serial.println("Invalid choice. Please try again.");
              }
              
              printMenu();
          }
      }
      
  5. 连接 Arduino Uno

    • 使用 USB 线将 Arduino Uno 连接到电脑
  6. 编译和上传

    • 点击 VSCode 底部状态栏的 “PlatformIO: Build” 图标编译代码
    • 点击 “PlatformIO: Upload” 图标将程序上传到 Arduino Uno
    • 点击vscode下方的Auto在这里插入图片描述在这里插入图片描述
  7. 监视串口输出

    • 点击 “PlatformIO: Serial Monitor” 图标打开串口监视器
    • 这时在串口监视器中输入数字,就可以选择相应的功能。

    注:如果遇到权限问题,可能需要将用户添加到 dialout 组:

    sudo usermod -a -G dialout $USER
    

    添加后需要注销并重新登录才能生效。

故障排除

串口监视器错误

如果在点击 “PlatformIO: Serial Monitor” 时出现类似以下的错误:在这里插入图片描述
这是因为 PlatformIO 在尝试运行测试,但是找不到测试文件。解决方法如下:

  1. 确保您不是在运行测试命令。串口监视器应该使用 “Monitor” 命令,而不是 “Test” 命令。

  2. 如果问题仍然存在,尝试以下步骤:

    • 在项目根目录创建一个 test 文件夹(如果不存在)
    • test 文件夹中创建一个空的测试文件,例如 test_main.cpp
    • test_main.cpp 中添加以下内容:
      #include <unity.h>
      
      void setUp(void) {
          // set stuff up here
      }
      
      void tearDown(void) {
          // clean stuff up here
      }
      
      void test_function_calculator_addition(void) {
          TEST_ASSERT_EQUAL(32, 25 + 7);
      }
      
      int main(int argc, char **argv) {
          UNITY_BEGIN();
          RUN_TEST(test_function_calculator_addition);
          UNITY_END();
      
          return 0;
      }
      
  3. 尝试使用命令行运行串口监视器:

    • 打开终端
    • 导航到项目目录
    • 运行命令:pio device monitor
  4. 检查 platformio.ini 文件,确保正确配置了串口监视器:

    [env:uno]
    platform = atmelavr
    board = uno
    framework = arduino
    monitor_speed = 9600
    

如果问题仍然存在,可以尝试重新安装 PlatformIO 或查看 PlatformIO 的官方文档以获取更多帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷题记录-HOT 100(一)40道

记录题解和思路。 一、哈希表解决问题 1、两数之和 思路&#xff1a; 创建哈希表&#xff1a; 初始化了一个空字典来存储已经访问过的数字及其对应的索引。 遍历数组&#xff1a; 逐一遍历数组中的每个元素。在遍历过程中&#xff0c;针对每个元素 num&#xff0c;计算出它…

手机FM LNA方案设计

一 概述 关于手机FM的使用&#xff0c;较为传统的则是在打开FM应用前先插入有线耳机才能使用FM应用。然而随着智能手机的进步以及有线耳机日益被无线蓝牙耳机所代替&#xff0c;内置FM LNA方案被应用的越来越多&#xff0c;无需插入有线耳机&#xff0c;复用例如GSM天线也能实…

跨语言障碍:全球语言翻译神器崛起

1.背景 工作中经常要查看纯英文文档和纯英文视频&#xff0c;尽管本人经历了1年多的英语培训&#xff0c;看英文资料依然非常吃力。 大模型出来后&#xff0c;KIMI能够帮助翻译纯英文的文档内容&#xff0c;但视频翻译还没有一个很好的工具。最近发现了一款通过大模型翻译文档…

yolov9目标检测pyside6可视化检测界面python源码-用于计数统计-摄像头可用

项目概述 此项目旨在利用YOLOv9&#xff08;You Only Look Once version 9&#xff09;这一先进的目标检测模型&#xff0c;实现实时视频流中的物体识别与计数。通过集成PySide6库&#xff0c;我们能够构建一个直观且易于使用的图形用户界面&#xff08;GUI&#xff09;&#…

基于SpringBoot+Vue+MySQL的社区维修平台

系统背景 系统管理也都将通过计算机进行整体智能化操作&#xff0c;对于社区维修平台所牵扯的管理及数据保存都是非常多的&#xff0c;例如住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等…

VR虚拟驾驶未来发展_vr自动驾驶汽车所带来的改变

在自动驾驶汽车的基础上&#xff0c;VR虚拟现实技术的应用也让自动驾驶汽车更加智能化&#xff0c;能够实现更高级的驾驶体验&#xff0c;今天这篇文章就和大家一起探讨一下 VR虚拟驾驶未来发展的趋势&#xff0c;以及虚拟现实自动驾驶汽车所带来的几个改变。 一、VR 虚拟驾驶未…

WebAssembly技术实践

文章目录 知识学习优点 开启本地临时服务器方式一、命令安装方式二、直接在vscode的插件 测试程序异常处理 最近在看WebAssembly相关的知识&#xff0c;在本地运行&#xff0c;记录下来&#xff0c;方便备查。 知识学习 WebAssembly是一种高性能二进制格式、用于在各种现代硬件…

C++基础面试题 | C++中static的作用?什么场景下会使用static?

回答重点&#xff1a;修饰局部变量 修饰全局变量或函数 修饰类的成员变量或函数 修饰局部变量&#xff1a;当static用于修饰局部变量时&#xff0c;该变量的存储位置在程序执行期间保持不变&#xff0c;并且只在程序执行到该变量的声明处时初始化一次。即使函数被多次调用&…

【Python报错已解决】“ModuleNotFoundError: No module named ‘packaging‘“

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述1.1 报错示例&#xff1a;尝试导入不存在的模块时&#xff0c;可能会看到以下错误信息。…

详解CSS

目录 CSS 语法 引入方式 选择器 标签选择器 类选择器 ID选择器 通配符选择器 复合选择器 常用CSS color font-size border width和height padding 外边距 CSS CSS(Cascading Style Sheet)&#xff0c;层叠样式表, ⽤于控制⻚⾯的样式. CSS 能够对⽹⻚中元素位置…

带你深入浅出之QT编程:一、掌握信号与槽的奥秘

此为QT编程的第一谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; 码…

《python语言程序设计》第8章第11题将反向字符串 编写一个函数反向一个字符串,reverse(s)

def reverse(text_arrange):len_text len(text_arrange)dec_text ""for i in range(1, len_text 1):# print(i)dec_text text_arrange[-i]print(f"反向输出{dec_text}")reverse("12345678") reverse("abcdefg")

利润率问题【简单】

小张收购一台手机&#xff0c;然后转手卖出&#xff0c;赚取了30%的利润。一星期后&#xff0c;客户要求退货&#xff0c;小张和客户达成协议&#xff0c;以当时交易价格的90%回收了这台手机&#xff0c;后来小张又以最初的收购价格将其卖出。小张在这台手机交易中的利润率是&a…

双系统报错verifiying shim SBAT data falled: Security Pollcy Violation

文章目录 问题背景原因分析解决方案 问题背景 双系统&#xff0c;在windows更新后&#xff0c;出现如下报错 原因分析 系统更新后&#xff0c;自动打开了Secure Boot 解决方案 方案一&#xff1a; 开机进入BIOS-》选择Security -> Secure Boot, 设置为Disabled, 保存 …

部署1panel

1Panel是一个现代化、开源的Linux服务器运维管理面板&#xff0c;它通过Web图形界面为用户提供了丰富的服务器管理功能。 Docker管理 容器管理&#xff1a;1Panel深度集成了Docker和docker-compose&#xff0c;允许用户通过Web界面轻松管理Docker容器。用户可以在1Panel中启动…

Cubase操作:就地渲染 配和弦技巧 合并多段音频 隐藏标记轨序号 删除素材池多余音频

“授人以鱼&#xff0c;不如授之以渔&#xff0c;授人以鱼只救一时之急&#xff0c;授人以渔则可解一生之需。” ​有时侯做音乐最重要的就是不要太死板和要多思考&#xff01;如果被教的只有一部分&#xff0c;只学一部分&#xff0c;有时是很难理解的&#xff0c;一些人可能只…

Servlet, Filter, Listener 启动与执行顺序

Servlet, Filter, Listener 启动与执行顺序 1、启动顺序 **Listener -> Filter -> Servlet**2、记忆口诀3、执行顺序 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java Web应用中&#xff0c;Servlet、Filter和Listener的启动与执…

QT +ffmpeg-4.2.2-win64-shared 拉取 RTMP/http-flv 流播放

拉取HTTP-FLV视频流处理逻辑&#xff1a; 1.在子线程中从流媒体服务端拉取视频流、使用ffmpeg进行解码&#xff0c;转成QImage &#xff0c;发送给主线程。 2.主线程接收QImage后在界面显示。 pro文件&#xff1a; QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT…

Driver.js——实现页面引导

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

TCP的流量控制深入理解

在理解流量控制之前我们先需要理解TCP的发送缓冲区和接收缓冲区&#xff0c;也称为套接字缓冲区。首先我们先知道缓冲区存在于哪个位置&#xff1f; 其中缓冲区存在于Socket Library层。 而我们的发送窗口和接收窗口就存在于缓冲区当中。在实现滑动窗口时则将两个指针指向缓冲区…