继电器组开发控制

发布时间:2024年01月04日

?也是通过树莓派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 1
		if( strcmp(cmd,"1 on") == 0){
			digitalWrite(SWI1,LOW);
		}if(strcmp(cmd,"1 off") == 0){
			digitalWrite(SWI1,HIGH);
		}

		//控制2
		if( strcmp(cmd,"2 on") == 0){
			digitalWrite(SWI2,LOW);
		}if(strcmp(cmd,"2 off") == 0){
			digitalWrite(SWI2,HIGH);
		}
		//控制3
		if( strcmp(cmd,"3 on") == 0){
			digitalWrite(SWI3,LOW);
		}if(strcmp(cmd,"3 off") == 0){
			digitalWrite(SWI3,HIGH);
		}
		
		// 控制4
		if( 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");
		}

	}

}

文章来源:https://blog.csdn.net/qq_65305227/article/details/135397326
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。