继电器组开发控制

 也是通过树莓派IO口的控制来实现继电器组的开发

 继电器组有四根信号线,2根电源线。

通过gpio readall 查看树莓派各个端口的信息选择26 27 28 29 作为信号端口

 编程可能会遇到的一些问题

1、通过键盘输入指令的时候,如果用scanf 会有bug,导致运行错误。这里用的是gets(cmd).

2、每次输入指令前,应该把上一次指令清除。这里采用的是memset

void *memset(void *s, int c, size_t n); 

  • s指向要填充的内存块。
  • c是要被设置的值。
  • n是要被设置该值的字符数。
  • 返回类型是一个指向存储区s的指针。

 3、对指令的判端运用的是 strcmp

int strcmp(const char* str1, const char *str2);

;strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字


#include <wiringPi.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#define SWI1 26
#define SWI2 27
#define SWI3 28
#define SWI4 29
int main()
{//1.初始化硬件部分if(wiringPiSetup () == -1){printf("初始化错误");}char  cmd[12] = {'\0'};//2.设置端口pinMode(SWI1,OUTPUT);pinMode(SWI2,OUTPUT);pinMode(SWI3,OUTPUT);pinMode(SWI4,OUTPUT);//3.设置初始状态digitalWrite(SWI1,HIGH);digitalWrite(SWI2,HIGH);digitalWrite(SWI3,HIGH);digitalWrite(SWI4,HIGH);while(1){printf("请输入指令:1/2/3/4 on    1/2/3/4 off\n");memset(cmd,'\0',sizeof(cmd));gets(cmd);//控制SWI 1if( strcmp(cmd,"1 on") == 0){digitalWrite(SWI1,LOW);}if(strcmp(cmd,"1 off") == 0){digitalWrite(SWI1,HIGH);}//控制2if( strcmp(cmd,"2 on") == 0){digitalWrite(SWI2,LOW);}if(strcmp(cmd,"2 off") == 0){digitalWrite(SWI2,HIGH);}//控制3if( strcmp(cmd,"3 on") == 0){digitalWrite(SWI3,LOW);}if(strcmp(cmd,"3 off") == 0){digitalWrite(SWI3,HIGH);}// 控制4if( strcmp(cmd,"4 on") == 0){digitalWrite(SWI4,LOW);}if(strcmp(cmd,"4 off") == 0){digitalWrite(SWI4,HIGH);}if( strcmp(cmd,"all on") == 0){digitalWrite(SWI1,LOW);digitalWrite(SWI2,LOW);digitalWrite(SWI3,LOW);digitalWrite(SWI4,LOW);}if( strcmp(cmd,"all off") == 0){digitalWrite(SWI1,HIGH);digitalWrite(SWI2,HIGH);digitalWrite(SWI3,HIGH);digitalWrite(SWI4,HIGH);}else{printf("输入错误\n");}}}

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

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

相关文章

JavaScript高级程序设计读书记录(一):语言基础,语法,变量,数据类型

1. 语法 很大程度上借鉴了 C 语言和其他类 C 语言&#xff0c;如 Java 和 Perl. 1.1 区分大小写 1.2 标识符 第一个字符必须是一个字母、下划线&#xff08;_&#xff09;或美元符号&#xff08;$&#xff09;&#xff1b; 剩下的其他字符可以是字母、下划线、美元符号或数…

排除启动类故障----三大实验

目录 一、模拟破坏mbr和分区表然后修复 二、修复grub引导故障 三、遗忘root用户密码 一、模拟破坏mbr和分区表然后修复 1、mbr处于第一块磁盘的第一个物理扇区&#xff0c;总共512个字节&#xff0c;前446个字节是grub程序&#xff0c;后面64个字节是分区表 2、故障原因&a…

Linux 进程(九) 进程等待

子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏&#xff0c;所以父进程回收子进程是必然要做的。 另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill …

JS新手入门笔记整理:JS引入方式

JavaScript&#xff0c;简称JS。是一种嵌入到HTML页面中的编程语言&#xff0c;由浏览器一边解释一边执行&#xff0c;控制着网页的行为。 引入方式 外部JavaScript 语法 <head><!--1.在head中引入--><script src”index.js”></script> </head&g…

googlecode.log4jdbc慢sql日志,格式化sql

前言 无论使用原生JDBC、mybatis还是hibernate&#xff0c;使用log4j等日志框架可以看到生成的SQL&#xff0c;但是占位符和参数总是分开打印的&#xff0c;不便于分析&#xff0c;显示如下的效果: googlecode Log4jdbc 是一个开源 SQL 日志组件&#xff0c;它使用代理模式实…

day06、SQL语言之概述

SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库

mac m1 goland调试模式踩坑记录

背景&#xff1a;在使用 m1 芯片的 mac &#xff0c;进行 go 项目开发时&#xff0c;发现 debug 模式无法正常调试。 版本环境 go: 1.20.1 goland: 2021.1.3 无法使用调试模式 mac m1 环境下启动 goland 后&#xff0c;发现无法正常使用 debug 模式&#xff0c;接口请求后会…

2024.1.4

今天学了些什么呢&#xff1f;回忆下&#xff1a;主要搞了一下 指针的进阶&#xff0c;指针数组和数组指针&#xff0c;这大抵是相当抽象的东西&#xff0c;确实很难学啊&#xff0c;绕来绕去的&#xff0c;但是不必多言——为什么要攀登珠穆朗玛峰&#xff1f;因为它就在那儿&…

感染了后缀为.360勒索病毒如何应对?数据能够恢复吗?

引言&#xff1a; 随着科技的进步&#xff0c;网络犯罪的威胁也逐渐演变&#xff0c;.360勒索病毒便是其中一种具有破坏性的恶意软件。本文将深入剖析.360勒索病毒的特征、传播途径&#xff0c;以及在数据遭到加密后的恢复方法&#xff0c;并提供一些建议来有效预防这一威胁。…

BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)

目录 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; 二、模型 2.1 配置模型 2.2 健康模型 三、状态 3.1 Composition Data 四、资料获取 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; BLE Mesh Foundation model Layer是蓝牙…

redis服务迁移数据工具--RDM

一、背景&#xff1a; 在日常的运维工作经常遇见各种数据迁移工作&#xff0c;例如mysql数据库迁移、redis数据库迁移、minio数据迁移等等工作。这里介绍一下redis数据库的迁移过程。 二、迁移思路&#xff1a; redis服务/集群的数据迁移思路是需要新建一个配置、密码一样的re…

【Leetcode】2487. 从链表中移除节点

文章目录 题目思路代码 题目 2487. 从链表中移除节点 思路 1、递归移除节点&#xff1a; 如果头节点为空&#xff0c;直接返回空。递归调用函数处理下一个节点 head->next。在递归返回后&#xff0c;判断当前节点的值是否小于之前记录的最大值 maxVal。如果小于 maxVal…

洛谷p1829(莫比乌斯反演)

思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const double eps 1e-8; const int N 1e710; const long long mod 20101009…

【鸿蒙】安装DevEco Studio运行HarmonyOS第一个APP(小白必看)

文章目录 前言一、DevEco Studio是什么&#xff1f;二、DevEco Studio安装运行1. 下载DevEco Studio2. 安装DevEco Studio3. 启动DevEco Studio4. 运行APP5. 修改代码 三、DevEco Studio调试注意事项总结 前言 鸿蒙OS是华为公司开发的一款基于微内核、耗时10年、4000多名研发人…

MySQL检索距离当前最近的7个小时内,靠近每个时间点数据信息

MySQL检索距离当前最近的7个小时内&#xff0c;靠近每个时间点数据信息 如果你想在最近7个小时内找到每个时间点最接近的数据&#xff0c;即使某些时间点没有数据&#xff0c;你可以使用子查询和窗口函数。以下是一个示例查询&#xff1a; sqlCopy codeSELECTt.time_point,CO…

集群渲染是?渲染农场是?两者与云渲染关联是什么

在数字化浪潮不断推进的当下&#xff0c;渲染技术在多个行业中发挥着至关重要的作用&#xff0c;尤其体现在电影制作、建筑可视化以及电子游戏开发等领域。在众多渲染技术中&#xff0c;集群渲染、渲染农场以及云渲染特别受到业界的重视。本文旨在阐述这些概念的含义以及它们之…

基于SpringBoot的在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化管理。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通…

osg-材质 (osg::Material)

1.材质类 材质类 (osg::Material)继承自osg::StateAttribute 类。osg::Material 封装了 OpenGL的 glMaterial()和glColorMaterial()指令的函数功能&#xff0c;其继承关系图如图5-27 所示。 图 5-27 osg::Material 的继承关系图 在场景中设置节点的材质属性&#xff0c;首先要…

DBSCAN聚类算法

DBSCAN读作&#xff1a;DB Scan&#xff0c;是英语基于密度的噪声应用空间聚类&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;的简写。在理解K-means聚类算法之后再来理解DBSCAN就容易多了。 DBSCAN的步骤如下&#xff1a; 随机从一个…

年终特辑 | 2023卓翼飞思答卷,诚邀您共同翻阅...

朝夕轮转 , 岁序更替&#xff0c;站在岁末&#xff0c;回首2023 &#xff0c;汇成的每一帧都有迹可循 &#xff1b;卓翼飞思实验室产品升级、技术创新、服务卓越、勇毅前行以抢拼实干兑现硕果&#xff01;无论您是亲历者&#xff0c;还是见证者&#xff0c;我们在此诚邀您共同翻…