天道酬勤,学无止境

Arduino - 处理以保存和显示数据(Arduino - Processing to save and display the data)

问题

我的 Arduino 代码:

#include<EngduinoThermistor.h>
void setup()
{
  Serial.begin(9600);
  EngduinoThermistor.begin();
}void loop()
{
  float temp;
  temp = EngduinoThermistor.temperature();
  Serial.println(temp);
  delay(1000);
}

我的处理代码:

 import processing.serial.*;
    Serial port;
    float x = 0;


    void setup() {
      size(500, 400);
      println(Serial.list());
      String portName = Serial.list()[0];
      port = new Serial(this, "/dev/tty.usbmodem1411", 9600);
    }


    void draw() {
    }

    void serialEvent(Serial port) {
      float inByte = port.read();
      println(inByte);
      stroke(90, 76, 99);
      line(x, height, x, height - inByte); 
      if (x >=width) {
        x=0;
        background(200);
      }
      x++;
    }

我已经非常努力地理解处理,但我仍然不明白如何根据 arduino 发送的数据绘制图形。 我认为我主要遇到的问题是线路部分。 我不知道如何画一条连接前一个点和新点的线。

但总的来说,问题甚至不起作用......问题在哪里:(?

回答1

很难回答一般的“我该怎么做”类型的问题。 Stack Overflow 是为更具体的“我试过 X,期望是 Y,但得到了 Z”类型的问题而设计的。 话虽如此,我会尽量提供一般意义上的帮助:

将您的问题分解为更小的步骤。

暂时忘记 Arduino。 您能否创建一个小示例草图,显示基于一些硬编码数据的图形? 先让它工作。

当您开始工作时,请尝试将您的图形基于硬编码值以外的其他内容。 也许尝试随机值,或基于鼠标位置的值等。重点不是连接你的 Arduino,而是让动态图工作。

与此分开,获取另一个基本示例草图,该草图忽略图形并仅连接到 Arduino。 将您从 Arduino 获得的值打印到控制台。

最后,当您让所有这些单独工作时,将它们连接起来以创建基于来自 Arduino 的数据的图形会更容易。

如果您卡在其中一个步骤上,您可以发布一个 MCVE 以及一个特定的问题。 祝你好运。

回答2

根据 Engduino 热敏电阻文档(pdf 链接),该值是一个浮点数。

因为您使用println()发送值,所以有一个换行符 ( '\n' ) 与浮点值一起发送。 这实际上与 Pr​​ocessing Serial 的 bufferUntil() 函数结合使用非常有用。

缺少的主要成分实际上是从接收到的字符串中解析float 。 这是一个基本的转换示例:

String temperatureString = "37.5";
float temperatureFloat = float(temperatureString);

您可以使用 Serial 的 readString() 获取字符串,然后使用 trim() 删除空格,最后将其转换为浮点数:

temperature = float(port.readString().trim());

检查转换是否成功也是一个好主意:

if(!Float.isNaN(temperature)){
       println("read temperature",temperature);
       x++;
     }

总的来说,检查错误是个好主意,所以这里有一个执行上述操作并检查串行端口和注释的版本:

import processing.serial.*;
//serial port
Serial port;
//x position of current value on graph
float x = 0;
//current temperature reading
float temperature;

void setup() {
  size(500, 400);
  background(200);

  String[] portNames = Serial.list();
  println(portNames);
  String portName = "not found";
  //loop through available serial ports and look for an Arduino (on OSX something like /dev/tty.usbmodem1411)
  for(int i = 0 ; i < portNames.length; i++){
    if(portNames[i].contains("tty.usbmodem")){
      portName = portNames[i];
      break;
    }
  }
  //try to open the serial port
  try{
    port = new Serial(this, portName, 9600);
    //buffer until new line character (since values are send via println() from Arduino)
    port.bufferUntil('\n');
  }catch(Exception e){
    System.err.println("Arduino port " + portName);
    e.printStackTrace();
  }
}


void draw() {
  //draw graph
  stroke(90, 76, 99);
  //you might want to map the temperature to sketch dimensions)
  line(x, height, x, height - temperature); 
  if (x >=width) {
    x=0;
    background(200);
  }
}

void serialEvent(Serial port) {
  try{
    //read the string, trim it (in case there's a '\n' character), then convert it to a float
     temperature = float(port.readString().trim());
     //check if the float conversion was successfull (didn't get a NaN value)
     if(!Float.isNaN(temperature)){
       println("read temperature",temperature);
       x++;
     }
  }catch(Exception e){
    System.err.println("error parsing value from serial port");
    e.printStackTrace();
  }
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何让Arduino运行脚本(How to make Arduino run a script)
    问题 我是一名软件开发人员,但我是 Arduino 和电子世界的新手。 我想构建一个将两者结合起来的简单项目,并且非常感谢任何从哪里开始的帮助。 最终项目应该是带有按钮和 LED 的 Arduino,当点击按钮时我想在我的 mac 上运行一个脚本,然后如果脚本成功完成我想打开 LED 我已经看过一些关于如何使用按钮和 LED 的教程,所以我在这里感兴趣的主要事情是如何从 Arduino 通信到 mac,反之亦然。 尤其是如何让它在我的 mac 上运行脚本。 回答1 您应该查看 Serial 类和示例(通过File > Examples > Commmunication ) 您需要在 Arduino 端编写一些代码,以便在按下按钮时通过串行发送数据(以便您可以触发脚本)并接收数据(脚本完成后)以控制 LED。 这是 Arduino 方面的一个粗略示例: const int btnPin = 12;//button pin const int ledPin = 13; int lastButtonState; void setup(){ //setup pins pinMode(btnPin,INPUT_PULLUP); pinMode(ledPin,OUTPUT); //setup communication Serial.begin(9600); } void loop() {
  • Netbeans 中的 Arduino(处理)库和控制(Arduino (processing) Library in Netbeans and control)
    问题 我正在尝试控制 4 个 LED 并从 4 个触点获取模拟输入。 程序是用java编写的,所以为了获得arduino的功能,例如AnalogRead()和设置一个LED的高或低,导入处理库让程序使用这些功能吗? 我还想知道,如果程序会自己转移到 arduino,还是 java 程序只会从引脚中提取数据? 回答1 更新:我的建议是首先尝试自己将 Arduino 与 Processing 进行通信。 这就是我在下面描述的。 如果您想直接使用 Processing 直接控制 Arduino,Binary Nerd 提供的链接是您入门的最佳选择。 更新 2 :也试试这个链接:Netbeans and Processing Arduino 代码在 Arduino 上运行,而 Processing 代码在您的计算机上运行。 如果你想通过 Processing 来控制你的 Arduino,你很可能会使用串口,​​并创建两个程序。 一个,在 Arduino 上,可能会接收命令并执行操作(打开或关闭 LED),或者发回答案。 另一个在处理中,可能会向 Arduino 发送必要的命令并以某种方式处理它的答案。 这是我为一个 LED 和一个模拟输入制作的快速示例。 这是未经测试的代码。 按照步骤。 一旦成功,您可以尝试在 Netbeans 中直接将 Processing 与 Arduino 一起使用
  • 【Arduino】Arduino IDE使用教程-超详细
    本篇文章可以结合上一篇【Arduino】一天入门Arduino语言 教程 学习Arduino语法,以及Arduino IDE的使用,让你最快的掌握Arduino 文章目录 Arduino IDE使用教程Arduino IDE安装配置Arduino IDEArduino IDE 使用详解文件栏编辑栏项目栏工具栏帮助栏 Arduino IDE使用教程 Arduino是创客、业余爱好者和专业人士的平台,可轻松创建微控制器项目。只需要USB连接,这些设备可以通过简单易用的程序轻松编程。由于Arduino IDE提供了广泛的库,因此复杂的部件(如显示器、传感器)以及软件平台(如Adafruit IO)易于使用。 Arduino IDE是什么? IDE(Integrated Development Environment),译为集成开发环境,相当于编辑器编译器加连接器+其他。Arduino IDE就是Arduino团队提供的一款专门为Arduino设计的编程软件,使用它,我们便能将程序从代码上传至Arduino主板。 本篇文章我们来详细的讲解下Arduino IDE 的使用 首先会介绍基于Arduino IDE实现一个点灯的基本流程 之后我们会介绍Arduino IDE的各个配置的用法及作用 Arduino IDE安装 先到 Arduino 官方网站上下载最新版本的 Arduino IDE:
  • 处理代码“错误,在 Arduino 中禁用_serialEvent()(Processing Code "Error, disabling_serialEvent() in Arduino)
    问题 尝试运行我的 arduino 和 Processing 时收到此错误 Error, disabling serialEvent() for /dev/cu.usbmodem1451 null 我在 MAC OSX 10.9.5 上运行进程 2 和 Arduino 1.6.5 我是处理和 arduino 的超级新手。 我只是想用三个电位器来控制背景颜色的 RGB 值。 Arduino代码: int potPin = 0; //int potPinB = 1; //int potPinC = 2; void setup() { Serial.begin(9600); } void loop() { int val = map(analogRead(potPin), 0, 1023, 0, 255); Serial.println(val); delay(500); //int valB = map(analogRead(potPinB), 0, 1023, 0, 255); //Serial.println(valB); //delay(50); //int valC = map(analogRead(potPinA), 0, 1023, 0, 255); //Serial.println(valC); //delay(50); } 处理代码: import processing
  • 快速串行端口从处理写入 Arduino(Rapid Serial Port writing to Arduino from Processing)
    问题 我需要一些帮助来加快写入串行的速度。 我发现了一些与此类似的问题,但没有涉及处理语言或 Java,所以我希望有人能帮助我解决这个问题。 编辑 正如约翰在下面指出的那样,串行似乎不够快,无法以我想要的速度发送这么多数据。 有谁知道其他可用的 arduino 接口? 结束编辑 我正在使用 arduino 来控制我连接的 400 个 RGB LED 的网格。 为了向 arduino 发送命令,我在 Processing 中编写了一个小程序,该程序操作一个代表 LED 的大型数组。 然后,我试图通过串行以 115200 波特每 20 毫秒向 arduino 发送 800 字节数据来更新网格。 每 20 毫秒调用一次的处理代码是: noStroke(); int dataPos = 0; // position in LED data array byte[] dataLedGrid = new byte[400*2]; // array for bytes to send for(int j=0; j<LEDS_TALL; j++) { for(int i=0; i<LEDS_WIDE; i++) { int pos = j*20+i; int r = ledGrid[LEDS_WIDE-i-1][LEDS_TALL-j-1][0], g = ledGrid[LEDS_WIDE-i
  • 使用 Arduino 和 GSM shield 以及 Parse REST API 将数据上传到 Parse.com(Upload data to Parse.com using Arduino and GSM shield and Parse REST API)
    问题 我正在尝试使用带有 GSM 扩展板的 Arduino 使用他们的 REST API 通过 GPRS 将传感器数据发布到 www.parse.com。 这是他们的文档显示需要完成的方式: curl -X POST \ -H "X-Parse-Application-Id: gmOpYot0OhWGnkMojjZv9KYUHMySCSeTGyyplArZ" \ -H "X-Parse-REST-API-Key: XQMA4Wd3SQdOsxudtKz5OdbPaVN3YE9aOKx0VSh2" \ -H "Content-Type: application/json" \ -d '{"Level":90, "Temp":25}' \ https://api.parse.com/1/classes/PercentFull 我需要在 Arduino 草图中以某种方式实现它。 这是我的起点,因为它包括我的盾牌使用的库。 此示例草图连接到 Google 并显示结果。 我已经测试过它并且它有效。 #include "SIM900.h" #include <SoftwareSerial.h> #include "inetGSM.h" //#include "sms.h" //#include "call.h" //To change pins for Software Serial, use
  • Bash、串行 I/O 和 Arduino(Bash, serial I/O and Arduino)
    问题 所以,我有点不知所措,我觉得我已经非常接近解决方案了,但它还没有完全奏效。 这是我的情况: 我正在使用 Arduino 微控制器,我正在尝试编写两个 Bash 脚本(现在在 Mac OS X 10.6 中运行),它们将 (a) 将来自 Arduino 单元的所有串行数据打印到标准输出,并且(b) 允许我向 Arduino 单元发送串行数据。 然后将使用 Adob​​e AIR 的 NativeProcess API 调用这些脚本,以实现 Arduino 单元和 Flex Adob​​e AIR 应用程序之间的紧密集成。 我的两个脚本非常简单—— 这是我的 WriteToSerial.sh 脚本: echo $1 > $2 ($1 显然是我的字符串,$2 是串口的位置——目前是 /dev/tty.usbserial-A800eIUj) 这是我的 ReadSerialOutput.sh 脚本: tail -f $1 ($1 是我的串口位置,目前是/dev/tty.usbserial-A800eIUj) 当我调用这些脚本中的任何一个时(或者即使我只是直接在 Bash 控制台中输入命令),我的计算机就会挂起 - 我可以输入字符,但是在我Ctrl + C退出该过程之前什么也没有发生。 但是,如果我打开 Arduino IDE 并打开串行监视器,然后tail -f端口,关闭串行监视器
  • 第一节课“开发环境的搭建和驱动安装 arduino hc340 以及点亮我们的板载LED小灯”
    第一节课“开发环境的搭建和arduino CH340驱动安装以及点亮板载13号LED小灯” (一)什么是arduino?(二)Arduino开发环境的搭建(三)新建工程(四)编辑我们的第一个程序——点亮我们的板载LED灯13号引脚LED灯亮灭的程序编写 ) (一)什么是arduino? 什么是 Arduino?相信很多读者都会有这个疑问,甚至有人认为手中的开发板就是 Arduino。维基百科上说“, Arduino是一块单板的微控制器和一整套开发软件,它的硬件包含一个以ATMELAVR 单片机为核心的开发板和其它各种I/O板;软件包括一个标准编程语言开发环境和在开发板上运行的烧录程序。” Arduino 项目起源于意大利,该名字在意大利中是男性用名,意思为“强壮的朋友”,作为一个专有名词,Arduino 总是以首字母大写的形式出现。Arduino 最初是为一些非电子工程专业的学生设计的,因其开源、廉价、简单易用等特点,一经推出便迅速受到到广大电子爱好者的喜爱和推崇。几乎任何人,即便不懂电脑编程,利用这个开发板也能做出炫酷有趣的东西。 Arduino 是一个嵌入式计算机开发平台,可以通过硬件和软件与周围环境进行互动,例如,你可以用Arduino 制作一个简单的延时照明灯,让一个按钮和一盏小灯与Arduino相连,Arduino一直处于等待按钮按下的状态,一旦按钮被按下
  • 清除终端屏幕?(Clearing the terminal screen?)
    问题 我正在为我的机器人读取来自 9 个不同传感器的数据,我需要在同一个窗口中稳定地显示它们,以便我可以比较这些值并查看是否有任何读数关闭。 我在 Serial.print 和 lcd.print 中遇到的问题是这些值一直在移动,我在移动机器人时无法真正仔细查看它们。 我想在显示其他任何东西之前调用类似 Serial.clear() 的东西,这只会让事情稳定在一个地方,只改变值。 到目前为止,我发现 Serial.print(17,BYTE) 不再受支持(调用 ESC 键)。 所以......对于那些有更多Arduino经验的人......这样做的正确方法是什么? 回答1 Arduino 串行监视器不是常规终端,因此无法使用标准终端命令清除屏幕。 我建议使用实际的终端模拟器,比如 Putty。 清除终端屏幕的命令是 ESC[2J 要在 Arduino 代码中完成: Serial.write(27); // ESC command Serial.print("[2J"); // clear screen command Serial.write(27); Serial.print("[H"); // cursor to home command 来源: http://www.instructables.com/id/A-Wireless-Controlled-Arduino
  • Arduino+Avr libc制作Badusb原理及示例讲解 | 长文含视频
    泥壳安全 FreeBuf * 原创作者:泥壳安全,本文属FreeBuf原创奖励计划,未经许可禁止转载一、 前言2014年美国黑帽大会上研究人员JakobLell和Karsten Nohl展示了badusb的***方法后,国内与badusb相关的文章虽然有了一些,但是大部分人把相关文章都阅读后还是会有种“不明觉厉”的感觉,badusb仍有一层朦胧的面纱。经过一段时间的学习和研究后,笔者希望通过自己的一些心得体会可以帮助其他人更清晰地认识badusb,也希望这篇文章能够起到一定的启发。这篇文章主要分为五个部分——知识扫盲部分、badusb固件编写部分、badusb配置界面部分、技术展望部分和总结部分。二、硬件准备本文使用的硬件是Arduino Leonardo开发板,但是不难将Leonardo开发板替换为其它Arduino开发板。三、知识扫盲1. 虽然USB协议有一定的漏洞,但是不是任何USB设备都能制作badusb的。制作badusb有两个核心,一个是能够为USB设备编写相应的固件,另一个是能够将编写的固件烧录到USB设备中。要编写相应的固件就需要掌握USB设备中微控制器(或者说芯片)的指令规范文档(如果Intel不提供开发文档,那么除了Intel自己没有人能为Intel处理器编写程序);而要将固件烧录到USB设备中,要么使用相应的硬件编程器
  • 使用 Java 打开 Arduino 上的 LED(Turn on the LED on Arduino with Java)
    问题 我安装了 Java 串行 RXTX 库并正确设置了我的 Arduino。 我什至已经启动并运行了示例代码,但我似乎无法理解如何访问不同的 Arduino 引脚以打开 LED。 如何使用 OutputStream 或任何其他方式访问引脚? 我是否需要向流发送一些特殊的东西才能告诉它特定的引脚? 回答1 开箱即用的 Arduino 不提供任何方式来控制来自串行链路的 I/O 端口。 您需要获取或编写一个程序,该程序在 Arduino上运行并侦听来自串行端口的命令以控制 I/O 引脚。 由于 Arduino 上只有一个小型微控制器,因此您可能无法用 Java 编写此程序。 这是一个在 Arduino 上运行的示例程序,它通过串行线路读取以十进制 ASCII 字符拼写的数字,然后使用这些数字来控制 RGB LED。 您应该能够使用此示例来了解如何解决问题的 Arduino 方面,并且您的 Java RXTX 代码可以在它工作后发送整数来控制它。 http://arduino.cc/en/Tutorial/ReadASCIIString 回答2 我不确定我的代码的可读性如何,或者安装它有多容易,但我写了一个小项目通过 RXTX 与 Arduino 对话。 你可以在这里看到我的代码: https://github.com/p90puma/SerialToIR 它应该给你一些想法。
  • Arduino编译的hex文件在哪里?(Where are the hex files compiled by Arduino?)
    问题 Arduino IDE在Mac OS X上的哪里保存二进制文件? 回答1 在Arduino软件中:转到“文件” -> “首选项” ,然后选择“在->编译期间显示详细输出” 。 最后,当您进行编译时,该程序将为您显示大量数据。 在最后几行,您将找到.hex文件的路径1 。 1每次路径改变! 回答2 Arduino 1.6.5有一个新命令:在“ Sketch菜单下,选择“ Export compiled Binary Show Sketch Folder ,然后选择“ Show Sketch Folder 。 在那里。 回答3 Arduino IDE使用mktemp命令在Mac和Linux上创建temp目录。 但是,在Mac上,默认的$ TMPDIR env var不是/ tmp /,就像在Linux上一样。 在Mac上,它位于/ var / folders下,它是在引导时随机生成的。 这使事情有些复杂,但是您可以将以下技巧添加到工具箱中(作为别名,函数,shell脚本等),以帮助您找到所需的内容。 查找十六进制文件 find $TMPDIR -name \*.hex -exec ls -lrt {} \; #<-- you need that backslash before and space after the semicolon 查找构建目录 ls -ldrt
  • Arduino Nano 驱动OLED滚动显示
    尽管Uno R3开发板是Arduino家族中入门级别的首选,但无奈它的体积实在有些大,我们实际中很多设计都需要考虑外形结构,小巧便捷而又功能齐全的Arduino Nano开发板就脱颖而出了。本篇我们使用Arduino Nano开发板来驱动0.91寸OLED滚动显示。 1. Arduino Nano开发板 Arduino Nano开发板是基于ATmega328的小巧且完整的Arduino系列开发板,兼容Arduino程序,你可以在官网找到它的详细资料。 它的主要特点如下: 微控制器:ATmega328工作电压:5VFlash:32KB,其中2KB用于引导程序SRAM:2KB时钟速度:16M模拟输入引脚:8个EEPROM:1KBIO引脚电流:40mA数字IO:22个(其中6个是PWM) 2. 0.91寸OLED 前面的章节中已经对0.96寸OLED进行了讲解,本篇我们使用0.91寸OLED屏,也是IIC通讯方式。其驱动芯片跟0.96寸OLED屏一样,都是SSD1306,区别在于0.96寸OLED为128x64个像素点,而0.91寸OLED则有128x32个像素点。 3. 实验材料 Naon开发板配套USB数据线0.91寸OLED屏杜邦线 4. 实验步骤 1. 根据原理图搭建电路图。 OLED屏的VCC、GND分别连接Nano开发板的3.3V、GND。OLED屏的SDA
  • AVR 和 Arduino 之间的区别/关系是什么?(What's the difference/relationship between AVR and Arduino?)
    问题 最近对硬件编程很感兴趣,但是还没开始。 我做了一些搜索工作,并有一个模糊的想法: Arduino 是芯片和面包板的组合。 AVR是单芯片,需要买面包板才能上手。 这个说法是真的还是假的? 回答1 AVR 只是一个集成电路微芯片,由 Atmel 制造。 它看起来像这样: 虽然它们可以自己使用,但需要一些硬件经验和一些支持组件。 Arduino 是运行特殊代码的 AVR 处理器,可让您使用 Arduino 环境轻松编程和上传代码。 您只需要一根 USB 电缆即可对其进行编程和通信。 它看起来像这样: (来源:mitchellpage.com.au) 从技术上讲,面包板看起来像这样,并且有助于使用 Arduino 做事。 两种解决方案都不一定需要它,但它很有用。 如果您提出此类问题,您应该查看 adafruit 上的 Arduino 教程。 它们非常基础,将教您入门所需的知识。 回答2 AVR 是一种处理器架构。 它是处理器应该如何像 x86 和 ARM 一样工作的设计。 Atmel 通过 ATTiny、ATMEGA 等产品销售具有 8 位、16 位和 32 位架构的 AVR 架构的硬件。 Arduino 出售的板子旨在供业余爱好者在对底层硬件知之甚少的情况下快速组装一些东西。 这些板子中通常有 ATMEGA。 如果您不熟悉这种“硬件”级别的编程,我建议您购买 arduino 板。
  • arduino学习笔记一 初识
    什么是arduino? 要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。 Arduino是一个能够用来感应和控制现实物理世界的一套工具。 它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序 的开发环境组成。Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。 什么是单片机?它与个人计算机有什么不同?一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。单片机有什么用
  • 用arduino 做一个万年历
    每月下旬的四到五天有一个工作量的低谷期,利用这段时间,我们再折腾一下arduino。这次我们做一个万年历。一、所需材料根据我们就地取材的原则,这次我们还是要充分利用现有材料:材料表:1、一个带I2C的LCD1602显示屏,用于显示日期、时间、星期等信息。之所以要用带I2C的屏,是因为单独的LCD1602需要接12条线,除了VVC和GND外,占6个接口,而且还需要一个10K的电位器来调整屏的亮度,而使用带I2C的,一共有四条线就足够了一条VVC,一条GND,一条SDA,一条SCL,而且自带调节屏幕亮度的电位器。能让我们的万年历系统简洁不少。 2、一块arduino nano单片机。其它版本的也行,我一直用nano不是l因为我喜欢它,主要是上次一次买了五个,一直在杂物盒时放着。3、一个DS3231时钟模块,用来为arduino提供时钟。我用的是DS3231。这是一款高精度I2C实时时钟模块,带一个纽扣电池,用于在系统掉电时能够保存时间信息。这个模块具有集成的温度补偿晶体振荡器。它的寄存器能保存秒、分、时、星期、日期、月、年和闹钟设置等信息。还有月末日期和闰年补偿。时钟的工作格式为24小时或带AM/PM指示的12小时格式。我们的万年历需要从DS3231中取出年、月日、星期、时、分、秒及温度数据。4、一个小喇叭,用来为闹钟发声用,这是我从一个旧收音机上拆下来的。5
  • 【Arduino】一天入门Arduino语言 教程
    一天入门Arduino语言 教程 为什么要写这个文章 为了让有一定编程基础和开发经验的同学能够快速的上手 Arduino 同时Arduino 新手也可以借此巩固下知识 如果你有过类似 51 STM32 NXP 等开发经验,根据本篇文章,可以快速的了解并上手Arduino ,同时对于Arduino新手而言,可以有一个系统的学习。 可结合IDE介绍博客一起学习,更好的掌握Arduino Arduino IDE使用教程-超详细 文章目录 Arduino语言C语言基础部分判断语句:语法符号运算符:数据类型:常量和变量: Arduino 语言部分Arduino结构Arduino I/O函数模拟 I/OArduino 时间函数Arduino数学函数Arduino三角函数Arduino 随机数函数Arduino外部中断函数Arduino串口收发函数Arduino语言库文件Arduino 内部集成电路I2C Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言。早期的Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新的Arduino核心库采用C与C++混合编写而成。 通常我们说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口
  • Arduino课程:02.数据类型及条件语句
    2.1 课程说明 今天制作一期人机互动的例子带给大家:用按钮控制LED。将开关作为延时开关来使用,按下开关后1秒钟,灯才会亮,灯亮5秒后才熄灭,这样大家就能依据这个例子,自己延伸出很多好玩的玩法出来。通过案例学习变量、运算符、条件语句三种语法知识。 2.2. 器材: 名称 数量 规格 Arduino uno控制板 1 R3 按钮开关 1 蓝色LED 1 2.3. 重点器材介绍 开关:有按键式、滑动式、微动型,除了尺寸和外型不同,开关可分成: 常开(normal open,简称N.O):接点平常是不相连的,按下去之后才导通。 常闭(normal close):接点平常是导通的开关也是传感器,微动开关(鼠标);极限开关(光驱的托盘);磁簧开关;水银开关。 2.3. 电路: 2.4 条件语句 形式1 if (expression)statement;如果你有一个语句,你可以使用没有大括号{}的if语句。 形式2 if (expression) {Block of statements;} 形式3 if ... else语句语法if (expression) { Block of statements; }else { Block of statements; } 2.5 改变程序流程的if条件式 -比较运算符 比较运算符 说明 == 如果两者相等则成立,请注意,这要写成两个连续等号
  • arduino在Proteus仿真软件上的仿真配置问题
    Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。 Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如
  • Arduino Sketch上传问题-avrdude:stk500_recv():程序员未响应(Arduino Sketch upload issue - avrdude: stk500_recv(): programmer is not responding)
    问题 我有一个带有ATmega328的Arduino Duemilanove。 我正在使用Ubuntu 12.04(精确的穿山甲),而Arduino IDE的版本是1.0。 最近,我尝试将一些示例草图上传到其上,例如“眨眼”草图。 但是,我的任何尝试都无济于事,每次尝试都会导致相同的错误: avrdude:stk500_recv():程序员没有响应。 我已经在菜单Tools → Serial Port下启用了/dev/ttyUSB0 。 我还从列表中选择了正确的板卡(Duemilanove和ATmega328)。 但是,我无法解决该问题。 我也已经在网上搜索过,对于这个问题,没有其他答案对我有用。 为什么我遇到此问题以及如何解决? 我还尝试过旋转车载ATmega并朝另一个方向安装它。 现在,我在上传时没有遇到任何问题,但是之后没有任何反应。 板载LED似乎也没有闪烁。 回答1 我的Crowduino在OS X上运行Arduino IDE时遇到了这个问题。对我来说,解决方案是在上传过程中打开详细输出(在Arduino IDE首选项窗格中)。 然后,在上载时,您可以看到AVRDUDE发送了三个数据包avrdude avrdude: Send: 0 [30] [20] (板上有相应的RX闪烁), avrdude: ser_recv(): programmer is not