переключение режимов кнопки
- Войдите на сайт для отправки комментариев
Ср, 26/07/2017 - 12:51
#include "notes.h" #include <Wire.h> #include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614(); int TempC;// температура // светодиоды - зелёный на 9 пин, красный на 8 const byte Green_pin = 9; const byte Red_pin = 8; int nRelayDrive = 12; // ноты мелодии: int melody[] = { LA4, DO5, SI4, LA4, 0, FA4, SO4, LA4, SO4, FA4, MI4, MI4, RE4, MI4, 0, RE4, MI4, FA4, MI4, RE4, LA4, MI4, RE4, DO4, 0, SI3, DO4, RE4, MI4, DO4, SI3, LA3, 0 }; // длительность нот: 4 = 1/4 ноты, 8 = 1/8 ноты, итд. // элементы для удобства и наглядности разделим на такты int noteDurations[] = { 4, 8, 8, 2, 4, 8, 8, 4, 8, 8, 4, 8, 8, 2, 4, 8, 8, 4, 8, 8, 4, 8, 8, 2, 4, 8, 8, 8, 4, 8, 8, 1, 8 }; // количество элементов в массиве нот int arrayCount = 0; void setup() { Serial.begin(9600); Serial.println("Adafruit MLX90614 test"); mlx.begin(); // светодиоды pinMode(Green_pin, OUTPUT); pinMode(Red_pin, OUTPUT); arrayCount = sizeof(melody)/sizeof(int); pinMode(nRelayDrive, OUTPUT); // объявляем реле в качестве выхода digitalWrite(nRelayDrive, HIGH); // отключаем реле } void playMelody() { for (int iNote = 0; iNote < arrayCount; iNote++) { // для расчёта реальной длительности делим одну секунду на нашу условную длительность int noteDuration = 1400 / noteDurations[iNote]; tone(4, melody[iNote], noteDuration); // устанавливаем минимальную паузу между нотами // длительность ноты + 30% работает отлично int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // останавливаем проигрывание: noTone(4); } } void loop() { Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); TempC = mlx.readObjectTempC(); Serial.print("*C\tObject = "); Serial.print(TempC); Serial.println("*C"); if (TempC > 40) { digitalWrite(Green_pin, 1); digitalWrite(Red_pin, 0); digitalWrite(nRelayDrive, HIGH); // отлючаем реле playMelody(); } else if (TempC <40) { digitalWrite(Green_pin, 0); digitalWrite(Red_pin, 1); digitalWrite(nRelayDrive, LOW); // включаем реле delay(500); } }
В первом посте код при котором всё нормально работает, но там нет кнопки для переключения режимов. Смысл в том, чтобы на кнопку переключать режимы нагревательного элемента через реле, но режимы не переключаются - не пойму почему. По идее тут всё верно написано и соединение правильное, но при нажатии кнопки ничего не происходит
ноты, нагревательный элемент... ТС, ты йобнулся?
добавил в каждый режим еще serial print, выходит такая штука:
помогите
помогите
у тебя там волшебная кнопка есть "поиск в Хуйяндексе и на компьютере" - нажми ея и не заёбуй больше.
добавил в каждый режим еще serial print, выходит такая штука:
1. текстом выложить никак? Эту картинку сами разглядывайте, мне не по глазам.
2. если уж "добавил", так давайте скетч. Откуда нам знать что и куда Вы там добавили.
3. Потрудитесь внятно объяснить проблему. Ваши выражение "режимы кнопки" и "на кнопку переключать режимы нагревательного элемента через реле" понятны только Вам.
у меня задумка чтобы с помощью нажатия на кнопку выбиралось по очереди один из трёх режимов для включения и отключения нагревательного элемента. Температура приходит с пирометра, скетч полностью во втором посте. Первый скетч это когда есть один режим и там всё прекрасно работает, но там нет кнопки - там просто датчик понимает какая температура сейчас и выключает или включает с помощью реле нагревательный элемент.
добавил в каждый режим еще serial print, выходит такая штука:
1. текстом выложить никак? Эту картинку сами разглядывайте, мне не по глазам.
2. если уж "добавил", так давайте скетч. Откуда нам знать что и куда Вы там добавили.
3. Потрудитесь внятно объяснить проблему. Ваши выражение "режимы кнопки" и "на кнопку переключать режимы нагревательного элемента через реле" понятны только Вам.
ниже всё описал
BepwyTa, ответ банален. Не взлетит потому что ... нет, не гладиолус, а delay().
добавил в каждый режим еще serial print, выходит такая штука:
1. текстом выложить никак? Эту картинку сами разглядывайте, мне не по глазам.
2. если уж "добавил", так давайте скетч. Откуда нам знать что и куда Вы там добавили.
3. Потрудитесь внятно объяснить проблему. Ваши выражение "режимы кнопки" и "на кнопку переключать режимы нагревательного элемента через реле" понятны только Вам.
а на счёт картинки - вот вырезал часть картинки
BepwyTa, ответ банален. Не взлетит потому что ... нет, не гладиолус, а delay().
а что с делеем? его не должно быть?
2TC: regim=1 и TempC=38 . Вопрос: какой else if отработает?
2TC: regim=1 и TempC=38 . Вопрос: какой else if отработает?
так там же и, должны оба соблюдаться?!
2TC: regim=1 и TempC=38 . Вопрос: какой else if отработает?
просто иначе не понимаю как сделать, чтобы был сначала один иф - выбор режима, а потом следом за ним другой иф - в этом режиме значения температуры или > 40 градусов или < 40 градусов
2TC: regim=1 и TempC=38 . Вопрос: какой else if отработает?
просто иначе не понимаю как сделать, чтобы был сначала один иф - выбор режима, а потом следом за ним другой иф - в этом режиме значения температуры или > 40 градусов или < 40 градусов
и хотя Вы не ответили на вопрос, посмотрите в сторону switch case
2TC: regim=1 и TempC=38 . Вопрос: какой else if отработает?
просто иначе не понимаю как сделать, чтобы был сначала один иф - выбор режима, а потом следом за ним другой иф - в этом режиме значения температуры или > 40 градусов или < 40 градусов
и хотя Вы не ответили на вопрос, посмотрите в сторону switch case
попробую сейчас, спасибо
а что с делеем? его не должно быть?
пока вы применяете delay() программа будет клинить.
а что с делеем? его не должно быть?
пока вы применяете delay() программа будет клинить.
но у меня же есть делей после каждого else if, он нужен еще и после обычного иф в каждом режиме?
ладно. жуй кактус дальше. Надоест поищи как используется millis()
но у меня же есть делей после каждого else if, он нужен еще и после обычного иф в каждом режиме?
Задайте себе вопрос и попытайтесь честно на него ответить: что будет если кнопку нажмут вначале Вашего delay(500), и успеют отпустить до его (delay'я) окончания? Там ведь целых полсекунды - можно и не раз успеть кнопку нажать-отпустить. Обработается нажатие кнопки или будет проигнорировано? Как Вы думаете?
но у меня же есть делей после каждого else if, он нужен еще и после обычного иф в каждом режиме?
Задайте себе вопрос и попытайтесь честно на него ответить: что будет если кнопку нажмут вначале Вашего delay(500), и успеют отпустить до его (delay'я) окончания? Там ведь целых полсекунды - можно и не раз успеть кнопку нажать-отпустить. Обработается нажатие кнопки или будет проигнорировано? Как Вы думаете?
Спасибо, увеличу до секунды
но у меня же есть делей после каждого else if, он нужен еще и после обычного иф в каждом режиме?
Задайте себе вопрос и попытайтесь честно на него ответить: что будет если кнопку нажмут вначале Вашего delay(500), и успеют отпустить до его (delay'я) окончания? Там ведь целых полсекунды - можно и не раз успеть кнопку нажать-отпустить. Обработается нажатие кнопки или будет проигнорировано? Как Вы думаете?
Спасибо, увеличу до секунды
забрал в тупизмы.
Слышишь у*бан, ты троль тут местный?
да. и я не уйду. #43
Спасибо, увеличу до секунды
вы идиот или как? :)
но у меня же есть делей после каждого else if, он нужен еще и после обычного иф в каждом режиме?
Задайте себе вопрос и попытайтесь честно на него ответить: что будет если кнопку нажмут вначале Вашего delay(500), и успеют отпустить до его (delay'я) окончания? Там ведь целых полсекунды - можно и не раз успеть кнопку нажать-отпустить. Обработается нажатие кнопки или будет проигнорировано? Как Вы думаете?
Спасибо, увеличу до секунды
Та немає за що!