|
楼主 |
发表于 2019-12-26 16:29
来自手机
|
显示全部楼层
能看懂一些 以前没接触过 arduino
自己加了些注释还是 没弄明白
#include
#include
#include
#include
#include
#define OLED_MOSI 11
#define OLED_CLK 13
#define OLED_DC 8
#define OLED_CS 10
//定义 引脚9 为oled复位引脚
#define OLED_RESET 9
#define thermoDO 11
#define thermoCS 12
#define thermoCLK 13
#define potentiometer A3
#define zerocrossing 2
#define triac 7
#define input 5
//温度
float temperature;
//
int pottemperature;
//计数器
int counter;
//oled通讯引脚
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
//max6675数据引脚
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
//进入 初始化 函数
void setup() {
//定义old通讯地址???
display.begin(SSD1306_SWITCHCAPVCC);
//引脚 电位器 输入
pinMode(potentiometer, INPUT);
//引脚 调零 输入
pinMode(zerocrossing, INPUT_PULLUP);
//引脚 可控硅 输出
pinMode(triac, OUTPUT);
//
digitalWrite(triac, LOW);
//设置oled字体为2号
display.setTextSize(2);
//设置oled显示为白色
display.setTextColor(WHITE);
//
counter = 0;
//温度 热电偶 摄氏度
temperature = thermocouple.readCelsius();
//设置完成 更新显示???????
updatedisplay();
//中断 中断触发引脚0 中断函数名zero 中断上升沿
attachInterrupt(0, zero, RISING);
}
//不明白这个函数
void loop() {
}
//中断函数
void zero() {
counter++;
if (counter < 40) {
if (temperature <= pottemperature) {
digitalWrite(triac, HIGH);
}
else {
digitalWrite(triac, LOW);
}
}
if (counter == 40) {
digitalWrite(triac, LOW);
detachInterrupt(0);
temperature = thermocouple.readCelsius();
updatedisplay();
counter = 0;
attachInterrupt(0, zero, RISING);
}
}
//
void updatedisplay() {
//
pottemperature = analogRead(potentiometer);
//max6675温度参数&设置温度
pottemperature = map(pottemperature, 0, 1023, 0, 400);
display.clearDisplay();//清空oled显示
display.setCursor(0, 0);//设置oled显示内容位置
display.print("SET:");//设置oled显示内容
display.print(pottemperature);
display.setCursor(0, 20);//设置oled显示内容位置
display.print("TMP:");//设置oled显示内容
display.print(int(temperature));
display.display();//设置完成更新显示内容
}
|
|