arduino

准备工作:购买Arduino

北城余情 提交于 2020-02-02 05:46:48
可能因为自己专业是机械,电子电路也是专业课,又加上目前的工作是编码,所以一直都想集合起来自己亲手制作机器人,虽然自己很清楚自己的专业课学的很不专业,嘿嘿。自从上次参加自由软件日,禁不住Arduino的诱惑,今天终于下手在淘宝上买了Arduino套装。 Arduino是一块基于开放源代码电路图设计的硬件,具有如下特色: 开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改!! 使用低价格的微处理控制器(ATMEGA8或ATmega168)。可以采用USB接口供电,不需外接电源。也可以使用外部9VDC输入 Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入ATmega8或ATmega168芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。 可依据官方提供的Eagle格式PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。可简单地与传感器,各式各样的电子元件连接(EX:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等) 支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing。。。等 应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。 来源: https://www.cnblogs

Arduino介绍

故事扮演 提交于 2020-02-02 05:46:14
Arduino介绍 Arduino是源自意大利的一个开放源代码的硬件项目,该平台包括一片具备简单I/O功效的电路板以及一套整合开发环境软件。Arduino可用来开发独立运作、并具互动性的电子产品,也可以开发与PC相连的周边装置,同时能在运行时与PC上的软件进行交互。 Arduino的电路板硬件可以自行焊接组装,也可以购买已组装好的成品,而整合开发环境软件则可通过网络免费下载与使用。目前Arduino的硬件部分支持Atmel的ATmega 8与ATmega 168等微控器。 此外,Arduino方案获得2006年Prix Art Electronica电子通讯类方面的荣誉奖。 Arduino的硬件电路参考设计部分是以知识共享(Creative Commons;CC)形式提供授权。相应的原理图和电路图都可以从Arduino网站上获得。 注: CC 知识共享,是一个非营利组织,也可以指一种有弹性的版权授权方式。知识共享的主要宗旨是增加创意作品的流通性及可衍生性,作为其他人据以创作及共享的基础,并寻找适当的法律以确保上述理念。 传统的著作权通常位两种极端,一端是“保留所有权利”,另一端则是“不保留任何权利”(即公有领域,public domain)。知识共享则试图在两者中间广大的灰色地带保有弹性,使得创作者可以“保留部分权利”。知识共享提供多种可供选择的授权形式及条款组合

史上最全的arduino实验集锦

♀尐吖头ヾ 提交于 2020-02-02 02:02:02
Ardinuo知识点与项目实战 (1)简易流水灯void setup() { int i=10; for(i;i<=13;i++) pinMode(i,OUTPUT);//循环一下而已} void loop() { digitalWrite(10,HIGH); digitalWrite(11,LOW); delay(200); digitalWrite(11,HIGH); digitalWrite(12,LOW); delay(200); digitalWrite(12,HIGH); digitalWrite(13,LOW); delay(200); digitalWrite(13,HIGH); digitalWrite(10,LOW); delay(200);} (2)按键控制小灯的开关const int LED=13; //声明变量 LED灯接在13针脚;const int BUTTON=7; //声明变量,按钮接在第7针脚;int val=0; //声明变量,用来存储按钮返回值HIGH或者LOW;int val_old=0;//声明变量,存储上一次按钮返回值;比对val和val_old的值,来判断按钮是按下还是抬起 //val LOW && val_old HIGHT 抬起状态;val HIGH && val_old LOW 按下状态;int state=0;//0 off

Arduino RFID-RC522模块控制

浪子不回头ぞ 提交于 2020-02-01 18:54:51
#实现功能: 利用RFID-SimpleHexDec分别读取卡片信息,并利用所记录的卡片信息点亮其所对应的LED灯 【图中为我实验时所举的例子,你可以选择不同的LED进行点亮】 #原理图:原理图这里线路布线有交叉,但是是没有实心圆点,所以是可以的) 接线图: #在这里插入代码片 #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9//重置 #define light_B 8 #define light_A 7 #define light_O 6 MFRC522 rfid(SS_PIN, RST_PIN); //实例化类 // 初始化数组用于存储读取到的NUID byte nuidPICC[4]; void setup() { Serial.begin(9600); SPI.begin(); // 初始化SPI总线 rfid.PCD_Init(); // 初始化 MFRC522 pinMode(light_A,OUTPUT); pinMode(light_B,OUTPUT); pinMode(light_O,OUTPUT); } void loop() { // 找卡 if ( ! rfid.PICC_IsNewCardPresent()) return; // 验证NUID是否可读 if

手机控制通过蓝牙控制arduino

血红的双手。 提交于 2020-01-30 21:25:55
//这是从站代码,LED灯正极串联一个1K电阻,负极接Arduino的P13脚 # include <SoftwareSerial.h> // 引用BT函数库 SoftwareSerial BT ( 2 , 3 ) ; // 接收脚,传送脚 char val , _val ; // 存储接收的值 //int val; const byte LED_PIN = 13 ; // 定义LED引脚 void setup ( ) { Serial . begin ( 9600 ) ; // 设定蓝牙模块初始波特率 BT . begin ( 9600 ) ; //波特率9600,否则乱码 pinMode ( LED_PIN , OUTPUT ) ; } void loop ( ) { // 若收到值,则送到串口监视窗 if ( BT . available ( ) ) { val = BT . read ( ) ; if ( val == 'b' ) { digitalWrite ( LED_PIN , LOW ) ; // 回应命令发送端,开灯 Serial . println ( "Serial LED OFF--" ) ; BT . println ( "LED ON" ) ; } else if ( val == 'a' ) { digitalWrite ( LED_PIN ,

arduino(1):使用esp8266做开发板子,使用arduino进行开发,点亮led灯

戏子无情 提交于 2020-01-30 15:47:58
目录 前言 1,关于arduino 2,下载安装arduino 3,总结 前言 相关arduino 全部分类: https://blog.csdn.net/freewebsys/category_8799254.html 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/104114070 未经博主允许不得转载。 博主地址是: http://blog.csdn.net/freewebsys 1,关于arduino 之前 折腾了下 micropython ,也是一个不错的平台,折腾起来也很方便。可以进行RPEL的方式进行测试开发。 但是发现上面的lib库还是很少,平台也算是小众了点。而且上面的源代码都看到了。 也不算是太安全,自己玩玩还是可以的,要是做成个商用的,还是不太行。 调研了下 tinygo,也是不错的可以使用golang 的语言进行开发,但是也是比较新的项目。 不支持 esp8266 esp32 等,比micropython 更小众。 看来还是 arduino 比较大众,可以直接支持 esp8266 的板子。 参考文章: https://blog.csdn.net/qq_41470744/article/details/89406964 2,下载安装arduino 我的操作系统是 xubuntu 系统

use a macro to show the stringified content of a macro

守給你的承諾、 提交于 2020-01-30 11:56:07
问题 I am writing code for an Arduino. The code starts to get long so I want to use some debugging macros, and to be able to show some debugging information on serial port. For example, I have some macros to define which serial ports I use: #define SERIAL_GPS Serial1 #define SERIAL_IRIDIUM Serial2 #define SERIAL_VN100 Serial3 How can I write a macro to show the ports I use for each one? I.e. some macro that would print on a debug serial port: Port for GPS: Serial1 Port for Iridium: Serial2 Port

ROS与Arduino:利用CMake编译代码并上传到arduino

梦想的初衷 提交于 2020-01-29 17:56:25
为什么要利用CMake编译代码并上传到arduino? 当需要开发大点的软件项目,Arduino IDE对代码的管理就变得比较笨拙。 如果你经常想要从命令行或能自动完成的eclipse编译代码 最后你可以通过rosserial_client的CMake基础架构,你利用ROS buildfarm构建和分发固件 这个blog只说一个简单的示例。 老样子,给大家我整理好的包: 下载地址 1. 创建工作空间等,此处略 在catkin工作空间下src目录下 $ cd ~/catkin_ws_cmake/src/ $ catkin_create_pkg helloworld rosserial_arduino rosserial_client std_msgs 使用catkin_create_pkg创建helloworld包,依赖rosserial_arduino(需要Arduino的工具链)和rosserial_client(客户端库生成macros),最后打算使用std_msgs/String,需要依赖std_msgs。 2. 在helloworld包,建立firmware/chatter.cpp,复制粘贴如下示例代码内容: # include <ros.h> # include <std_msgs/String.h> //Arduino.h头文件,它包含了所有的Arduino函数

Arduino和DS3231实时时钟教程

最后都变了- 提交于 2020-01-25 09:23:58
在本Arduino教程中,我们将学习如何使用DS3231实时时钟模块。您可以观看以下视频或阅读下面的书面教程。 Arduino和DS3231实时时钟教程 概述 这里出现的第一个问题是,当Arduino本身内置计时器时,为什么我们实际上需要为Arduino项目使用单独的RTC。 原因是即使我们对微控制器重新编程或断开主电源,RTC模块也可以依靠电池运行,并且可以跟踪时间。 DS3231实时时钟 DS3231是一款低成本,高精度的实时时钟,可以维护小时,分钟和秒,以及日,月和年的信息。此外,它还可以自动补偿闰年和少于31天的月份。 该模块可以在3.3V或5V电压下工作,使其适用于许多开发平台或微控制器。电池输入为3V,典型的CR2032 3V电池可以为模块供电,并可以将信息保存一年以上。 该模块使用I2C通信协议,这使得与Arduino开发板的连接非常容易。 这是电路原理图: 图略 因此,我们只需要4根线,即为模块供电的VCC和GND引脚,以及两个I2C通信引脚SDA和SCL。 程式设计 连接模块后,我们需要对Arduino开发板进行编程以与实时时钟配合使用。 但是,在对Arduino和I2C模块之间的通信进行编程时,代码并不那么简单。 幸运的是,DS3231 RTC已有多个库,可以在互联网上找到它们。 因此,一旦我们下载并安装了库,就可以使用其第一个演示示例来初始激活RTC模块的时钟

Shifting bytes and remaining values casted to int (interested in two's complement)

徘徊边缘 提交于 2020-01-25 07:15:09
问题 Why does the code that you see below give these results? void loop() { byte test = 00000101; Serial.print("The byte test is: "); Serial.println(test); int x = (int)test; int y = (int)test<<8; Serial.print("The int x is: "); Serial.println(x); Serial.print("The int shifted y is: "); Serial.println(y); byte tost = 10000001; int z = test + tost; Serial.print("The int z is: "); Serial.println(z); delay(1000); } Results : The byte test is: 65 The int x is: 65 The int shifted y is: 16640 The int z