Arduino 接收上位机数组控制LED灯程序示例
以下是一个接收上位机发送的数组,并控制LED灯,并通过串口回复上位机的Arduino程序示例:\n\nC++\n// 定义LED引脚\nint ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};\nint numLEDs = sizeof(ledPins) / sizeof(ledPins[0]);\n\n// 定义串口通信相关参数\n#define START_BYTE 0xAE\n\nvoid setup() {\n // 初始化串口通信\n Serial.begin(9600);\n\n // 初始化LED引脚\n for (int i = 0; i < numLEDs; i++) {\n pinMode(ledPins[i], OUTPUT);\n }\n}\n\nvoid loop() {\n // 等待接收上位机发送的数组\n if (Serial.available() > 0) {\n // 读取起始位\n if (Serial.read() != START_BYTE) {\n return;\n }\n\n // 读取功能码和控制指令\n byte functionCode = Serial.read();\n\n if (functionCode >= 1 && functionCode <= numLEDs) {\n byte ledState = Serial.read();\n\n // 控制LED灯\n digitalWrite(ledPins[functionCode - 1], ledState);\n\n // 发送回复数组\n byte response[] = {START_BYTE, functionCode, ledState};\n Serial.write(response, sizeof(response));\n }\n }\n}\n\n\n该程序首先定义了LED引脚的数组和串口通信相关参数。在setup()函数中,初始化了串口通信和LED引脚。然后,在loop()函数中,通过Serial.available()检查是否有数据可读取。如果有数据可读取,则首先读取起始位,并判断其是否为预定义的起始位。接着,读取功能码和控制指令。如果功能码在有效范围内,则根据控制指令控制对应的LED灯,并通过串口回复上位机。
原文地址: https://www.cveoy.top/t/topic/pqQq 著作权归作者所有。请勿转载和采集!