что не так в скетче?
- Войдите на сайт для отправки комментариев
Ср, 01/04/2015 - 10:23
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;
};
работа пожарного датчика
Компилятор молчит как партизан да? :) как минимум название переменных не должно содержать пробел. Третья строка должна быть int state; Ну а дальше по аналогии.
Где фигурные скобки после 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
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();
И еще stateAlarm и stateSleep должны быть объявлены как const чтобы их можно было в case использовать
как обьявить ?Не ругаите,но я только учусь.
в первой и второй строке добавить const перед int чтобы получилось const int stateAlarm = 1; и вто второй так же
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:
НА if (signal == Off) Cтоит
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
НА if (signal == Off) Cтоит
Что еще за signal == Off? Откуда это Off взялось? У вас нет такой переменной, есть signalOff.