собираю свою паяльную станцию
Интересно. А как вы измеряете температуру? Дисплей 1602А по какому протоколу работает? I2C работет на пинах А4, А5. А6 и А7 не получится использовать как выходы.при всем этом у меня свободны все аналоговые пины.
Я использую встроеню библиотеку LiquidCrystal там задействуются пины с 2-5 и 11, 12.Дисплей 1602А по какому протоколу работает?
А что мешает использовать пины с 14 по 19?LiquidCrystal там задействуются пины с 2-5 и 11, 12
Этих библиотек не одна и не две. Покажите фото дисплеяиспользую встроеню библиотеку LiquidCrystal
#include <LiquidCrystal.h>
#include <GyverMAX6675.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define CLK_PIN 13 // Пин SCK
#define DATA_PIN 9 // Пин SO
#define CS_PIN 10 // Пин CS
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(1, 0);
lcd.print("Temper_t");
lcd.setCursor(1, 2);
lcd.print("Obarot_%");
}
unsigned long tz;
int t;
void loop() {
if (millis() - tz > 1000) {
tz = millis();
if (sens.readTemp()) {
lcd.setCursor(11, 0);
lcd.println(sens.getTemp());
Serial.println(sens.getTemp());
}
}
}
В 4й строке вашего кода поменять номера пинов. Вместо 14-19 можно использовать A0-A5, это одно и то же.если несложно можете подсказать как реализовать это в скетче?
спасибо я сейчас это и делал все заработала кроме 15 или А1 пинаВ 4й строке вашего кода поменять номера пинов. Вместо 14-19 можно использовать A0-A5, это одно и то же.
а А1 почему не заработал? - все пины одинаковыеспасибо я сейчас это и делал все заработала кроме 15 или А1 пина
я без понятья но на других пинах все работаета А1 почему не заработал? - все пины одинаковые
#include <LiquidCrystal.h>
#include <GyverMAX6675.h>
#include "GyverEncoder.h"
const int rs = 12, en = 11, d4 = 14, d5 = 16, d6 = 17, d7 = 18;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define CLK_PIN 13 // Пин SCK
#define DATA_PIN 9 // Пин SO
#define CS_PIN 10 // Пин CS
#define CLK 6
#define DT 7
#define SW 8
Encoder enc1(CLK, DT, SW); // для работы c кнопкой
byte value = 0;
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
void setup() {
Serial.begin(9600);
enc1.setType(TYPE1);
lcd.begin(16, 2);
lcd.setCursor(1, 0);
lcd.print("Temper_t");
lcd.setCursor(1, 2);
lcd.print("Obarot_%");
pinMode(3, 1);
}
unsigned long tz;
int t;
int x;
void loop() {
enc1.tick();
if (enc1.isRight()) value++; // если был поворот направо, увеличиваем на 1
if (enc1.isLeft()) value--; // если был поворот налево, уменьшаем на 1
if (enc1.isRightH()) value += 5; // если было удержание + поворот направо, увеличиваем на 5
if (enc1.isLeftH()) value -= 5; // если было удержание + поворот налево, уменьшаем на 5
value = constrain(value, 0, 100);
Serial.println(value);
if (millis() - tz > 1000) {
tz = millis();
if (sens.readTemp()) {
lcd.setCursor(11, 0);
lcd.println(sens.getTemp());
Serial.println(sens.getTemp());
lcd.setCursor(11, 2);
lcd.print(value);
lcd.print("%");
// lcd.setCursor(14, 2);
// lcd.println("% ");
}
}
x = map(x, 0, 100, 0, 255);
analogWrite(3, x);
}
нет, этого не умеюможете посоветовать
Это ненормально, надо бы разобраться.я без понятья но на других пинах все работает
Думаю так и естьЭто ненормально, надо бы разобраться.
может плохой контакт?
#include <LiquidCrystal.h>
#include <GyverMAX6675.h>
#include "GyverEncoder.h"
const int rs = 12, en = 11, d4 = 14, d5 = 16, d6 = 17, d7 = 18; //пины дисплея
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define CLK_PIN 13 // Пин SCK термометер
#define DATA_PIN 9 // Пин SO
#define CS_PIN 10 // Пин CS
#define CLK 6 // энкодер
#define DT 7
#define SW 8
Encoder enc1(CLK, DT, SW); // для работы c кнопкой
byte value = 0;
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
boolean butt_fifg = 0; //флаг для отаброжения стрелки в меню
boolean butt;
void setup() {
Serial.begin(9600);
enc1.setType(TYPE1); //тип инкодера TYPE1 или TYPE2
lcd.begin(16, 2); // размер дисплея по сивмолно
lcd.setCursor(1, 0); // вывод надписи температера на 1 строчке с 2 сивмало
lcd.print("Temper_t"); //отшет сивлов идет с 0
lcd.setCursor(1, 2); // вывод надписи температера на 2 строчке с 2 сивмало
lcd.print("Obarot_%"); //отшет сивлов идет с 0
pinMode(3, 1); //турбина фена чрез масфет
}
unsigned long tz; // задержка отабражения температуры
int x; //шим для тербина на 3 пине
void loop() {
enc1.tick();
if (millis() - tz > 1000) { // частата обнавления показтелей температуры
tz = millis();
if (sens.readTemp()) {
lcd.setCursor(11, 0); // вывод температуры на десплей
lcd.println(sens.getTemp());
Serial.println(sens.getTemp()); //вывод температуры в сом
}
}
if (enc1.isRightH())butt = 1; // управления миню зделоно кастылно чирез if и флаги
if (enc1.isLeftH()) butt = 0;
if (butt == 1 && butt_fifg == 0) {
butt_fifg = 1;
}
if (butt == 0 && butt_fifg == 1) {
butt_fifg = 0;
}
if (butt == 1) {
lcd.setCursor(0, 0);
lcd.print(">");
lcd.setCursor(0, 2);
lcd.print(" ");
}
if (butt == 0) {
lcd.setCursor(0, 2);
lcd.print(">");
lcd.setCursor(0, 0);
lcd.print(" ");
if (enc1.isRight()) value++; // если был поворот направо, увеличиваем на 1
if (enc1.isLeft()) value--; // если был поворот налево, уменьшаем на 1
value = constrain(value, 0, 100); // вывод скорости турбины в %
lcd.setCursor(11, 2);
lcd.print(value);
lcd.print("% ");
}
x = map(x, 0, 100, 0, 255); // привод со 100 до 255 нужных для шим
analogWrite(3, x); // шим
}
LCDMenuLib2как сделать курсор выбора с боку дисплея чтобы он управлялся с энкодера?
#include <LiquidCrystal.h>
#include <GyverMAX6675.h>
#include "GyverEncoder.h"
const int rs = 12, en = 11, d4 = 14, d5 = 16, d6 = 17, d7 = 18; //пины дисплея
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define CLK_PIN 13 // Пин SCK термометер
#define DATA_PIN 9 // Пин SO
#define CS_PIN 10 // Пин CS
#define CLK 6 // энкодер
#define DT 7
#define SW 8
Encoder enc1(CLK, DT, SW); // для работы c кнопкой
byte value = 0;
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
boolean butt_fifg = 0; //флаг для отаброжения стрелки в меню
boolean butt;
void setup() {
Serial.begin(9600);
enc1.setType(TYPE1); //тип инкодера TYPE1 или TYPE2
lcd.begin(16, 2); // размер дисплея по сивмолно
lcd.setCursor(1, 0); // вывод надписи температера на 1 строчке с 2 сивмало
lcd.print("Temper_t"); //отшет сивлов идет с 0
lcd.setCursor(1, 2); // вывод надписи температера на 2 строчке с 2 сивмало
lcd.print("Obarot_%"); //отшет сивлов идет с 0
pinMode(3, 1); //турбина фена чрез масфет
}
unsigned long tz; // задержка отабражения температуры
int x; //шим для тербина на 3 пине
void loop() {
enc1.tick();
if (millis() - tz > 1000) { // частата обнавления показтелей температуры
tz = millis();
if (sens.readTemp()) {
lcd.setCursor(11, 0); // вывод температуры на десплей
lcd.println(sens.getTemp());
Serial.println(sens.getTemp()); //вывод температуры в сом
}
}
if (enc1.isRightH())butt = 1; // управления миню зделоно кастылно чирез if и флаги
if (enc1.isLeftH()) butt = 0;
if (butt == 1 && butt_fifg == 0) {
butt_fifg = 1;
}
if (butt == 0 && butt_fifg == 1) {
butt_fifg = 0;
}
if (butt == 0) {
lcd.setCursor(0, 0);
lcd.print(">");
lcd.setCursor(0, 2);
lcd.print(" ");
}
if (butt == 1) {
lcd.setCursor(0, 2);
lcd.print(">");
lcd.setCursor(0, 0);
lcd.print(" ");
if (enc1.isRight()) value++; // если был поворот направо, увеличиваем на 1
if (enc1.isLeft()) value--; // если был поворот налево, уменьшаем на 1
value = constrain(value, 0, 100); // вывод скорости турбины в %
lcd.setCursor(11, 2);
lcd.print(value);
lcd.print("% ");
}
x = map(value, 0, 100, 0, 255); // привод со 100 до 255 нужных для шим
analogWrite(3, value); // шим
#include <LiquidCrystal.h>
#include <GyverMAX6675.h>
#include "GyverEncoder.h"
const int rs = 12, en = 11, d4 = 14, d5 = 16, d6 = 17, d7 = 18; //пины дисплея
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define CLK_PIN 13 // Пин SCK термометер
#define DATA_PIN 9 // Пин SO
#define CS_PIN 10 // Пин CS
#define CLK 6 // энкодер
#define DT 7
#define SW 8
Encoder enc1(CLK, DT, SW); // для работы c кнопкой
byte value = 20;
int val = 30;
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
boolean butt_fifg = 0; //флаг для отаброжения стрелки в меню
boolean butt;
void setup() {
Serial.begin(9600);
enc1.setType(TYPE1); //тип инкодера TYPE1 или TYPE2
lcd.begin(16, 2); // размер дисплея по сивмолно
lcd.setCursor(1, 0); // вывод надписи температера на 1 строчке с 2 сивмало
lcd.print("Temper_"); //отшет сивлов идет с 0
lcd.setCursor(1, 2); // вывод надписи температера на 2 строчке с 2 сивмало
lcd.print("Obarot_"); //отшет сивлов идет с 0
pinMode(3, 1); //турбина фена чрез масфет
pinMode(5, 1); //нагриватель
}
unsigned long tz; // задержка отабражения температуры
int x; //шим для тербина на 3 пине
void loop() {
enc1.tick();
// if (millis() - tz > 1000) { // частата обнавления показтелей температуры
// tz = millis();
// if (sens.readTemp()) {
// lcd.setCursor(13, 0); // вывод температуры на десплей
// lcd.println(sens.getTemp());
// Serial.println(sens.getTemp()); //вывод температуры в сом
// }
//}
if (enc1.isRightH())butt = 1; // управления миню зделоно кастылно чирез if и флаги
if (enc1.isLeftH()) butt = 0;
if (butt == 1 && butt_fifg == 0) {
butt_fifg = 1;
}
if (butt == 0 && butt_fifg == 1) {
butt_fifg = 0;
}
if (butt == 0) {
lcd.setCursor(0, 0); // температура
lcd.print(">");
lcd.setCursor(0, 2);
lcd.print(" ");
val = constrain(val, 0, 500);
if (enc1.isRight()) val++; // если был поворот направо, увеличиваем на 1
if (enc1.isLeft()) val--; // если был поворот налево, уменьшаем на 1