что не так в скетче?

gena775
Offline
Зарегистрирован: 27.03.2015
int state Alarm = 1;
int state Sleep = 0;
int state Sleep;
 
int signal Alarm = 1;
int signal Off = 0;
int signal;
 void setup ()
void loop ()
signal = get Signal();
awitch (state);
case state Alarm;
if (signal == signal Alarm){
  state = state Alarm;
};
case state Sleep;
if (signal == signal Alarm);
if (signal == Off){
  state =state Sleep;
};
break;
};
работа пожарного датчика
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Компилятор молчит как партизан да? :) как минимум название переменных не должно содержать пробел. Третья строка должна быть int state; Ну а дальше по аналогии.

gena775
Offline
Зарегистрирован: 27.03.2015
int stateAlarm = 1;
int stateSleep = 0;
int state;
 
int signalAlarm = 1;
int signalOff = 0;
int signal;
 void setup()
void loop()
signal = getSignal();
awitch (state);
case stateAlarm;
if (signal == signalAlarm){
  state = stateAlarm;
 };
case stateSleep;
if (signal == signalAlarm);
if (signal == Off){
  state =stateSleep;
 };
break;
};
сеичас на void loop останавливаеться.
Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Где фигурные скобки после void setup() и void loop() ?

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:   
}

Если у Вас возникают какие-то ошибки при компиляции скетча, кроме самого скетча пишите сюда саму ошибку. В ошибке компилятор явно укзывает, что не так.

Также почитайте как правильно вставлять код - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015
int stateAlarm = 1;
int stateSleep = 0;
int state;
 
int signalAlarm = 1;
int signalOff = 0;
int signal;
void setup()
{
}

void loop()
{
  signal = getSignal();
  switch (state)
  {
    case stateAlarm:
      if (signal == signalAlarm)     
        state = stateAlarm;
      break;
    case stateSleep:    
      if (signal == Off)
        state =stateSleep;
      break;
  }
};

Если кроме присвоения значения state больше ничего не делать то этот кусок кода бессмысленый, можно было сразу писать state = getSignal();

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

И еще stateAlarm и stateSleep должны быть объявлены как const чтобы их можно было в case использовать

gena775
Offline
Зарегистрирован: 27.03.2015

как обьявить ?Не ругаите,но я только учусь.

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

в первой и второй строке добавить const перед int чтобы получилось const int stateAlarm = 1; и вто второй так же

gena775
Offline
Зарегистрирован: 27.03.2015
const int stateAlarm = 1;
const int stateSleep = 0;
int state;

const int signalAlarm = 1;
const int signalOff = 0;
int signal;

int pirPin = 10;              
int ledPin = 13;             
int val = 0;  

void setup() {
// иннициализировать пины
pinMode(pirPin, INPUT);
pinMode(ledPin,OUTPUT);
}

void loop() { 
  signal = getSignal();
  switch (state)
  {
  case stateAlarm:
    if (signal == signalAlarm)    
        state = stateAlarm;
   break;
   case stateSleep:   
   if (signal == Off)
      state =stateSleep;
   break;
  }
}

int getSignal() {
// считывание пинов
if (digitalRead (10) == HIGH) return signalAlarm;
if (digitalRead (10) == LOW) return signalOff;
}
OP()
{
 digitalWrait (1,HIGH);
}
void OO()
    digitalWrait (1,LOW);
}

ОШИБКА ОПЯТЬ:sketch_mar31a.ino: At global scope:

sketch_mar31a:44: error: expected initializer before 'digitalWrait'
sketch_mar31a:45: error: expected declaration before '}' token
 
gena775
Offline
Зарегистрирован: 27.03.2015

НА    if (signal == Off) Cтоит

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

http://arduino.ru/Reference/DigitalWrite

1. Должно быть digitalWrite(). К тому же не инициализирован пин 1, по умолчанию будет работать как вход. Хотя тут опять невнимательность, по логике вместо пина 1 вообще должен быть пин 13.

2. Не понятно, зачем было заводить переменные pirPin и ledPin, если потом к пинам обращаться по номерам? Только для того, чтобы использовать их в pinMode()? Там тоже можно было номерами.

3. Пропустили открывающую фигурную скобку после void OO()

4. У функции OP() не указан тип void

5. Функции OP() и OO() в тексте программы вообще не вызываются и никогда не будут выполнены.

Внимательней надо быть. И вот это читайте - http://arduino.ru/Reference

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

gena775 пишет:

НА    if (signal == Off) Cтоит

Что еще за signal == Off? Откуда это Off взялось? У вас нет такой переменной, есть signalOff.