智能垃圾分类机器人课件.pptx

上传人:小** 文档编号:23565523 上传时间:2021-06-09 格式:PPTX 页数:30 大小:4.47MB
返回 下载 相关 举报
智能垃圾分类机器人课件.pptx_第1页
第1页 / 共30页
智能垃圾分类机器人课件.pptx_第2页
第2页 / 共30页
智能垃圾分类机器人课件.pptx_第3页
第3页 / 共30页
点击查看更多>>
资源描述
2 01A什么是Arduino? 02 BArduino能做什么?03CArduino怎么用? 一 、 Arduino的 由 来 Arduino创 始 人 Massimo Banzi之 前 是 意 大 利 Ivrea一 家高 科 技 设 计 学 校 的 老 师 。 他 的 学 生 们 经 常 抱 怨 找 不 到 便宜 好 用 的 微 控 制 器 。 2005年 冬 天 , Massimo Banzi跟 David Cuartielles讨论 了 这 个 问 题 。 David Cuartielles是 一 个 西 班 牙 籍 晶片 工 程 师 , 当 时 在 这 所 学 校 做 访 问 学 者 。 两 人 决 定 设 计 自 己 的 电 路 板 , 并 引 入 了 Banzi的 学 生David Mellis为 电 路 板 设 计 编 程 语 言 。 两 天 以 后 , David Mellis就 写 出 了 程 式 码 。 又 过 了 三 天 , 电 路 板 就 完 工 了 。 这 块 电 路 板 被 命 名 为 Arduino。 二 、 什 么 是 Arduino? Arduino 是 一 种 开 源 的 电 子 开 发 平 台 , 该 平 台最 初 主 要 基 于 AVR 单 片 机 的 微 控 制 器 和 相 应 的开 发 软 件 , 目 前 在 国 内 正 受 到 电 子 发 烧 友 的 广泛 关 注 。 自 从 2005 年 Arduino 腾 空 出 世 以 来 , 其 硬 件和 开 发 环 境 一 直 进 行 着 更 新 迭 代 。 几 乎 任 何 人 , 即 便 不 懂 电 脑 编 程 , 利 用 这 个开 发 板 也 能 用 Arduino 做 出 炫 酷 有 趣 的 东 西 , 比 如 对 感 测 器 探 测 做 出 一 些 回 应 、 闪 烁 灯 光 、控 制 马 达 等 。 三 、 Arduino能 做 什 么 ?最 简 单 应 用 :通 过 Arduino开 发 板 引 脚 输出 高 电 平 点 亮 一 盏 LED灯 。 三 、 Arduino能 做 什 么 ?利 用 Arduino板 作 为 中 央 控 制 器实 现 家 居 智 能 化 , 语 音 口 令 开灯 、 开 空 调 , 随 着 室 内 光 线 环境 自 动 调 节 亮 度 , 手 机 APP控 制家 用 电 器 等 让 你 的 arduino连 入 物 联网Arduino高 端 应 用 乐 为 联 网 云 数 据 平 台 四 、 认 识 Arduino开 发 板 - Arduino UNO 四 、 认 识 Arduino开 发 板 - arduino Mega2560 五 、 Arduino开 发 环 境 Arduino的 编 程 是 在 Arduino IDE上 进 行 的 , 如 左 图 编 程 界 面 所 示 ; 开 发 环 境 提 供 了 最 基 本 的 模 板 ,包 含 了 setup()函 数 和 loop()函 数 ; 在 setup()函 数 上 方 空 白 区 域 , 可以 插 入 需 要 用 到 的 函 数 .h头 文 件以 及 申 明 要 用 到 的 函 数 。 六 、 函 数 的 概 念定 义 : 函 数 是 一 种 能 完 成 某 种 特 定 功 能 二 端 口 通 道 , 通 过 输 入 合 适 的 东西 获 得 想 要 的 某 种 输 出 ;举 例 : 例 如 数 学 上 y=2x, 这 条 函 数 可 以 完 成 将 输 入 值 翻 倍 这 样 一 个 工 作 ;注 意 : arduino提 供 了 大 量 的 基 础 函 数 , 包 括 I/O控 制 、 时 间 函 数 、 中 断 函 数 、 串 口通 信 函 数 等 ; arduino也 提 供 了 许 多 关 于 这 些 基 础 函 数 的 实 例 程 序 , 这 些 例 程 可 以 在arduino开 发 环 境 的 “ File-Examples” 菜 单 中 找 到 。 七 、 Arduino的 常 用 基 本 函 数 Arduino程 序 的 主 体 包 括 : Setup( ) 函 数 和 loop( )函 数 ;( 1) setup( )函 数 : 在 程 序 中 只 运 行一 次 , 它 的 功 能 为 完 成 程 序 的 各 类初 始 化 工 作 ;( 2) loop( )函 数 : 程 序 的 主 函 数 ,程 序 运 行 过 程 中 loop()函 数 不 断 循 环 。 Arduino常 用 函 数 - pinMode( ) 功 能 : 将 指 定 的 引 脚 配 置 成 输 出 或 输 入 语 法 : pinMode(pin, mode) 参 数 : pin: 表 示 要 设 置 模 式 的 引 脚 mode: 包 括 INPUT 或 OUTPUT 返 回 值 : 无 例 程 :int ledPin = 13 ; / LED 连 接 到 数 字 脚 13void setup()pinMode( ledPin, OUTPUT ) ; /设 置 数 字脚 为 输 出void loop()digitalWrite ( ledPin, HIGH ) ; /点 亮 LEDdelay(1000); / 等 待 一 秒 digitalWrite(ledPin, LOW); / 灭 掉 LED延 迟 ( 1000) ; /等 待 第 二 个 Arduino常 用 函 数 -digitalWrite() 功 能 : 给 一 个 数 字 引 脚 写 入 HIGH 或 者 LOW 。 语 法 : digitalWrite(pin, value) 参 数 : pin: 引 脚 编 号 value: HIGH or LOW 返 回 值 : 无 例 程 :int ledPin = 13; / LED 连 接 到 数 字 13 号 端 口void setup()pinMode(ledPin, OUTPUT); / 设 置 数 字 端 口 为 输 入模 式void loop()digitalWrite(ledPin, HIGH); / 使 LED 亮delay(1000); / 延 迟 一 秒digitalWrite(ledPin, LOW); / 使 LED 灭delay(1000); / 延 迟 一 秒 Arduino常 用 基 本 函 数 -digitalRead() 功 能 :读 取 指 定 引 脚 的 值 , HIGH 或 LOW 。 语 法 : digitalRead ( PIN) 参 数 : Pin: 你 想 读 取 的 引 脚 号 返 回 值 : HIGH 或 LOW 例 程 :int ledPin = ; / LED 连 接 到 13 脚int inPin = 7; / 按 钮 连 接 到 数 字 引 脚 7int val = 0; /定 义 变 量 以 存 储 读 值void setup()pinMode(ledPin, OUTPUT); / 将 13 脚 设 置 为 输 出pinMode(inPin, INPUT); / 将 7 脚 设 置 为 输 入void loop()val = digitalRead(inPin); / 读 取 输 入 脚digitalWrite(ledPin, val); /将 LED 值 设 置 为 按 钮 的 值 Arduino常 用 基 本 函 数 - analogRead() 功 能 : 从 指 定 的 模 拟 引 脚 读 取模 拟 数 据 值 。 语 法 : analogRead( PIN) 参 数 : pin: 从 输 入 引 脚 读 取 数 值 返 回 值 :从 0 到 1023 的 整 数 值 例 程 :int analogPin = 3; /电 位 器 ( 中 间 的 引 脚 ) 连 接 到模 拟 输 入 引 脚 3/另 外 两 个 引 脚 分 别 接 地 和 +5 Vint val = 0; /定 义 变 量 来 存 储 读 取 的 数 值void setup()serial.begin( 9600) ; /设 置 波 特 率 ( 9600)void loop()val = analogRead( analogPin) ; /从 输 入 引 脚 读取 数 值 serial.println ( val) ; /显 示 读 取 的 数 值 Arduino常 用 基 本 函 数 - analogWrite() 功 能 : 从 一 个 引 脚 输 出 模 拟 值 ( PWM ) 语 法 : analogWrite ( pin,value) 参 数 : pin: 用 于 输 入 数 值 的 引 脚 。 value: 占 空 比 : 0( 完 全 关 闭 ) 到 255( 完 全 打 开 ) 之 间 。 返 回 值 : 无 例 程 :通 过 读 取 电 位 器 的 阻 值 控 制 LED 的 亮 度int ledPin = 9; / LED 连 接 到 数 字 引 脚 9int analogPin = 3; /电 位 器 连 接 到 模 拟 引 脚 3int val = 0; /定 义 变 量 存 以 储 读 值void setup()pinMode( ledPin,OUTPUT ) ; /设 置 引 脚 为 输 出引 脚void loop()val = analogRead( analogPin) ; /从 输 入 引 脚 读 取 数 值analogWrite( ledPin, val / 4) ; / 以 val / 4 的数 值 点 亮 LED ( 因 为 analogRead 读 取 的 数 值从 0 到 1023, 而 analogWrite 输 出 的 数 值 从 0 到 255) Arduino常 用 基 本 函 数 - delay() 功 能 : 使 程 序 延 时 特 定 的 时 间 ( 毫 秒 ) 语 法 : delay(ms) 参 数 : ms: 暂 停 的 毫 秒 数 ( unsigned long) 返 回 值 : 无 例 程 :ledPin = 13 / / LED 连 接 到 数 字 13 脚void setup()pinMode(ledPin, OUTPUT); / 设 置 引 脚 为 输出void loop()digitalWrite(ledPin, HIGH); / 点 亮 LEDdelay(1000); / 等 待 1 秒digitalWrite(ledPin, LOW); / 灭 掉 LED delay(1000); / 等 待 一 秒 u中 断 的 定 义 : 由 于 某 一 随 机 事 件 的 发 生 , 单 片 机 暂 停 原 程 序 的 运 行 , 转去 执 行 另 一 程 序 ( 随 机 事 件 ) , 处 理 完 毕 后 又 自 动 返 回 原 程序 继 续 运 行 , 其 发 生 过 程 如 右 图 。u中 断 的 要 素 : 主 程 序 : 单 片 机 正 在 运 行 的 程 序 。 中 断 源 : 引 起 中 断 的 原 因 , 或 能 发 生 中 断 申 请 的 来 源 。 中 断 服 务 程 序 : 处 理 中 断 事 件 的 程 序 。Arduino常 用 基 本 函 数 - 中 断 介 绍中 断 发 生 的 过 程 Arduino常 用 基 本 函 数 -中 断 函 数1、 interrupts()函 数 功 能 : 负 责 打 开 总 中 断 返 回 值 : 无 参 数 : 无2、 noInterrupts()函 数 功 能 : 负 责 关 闭 总 中 断 返 回 值 : 无 参 数 : 无 3 、 attachInterrupt(interrput,function,mode) 功 能 : 用 于 设 置 外 部 中 断 参 数 : 3 个 , 分 别 表 示 中 断 源 , 中 断 处 理 函 数 和触 发 模 式 , 它 们 的 具 体 含 义 如 下 。 中 断 源 : 可 选 中 断 0 或 者 1 , 对 应 arduino的 2 或者 3 号 数 字 引 脚 。 中 断 处 理 函 数 : 是 一 段 子 程 序 , 当 中 断 发 生 时执 行 该 子 程 序 部 分 , 其 中 参 数 值 为 函 数 的 指 针 。 触 发 模 式 : 有 四 种 类 型 , LOW(低 电 平 触 发 ) 、 CHANGE(变 化 时 触 发 ) 、 RISING( 低 电 平 变 为 高 电平 触 发 ) 、 FALLING(高 电 平 变 为 低 电 平 触 发 ) Arduino常 用 基 本 函 数 -中 断 函 数4、 detachInterrupt(interrput)函数 功 能 : 用 于 取 消 中 断 参 数 :Interrupt: 表 示 所 要 取 消 的 中 断 源 例 程 : 用 中 断 源 0( 接 引 脚 D2) 作 为 触 发 源 控 制 arduino UNO板 上 的 LED亮 或 灭volatile int state = LOW;void setup() Serial.begin(9600); attachInterrupt(0, change, CHANGE);/当 D2电 平 改 变 时 ,触 发 中 断 函 数void loop() digitalWrite(13, state); if(state=LOW) Serial.println(111); if(state=HIGH) Serial.println(222); void change()/中 断 函 数 state = !state; Arduino常 用 基 本 函 数 -串 口 通 信 函 数1、 Serial.begin() 功 能 : 用 于 设 置 串 口 的 波 特 率 波 特 率 是 指 每 秒 传 输 的 比 特 数 , 除 以 8可 得 到 每 秒 传 输 的 字 节 数 。 一 般 的 波 特 率 有 9600、 19200、 57600、115200等 。介 绍 : 通 过 在 头 文 件 HardwareSerial.h中 定 义 一 个 HardwareSerial类 的 对 象 serial, 然 后直 接 使 用 该 类 的 成 员 函 数 来 实 现 。 2、 Serial.available() 功 能 : 用 来 判 断 串 口 是 否 收 到 数 据 返 回 值 : int型3、 Serial.read() 功 能 : 用 于 读 入 串 口 数 据 返 回 值 : int型 的 串 口 数 据 。 Arduino常 用 基 本 函 数 -串 口 通 信 函 数4、 Serial.print() 功 能 : 用 于 从 串 口 输 出 数 据 , 数 据 可以 是 变 量 , 也 可 以 是 字 符 串 。5、 Serial.println() 功 能 : 与 Serial.print函 数 类 似 , 都是 从 串 口 输 出 数 据 , 只 是Serial.println函 数 多 了 回 车 换 行 功能 。 例 程 : 读 取 输 入 的 字 符 , 并 在 监 视 器中 显 示 出 来 的 程 序 如 下 。String val=; void setup() Serial.begin(9600); void loop() while (Serial.available() 0) val+=char(Serial.read(); delay(5); if (val.length() 0) Serial.println(val); val=; 八 、 认 识 函 数 库 函 数 库 : 由 系 统 建 立 的 具 有 一 定 功 能 的 函 数 的 集 合 。 库 中 存 放 函 数 的 名 称 和 对应 的 目 标 代 码 , 以 及 连 接 过 程 中 所 需 的 重 定 位 信 息 。 用 户 也 可 以 根 据 自 己 的 需要 建 立 自 己 的 用 户 函 数 库 。 库 函 数 : 存 放 在 函 数 库 中 的 函 数 。 库 函 数 具 有 明 确 的 功 能 、 入 口 调 用 参 数 和 返回 值 。 头 文 件 : 有 时 也 称 为 包 含 文 件 。 C语 言 库 函 数 与 用 户 程 序 之 间 进 行 信 息 通 信 时要 使 用 的 数 据 和 变 量 , 在 使 用 某 一 库 函 数 时 , 都 要 在 程 序 中 嵌 入 ( 用 #include)该 函 数 对 应 的 头 文 件 。 九 、 机 器 人 包 含 的 库 函 数 库 函 数 组 成 : 由 .h文 件 ( 头 文 件 ) 和 .cpp文 件 ( 源 程 序 文 件 ) 组 成 。序 号 库 函 数 名 称 包 含 文 件 库 函 数 主 要 功 能1 Track Track.h、Track.cpp 对 应 机 器 人 红 外 传 感 器 的 库 函 数 , 主 要 用 于 控 制 机 器 人 沿 着 黑 色线 进 行 循 线 。2 ColSensor ColSensor.h、ColSensor.cpp 对 应 机 器 人 颜 色 传 感 器 的 库 函 数 , 主 要 用 于 识 别 机 器 人 垃 圾 块 的颜 色 。3 ColQueue ColQueue.h、 ColQueue.cpp 对 应 机 器 人 颜 色 传 感 器 的 库 函 数 , 以 队 列 的 形 式 来 记 忆 机 器 人 检测 到 的 垃 圾 块 的 颜 色 数 据 。4 Car Car.h、Car.cpp 对 应 机 器 人 电 机 的 库 函 数 , 主 要 用 于 简 单 控 制 机 器 人 的 移 动 。5 Function Function.h、Function.cpp 定 义 红 外 传 感 器 模 块 、 颜 色 传 感 器 模 块 、 电 机 的 arduino引 脚 , 控制 机 器 人 进 出 路 口 、 拐 弯 等 , 控 制 舵 机 动 作 和 初 始 化 等 功 能 。 十 、 怎 样 使 用 库 函 数 放 置 位 置 : 一 般 是 放 到 lib文 件 里 调 用 方 法 : 将 它 所 在 的 文 件 名 用 #include libraries所 在 的 路 径 库 函 数 拷 贝 到 的 路 径 #ifndef ColSensor_h#define ColSensor_hclass ColSensorprivate:/定 义 引 脚int S0, S1, S2, S3, OUT;/定 义 延 时unsigned long time;public: /定 义 计 数 器unsigned long g_count;/定 义 数 组 , 用 来 存 放 读 取 到 的 RGB值int g_array3;/定 义 数 组 , 用 来 存 放 比 例 系 数float g_SF3; /构 造 函 数ColSensor(int a, int b, int c, int d, int e, unsigned long f); /将 引 脚 配 置 为 输 出 , 同 时 设 置 输 出 比 例 因 子void Mode(int a = 1, int b = 1);/*控 制 数 字 引 脚 , 切 换 滤 波 器 。 红 , 绿 , 蓝 分别 对 应 S2与 S3的 00, 11, 01电 平 ; 10时 过 滤 所 有 颜色 */ void Digital_out(int a, int b);/计 算 比 例 系 数void Test();/计 算 RGB值void Get();#endif垃 圾 分 类 小 车 ColSensor.h文件 内 代 码 #include #include ColSensor.hColSensor:ColSensor(int a, int b, int c, int d, int e, unsigned long f)S0 = a; S1 = b; S2 = c; S3 = d; OUT = e; time = f; g_count = 0;void ColSensor:Mode(int a, int b)pinMode(S0, OUTPUT);pinMode(S1, OUTPUT);pinMode(S2, OUTPUT);pinMode(S3, OUTPUT);pinMode(OUT, INPUT);digitalWrite(S0, !(a = 0);digitalWrite(S1, !(b = 0); void ColSensor:Digital_out(int a, int b)digitalWrite(S2, !(a = 0);digitalWrite(S3, !(b = 0);void ColSensor:Test()g_array0 = 0; g_array1 = 0; g_array2 = 0;for (int j = 0; j3; j+)for (int i = 0; i time);g_arrayj += g_count; g_arrayj /= 3;g_SFj = 255.0 / g_arrayj;Digital_out(1, 0);g_count = 0;void ColSensor:Get()for (int i = 0; itime);g_arrayi = g_count;g_arrayi = g_SFi * g_arrayi;Digital_out(1, 0);g_count = 0;垃 圾 分 类 小 车 ColSensor.cpp文 件 内 代 码 谢 谢 !
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!