|
正好,你说那么多,你试一下,下面是我的代码,按按钮不偶尔能生效。
这个代码是这么回事!在1206上显示脉冲计数 ,然后脉冲的间隔时间 通过按钮可调
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneButton.h>
OneWire oneWire_9(9);
DallasTemperature sensors_9(&oneWire_9);
DeviceAddress insideThermometer;
LiquidCrystal_I2C mylcd(0x27,16,2);
volatile int g; //1206屏幕上显示的脉冲个位数
volatile int s; // 十位数
volatile int b; //百位数
volatile int q; //千位数
volatile int w; //万位数
volatile int sw;
volatile int bw;
volatile int qw;
volatile int y;
volatile int ms; //这个变量 ms 意思就是 脉冲的延时时间 就是它 通过按钮调整
OneButton button10(10,false); //按钮接到 10 号引脚
OneButton button11(11,false); //按钮接到 11号引脚
float ds18b20_9_getTemp(int w) {
sensors_9.requestTemperatures();
if(w==0) {
return sensors_9.getTempC(insideThermometer);
}
else {
return sensors_9.getTempF(insideThermometer);
}
}
void attachClick10() {
ms = ms + 5;
}
//变量 ms 通过按钮 每按一下 增加 5毫秒的时间
void attachClick11() {
ms = ms - 5;
}
//变量 ms 通过按钮 每按一下 减少 5毫秒的时间
void setup(){
sensors_9.getAddress(insideThermometer, 0);
sensors_9.setResolution(insideThermometer, 9);
pinMode(7, OUTPUT);
mylcd.init();
mylcd.backlight();
g = 0;
s = 0;
b = 0;
q = 0;
w = 0;
sw = 0;
bw = 0;
qw = 0;
y = 0;
ms = 50;
mylcd.setCursor(1-1, 1-1);
mylcd.print("S");
mylcd.setCursor(2-1, 1-1);
mylcd.print(":");
mylcd.setCursor(3-1, 1-1);
mylcd.print((30 + ms));
mylcd.setCursor(1-1, 2-1);
mylcd.print("Count");
button10.attachClick(attachClick10);
button11.attachClick(attachClick11);
}
void loop(){
mylcd.setCursor(12-1, 1-1);
mylcd.print('C');
mylcd.setCursor(7-1, 1-1);
mylcd.print(ds18b20_9_getTemp(0));
mylcd.setCursor(16-1, 2-1);
mylcd.print(g);
mylcd.setCursor(15-1, 2-1);
mylcd.print(s);
mylcd.setCursor(14-1, 2-1);
mylcd.print(b);
mylcd.setCursor(13-1, 2-1);
mylcd.print(q);
mylcd.setCursor(12-1, 2-1);
mylcd.print(w);
mylcd.setCursor(11-1, 2-1);
mylcd.print(sw);
mylcd.setCursor(10-1, 2-1);
mylcd.print(bw);
mylcd.setCursor(9-1, 2-1);
mylcd.print(qw);
mylcd.setCursor(8-1, 2-1);
mylcd.print(y);
digitalWrite(7,HIGH); // 7号引脚接的脉冲输出 高电平时间 30 毫秒
delay(30);
digitalWrite(7,LOW);
g++; //低电平每来一下,个位数计数加一
delay(ms); //delay 时间就是 变量ms赋值
if (g > 9) {
g = 0;
s++;
}
if (s > 9) {
s = 0;
b++;
}
if (b > 9) {
b = 0;
q++;
}
if (q > 9) {
q = 0;
w++;
}
if (w > 9) {
w = 0;
sw++;
}
if (sw > 9) {
sw = 0;
bw++;
}
if (bw > 9) {
bw = 0;
qw++;
}
if (qw > 9) {
qw = 0;
y++;
}
button10.tick();
button11.tick();
}
|
|