萌萌的非洲人 2020-07-08 14:20 采纳率: 33.3%
浏览 240

Arduino 使用串口向芯片发送数字从而控制电机,两个电机一个有用PWM,另一个没有,用PWN的那个只能接收一个指令,然后程序就卡死了,请问这是怎么回事啊

#include
#include
#include "DHT11.h"
int f1 = 5;//渐进控制变量
int b1 = 0;//电压控制变量
char val;
const int pin = A2;
int v = 0;

DHT11 mydht11(11);

unsigned long tx = 0;//计时变量

void setup(){
Serial.begin(9600);//初始化串口
pinMode(5,INPUT);
pinMode(7,INPUT);

pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);

tx = millis();//返回当前程序运行时的毫秒数,大概是50天后溢出

MsTimer2::set(15, LED1_CTRL);//15ms时间设置,当发生中断时,调用LED1_CTRL函数
}

void LED1_CTRL(){
analogWrite(3, b1);//约490Hz PWM的输出
b1 += f1;

if(b1 == 0 || b1 == 255){//设置可以实现15ms递增或者15ms递减,实现变亮和变暗
f1 = -f1;
}

}

void run(){
val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val

if(val=='2'){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
MsTimer2::start();//启动定时器
Serial.println(val);
}
if(val=='1'){
digitalWrite(2,LOW);
analogWrite(3, 50);
MsTimer2::start();//启动定时器
Serial.println(val);
}
if(val=='3'){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
MsTimer2::stop();
Serial.println(val);
}
if(val=='5'){
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
Serial.println(val);
}
if(val=='4'){
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
Serial.println(val);
}
if(val=='6'){
digitalWrite(8,LOW);
digitalWrite(9,LOW);
Serial.println(val);
}
}
void get()
{
v = analogRead(pin);
mydht11.DHT11_Read();//读取温度湿度值
Serial.print("#");
Serial.print(v);
Serial.print("/");
Serial.print(mydht11.HUMI_Buffer_Int);
Serial.print("/");
Serial.print(mydht11.TEM_Buffer_Int);
Serial.println("@");
}

void loop(){
get();
run();
}

全部代码如上所示

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-08-02 11:57
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型