Помогите скрестить два сктча.

Xaoss
Offline
Зарегистрирован: 22.06.2015

Уважаемые форумчане помогите пожалуйста скрестить 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);
}
  
Заранее боагодарю всех за помощь.
  
Xaoss
Offline
Зарегистрирован: 22.06.2015

или может кто подскажет, что можна придумать чтоб при нажатии кнопки операция с первого скетча остонавливалась!

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Прерывания, флаги и их проверки.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

нафига тут прерывания, если сам алгоритм еще не отработан?

#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);
}

 

Xaoss
Offline
Зарегистрирован: 22.06.2015

Дело в том что мне нужна сделать то чтб принажатии кнопки переставали загараться светодиоды.
но так как в условии трмо датчика стоит есле..
то я думаю нужна выключать и термо датчик.