Помогите скрестить два сктча.
- Войдите на сайт для отправки комментариев
Пт, 18/09/2015 - 11:38
Уважаемые форумчане помогите пожалуйста скрестить 2 суетча.
Первый скетч.
#include <OneWire.h>
#include <DallasTemperature.h>
float now_temp;
float now_motion;
int max_temp=26; // temperatura datcika
int min_temp=26; // temperatura datcika
int led = 13;
int pin = 7;
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
pinMode(led, OUTPUT);
pinMode(pin, OUTPUT);
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
Serial.print("Temp: ");
now_temp = sensors.getTempCByIndex(0);
Serial.println(now_temp);
if (now_temp > max_temp ) {
Serial.print("alarm! enable led");
Serial.println();
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
if (now_temp < min_temp ) {
Serial.print("alarm!");
Serial.println();
digitalWrite(pin, HIGH);
} else {
digitalWrite(pin, LOW);
}
}
Второй скетч
int switchPin = 2;
int led = 13;
int pin = 7;
boolean lastButton = LOW;
boolean currentButton =LOW;
boolean led0n = false;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(Pin, OUTPUT);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (last !=current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
led0n = !led0n;
}
lastButton = currentButton;
digitalWrite(led, led0n);
digitalWrite(pin, led0n);
}
Заранее боагодарю всех за помощь.
или может кто подскажет, что можна придумать чтоб при нажатии кнопки операция с первого скетча остонавливалась!
Прерывания, флаги и их проверки.
нафига тут прерывания, если сам алгоритм еще не отработан?
#include <OneWire.h> #include <DallasTemperature.h> #define SWITCH_PIN 2 #define LED_PIN 13 #define OUTPUT_PIN 7 #define ONE_WIRE_BUS 10 boolean lastButton = LOW; boolean currentButton = LOW; boolean led0n = false; float now_temp; float now_motion; int max_temp = 26; // temperatura datcika int min_temp = 26; // temperatura datcika OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(SWITCH_PIN, INPUT); pinMode(LED_PIN, OUTPUT); pinMode(OUTPUT_PIN, OUTPUT); Serial.begin(9600); sensors.begin(); } void loop() { currentButton = debounce(lastButton); // читаем состояние кнопки if (lastButton == LOW && currentButton == HIGH) // если кнопка нажата... { led0n = !led0n; // то инвертируем какую-то переменную } else // если кнопка НЕ нажата... { now_temp = getTemperature(); // то читаем температуру из датчика // обработка условий по температуре if (now_temp > max_temp ) { Serial.println("alarm! enable led"); digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } if (now_temp < min_temp ) { Serial.println("alarm!"); digitalWrite(OUTPUT_PIN, HIGH); } else { digitalWrite(OUTPUT_PIN, LOW); } } lastButton = currentButton; // запоминаем текущее состояние кнопки // назначение этих строк мне непонятно digitalWrite(LED_PIN, led0n); digitalWrite(OUTPUT_PIN, led0n); } boolean debounce(boolean last) { boolean current = digitalRead(SWITCH_PIN); if (last !=current) { delay(5); current = digitalRead(SWITCH_PIN); } return current; } float getTemperature() { float tempFromSensor; sensors.requestTemperatures(); tempFromSensor = sensors.getTempCByIndex(0); Serial.print("Temp: "); Serial.println(tempFromSensor); return (tempFromSensor); }Дело в том что мне нужна сделать то чтб принажатии кнопки переставали загараться светодиоды.
но так как в условии трмо датчика стоит есле..
то я думаю нужна выключать и термо датчик.