210:例子1:6个垃圾桶是否满的信息读取VSCODE实现
**
1、实验目的
**
六个垃圾桶,用六个传感器,判断是否垃圾桶满。
如果传感器从1—0,那么垃圾桶满,LED灯亮或者灭;
2、参考例程:
keypad控制RGB案例;
LED灯案例;
3、步骤
一、将keypad的案例程序,复制到在SDK的src里面,重命名,这里重命名为all_01;
二、打开LED的代码,后面参考用到
二、修改端口配置代码
(1)添加LED代码的pin_config.h文件,的代码复制到src对应的pin_config.h里面。这里LED的硬件引脚不能改变,因为开发板已经固定了。
(2)将keypad的配置文件的pin_config.h里面的硬件IO、软件IO、以及对应设置,修改成垃圾桶的,比如改名字等;
最后的文件
pin_config.h
#ifndef _PIN_CONFIG_H_
#define _PIN_CONFIG_H_
/*****************************HEAR-FILE************************************/
#include "fpioa.h"/*****************************HARDWARE-PIN*********************************/
// 硬件IO口,与原理图对应
#define PIN_LED_0 (0)
#define PIN_LED_1 (17)#define PIN_LJT_0 (18) //垃圾桶LJT
#define PIN_LJT_1 (19)
#define PIN_LJT_2 (20)
#define PIN_LJT_3 (21)
#define PIN_LJT_4 (22)
#define PIN_LJT_5 (23)
/*****************************SOFTWARE-GPIO********************************/
// 软件GPIO口,与程序对应
#define LED0_GPIONUM (0)
#define LED1_GPIONUM (1)//
#define LJT0_GPIONUM (2)
#define LJT1_GPIONUM (3)
#define LJT2_GPIONUM (4)
#define LJT3_GPIONUM (5)
#define LJT4_GPIONUM (6)
#define LJT5_GPIONUM (7)
/*****************************FUNC-GPIO************************************/
// GPIO口的功能,绑定到硬件IO口
#define FUNC_LED0 (FUNC_GPIO0 + LED0_GPIONUM)
#define FUNC_LED1 (FUNC_GPIO0 + LED1_GPIONUM)
//IO口18--23对应HS高速口,看芯片手册的引脚定义表
#define FUNC_LJT0 (FUNC_GPIOHS0 + LJT0_GPIONUM)
#define FUNC_LJT1 (FUNC_GPIOHS0 + LJT1_GPIONUM)
#define FUNC_LJT2 (FUNC_GPIOHS0 + LJT2_GPIONUM)
#define FUNC_LJT3 (FUNC_GPIOHS0 + LJT3_GPIONUM)
#define FUNC_LJT4 (FUNC_GPIOHS0 + LJT4_GPIONUM)
#define FUNC_LJT5 (FUNC_GPIOHS0 + LJT5_GPIONUM)
#endif /* _PIN_CONFIG_H_ */
(3)修该src里面的,刚才复制,改名字的all_01的main.c代码。实现功能。
注意普通IO口,高速IO口的端口模式设置,以及IO的高低电平的定义。
普通IO口,210输出模式,驱动LED亮灭。
gpio_set_drive_mode(LED0_GPIONUM, GPIO_DM_OUTPUT);gpio_set_drive_mode(LED1_GPIONUM, GPIO_DM_OUTPUT);
高速IO口,HS的,IO18—IO23.
// 设置垃圾桶的传感器的GPIO模式为上拉输入gpiohs_set_drive_mode(LJT0_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT1_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT2_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT3_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT4_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT5_GPIONUM, GPIO_DM_INPUT_PULL_UP);
高低电平的信息标志类型是
gpio_pin_value_t
高低电平,这里不是1–0,而是GPIO_PV_HIGH和GPIO_PV_LOW
gpio_pin_value_t value = GPIO_PV_HIGH;// GPIO_PV_LOW
全部的main.c代码
//IO18---IO23,普通IO口,输入状态,判断是不是0,是0,说明垃圾满
#include <stdio.h>
#include <unistd.h>
#include "gpio.h"
#include "gpiohs.h"
#include "pin_config.h"
#include "sleep.h"/**
* Function hardware_init
* @author Gengyue
* @date 2020.05.27
* @brief 硬件初始化,绑定GPIO口
* @param[in] void
* @param[out] void
* @retval void
* @par History 无
*/
void hardware_init(void)
{fpioa_set_function(PIN_LED_0, FUNC_LED0);fpioa_set_function(PIN_LED_1, FUNC_LED1);fpioa_set_function(PIN_LJT_0, FUNC_LJT0);fpioa_set_function(PIN_LJT_1, FUNC_LJT1);fpioa_set_function(PIN_LJT_2, FUNC_LJT2);fpioa_set_function(PIN_LJT_3, FUNC_LJT3);fpioa_set_function(PIN_LJT_4, FUNC_LJT4);fpioa_set_function(PIN_LJT_5, FUNC_LJT5);}/**
* Function main
* @author Gengyue
* @date 2020.05.27
* @brief 主函数,程序的入口
* @param[in] void
* @param[out] void
* @retval 0
* @par History 无
*/
int main(void)
{hardware_init();// 硬件引脚初始化gpio_init(); // 使能GPIO的时钟// 设置LED0和LED1的GPIO模式为输出gpio_set_drive_mode(LED0_GPIONUM, GPIO_DM_OUTPUT);gpio_set_drive_mode(LED1_GPIONUM, GPIO_DM_OUTPUT);// 先关闭LED0和LED1gpio_pin_value_t value = GPIO_PV_HIGH;gpio_set_pin(LED0_GPIONUM, value);gpio_set_pin(LED1_GPIONUM, value);// 设置垃圾桶的传感器的GPIO模式为上拉输入gpiohs_set_drive_mode(LJT0_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT1_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT2_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT3_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT4_GPIONUM, GPIO_DM_INPUT_PULL_UP);gpiohs_set_drive_mode(LJT5_GPIONUM, GPIO_DM_INPUT_PULL_UP);while (1){//查询几个GPIO垃圾桶,返回传感器..参考keypad的案例代码gpio_pin_value_t state_LJT0 = gpiohs_get_pin(LJT0_GPIONUM);gpio_pin_value_t state_LJT1 = gpiohs_get_pin(LJT1_GPIONUM);gpio_pin_value_t state_LJT2 = gpiohs_get_pin(LJT2_GPIONUM);gpio_pin_value_t state_LJT3 = gpiohs_get_pin(LJT3_GPIONUM);gpio_pin_value_t state_LJT4 = gpiohs_get_pin(LJT4_GPIONUM);gpio_pin_value_t state_LJT5 = gpiohs_get_pin(LJT5_GPIONUM);//LED 低电平亮,高电平不亮if(!state_LJT0){gpio_set_pin(LED0_GPIONUM, GPIO_PV_LOW);gpio_set_pin(LED1_GPIONUM, GPIO_PV_LOW);}if(!state_LJT1){gpio_set_pin(LED0_GPIONUM, GPIO_PV_LOW);gpio_set_pin(LED1_GPIONUM, GPIO_PV_HIGH);}if(!state_LJT2){gpio_set_pin(LED0_GPIONUM, GPIO_PV_HIGH);gpio_set_pin(LED1_GPIONUM, GPIO_PV_LOW);}if(!state_LJT3){gpio_set_pin(LED0_GPIONUM, GPIO_PV_HIGH);gpio_set_pin(LED1_GPIONUM, GPIO_PV_HIGH);}}return 0;
}
**
编译和下载
在SDK,右键,用VS打开;
终端里面输入cd build回车运行
输入cmake .. -DPROJ=all_01 -G "MinGW Makefiles"
运行
输入make
运行,
如果没错误,就将all_01.bin下载到210开发板。有错误,就自己检查修改。
4、效果
**
用杜邦线,将IO-18接到GND,看到LED0和LED1会得到一种状态;
IO—19接到GND,也是一种LED状态;
**
注意:
**
高低电平不是1和0,而是。。上面文章有;
有普通的IO和HS高速IO;一定要注意,多看案例,参考案例。
210:例子1:6个垃圾桶是否满的信息读取VSCODE实现相关推荐
- Python实现亚马逊网站图书满减信息的微信通知
开篇: 于实践中学习. 1. 想法 本程序的开发主要经历了以下几个阶段(我是一个python初学者): 页面的下载->满减信息的查找->从首页动态寻找图书品类的入口->实现微信的通知 ...
- 基于onenet的开关定位接收消息的APP设计
手机APP的基本功能实现流程图如下图所示. 3.3.1 页面布局设计 (1)页面布局选择 手机客户端的app页面设计介绍以下三种布局: ①LinearLayout线性布局,将它所包含的控件在线性方向上 ...
- 如何使用Arthas定位线上 Dubbo 线程池满异常
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「Kirito的技术分享」 前言 本文是 ...
- Arthas | 定位线上 Dubbo 线程池满异常
作者 | 徐靖峰 阿里云高级开发工程师 前言 Dubbo 线程池满异常应该是大多数 Dubbo 用户都遇到过的一个问题,本文以 Arthas 3.1.7 版本为例,介绍如何针对该异常进行诊断,主要使 ...
- Mysql主从复制(docker例子)
一.Binlog Binlog 日志主要作用是数据恢复和主从复制.本身就是二进制格式的日志文件,网络传输无需进行协议转换.MySQL 集群的高可用,负载均衡,读写分离等功能都是基于Binlog 来实现 ...
- 【单片机毕业设计】【mcuclub-jj-026】基于单片机的垃圾桶的设计
最近设计了一个项目基于单片机的垃圾桶系统,与大家分享一下: 一.基本介绍 项目名:垃圾桶 项目编号:mcuclub-jj-026 单片机类型:STC89C52 具体功能: 1.通过红外避障管检测垃圾桶 ...
- 基于物联网的智能垃圾桶设计
前言 目前我国各城市包括首都正在深入开展争创国家卫生城市活动,这是全国爱国卫生运动委员会办公室评选命名的国家级卫生优秀城市的最高荣誉,是一个城市综合素质的重要标志.沈阳市正在深入开展创建国家卫生城市和 ...
- 三角分解、满秩分解、Schur分解与奇异值分解一网打尽
文章目录 前言 一.三角分解 二.满秩分解 三.Schur分解 1.UR分解 2.QR分解 四.奇异值分解(SVD) 总结 前言 本文的主要内容是三角分解.满秩分解.Schur分解与奇异值分解的简单介 ...
- 【毕设狗】【单片机毕业设计】基于单片机的智能垃圾桶设计-仿真设计
软件安装: Keil:点击下载 Proteus:点击下载 AD:点击下载 Visio:点击下载 程序烧录:点击下载 实物设计 基于单片机的智能垃圾桶设计-实物设计 设计简介: 本设计是基于单片机的智能 ...
最新文章
- 基于源码编辑器的跑酷游戏设计
- 《智能家居》培训第六天------2019-01-10
- linux pivot root,[mydocker]---通过例子理解chroot 和 pivot_root
- source insight 深色主题配置文件
- CompletableFuture 详解
- Linux下mail服务器应用之邮件系统的安全性
- 开课吧课堂之throws如何去使用?
- 大数据安全分析需要关注哪些问题
- xilinx FIFO的使用及各信号的讨论
- AARRR:数据运营模型
- 项目实战中的防御性编程
- js去除空格12种方法
- 国内经典BI系统架构分析
- 数分下第12讲(第9.6节) 梯度散度和旋度
- 如何double你的能力
- 鹏业安装三维算量软件——批量修改工程量
- 香港城市大学全奖PhD/联培PhD/博后/RA
- dell 重装linux系统_预装Linux(Ubuntu)的DELL笔记本重装Windows
- 暴力解决Centos6YUM下Loaded plugins: fastestmirror Determining fastest mirror和Could not retrieve mirro
- 前端Js获取本网IP和外网IP方法总汇