Не работает Sheduler
- Войдите на сайт для отправки комментариев
Сб, 21/06/2014 - 21:36
В простом коде
#include <Scheduler.h>
int counter = 0;
int counter1 = 0;
void setup()
{
Scheduler.startLoop(loop1);
}
void loop () {
analogWrite(9, counter);
counter++;
if (counter > 255){
counter = 0;
}
delay(33);
}
void loop1 () {
analogWrite(10, counter1);
counter1=counter1+5;
if (counter1 > 255){
counter1 = 0;
}
delay(10);
yield();
}возникает ошибка
In file included from sketch_jun21c.ino:2:
C:\Users\МиО\Documents\Arduino\libraries\Scheduler/Scheduler.h:62: error: 'byte' does not name a type
C:\Users\МиО\Documents\Arduino\libraries\Scheduler/Scheduler.h:64: error: 'NUMBER_OF_SCHEDULED_ACTIONS' was not declared in this scope
C:\Users\МиО\Documents\Arduino\libraries\Scheduler/Scheduler.h:65: error: 'byte' does not name a type
sketch_jun21c.ino: In function 'void setup()':
sketch_jun21c:9: error: expected unqualified-id before '.' token
sketch_jun21c.ino: In function 'void loop1()':
sketch_jun21c:28: error: 'yield' was not declared in this scope
У меня mega 2560
Подскажите в чем косяк
Скорее всего в библиотеке Sheduller.
Хотя... слышал но сам не сталкивался, что русские буквы в именах путей могут траблы вызывать.
Скорее всего в библиотеке Sheduller.
Хотя... слышал но сам не сталкивался, что русские буквы в именах путей могут траблы вызывать.
Это я уже понял.
Пробовал в Линуксе. Таже фигня. Только там выскакивает ошибка
не помогло. Поменял пути на латиницу. Теже яйца только в профиль
#ifndef SCHEDULER_H #define SCHEDULER_H #if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.hAOp" #endif //provide a typedef for a void function pointer typedef void (*function)(); typedef struct schedule_action_s { function action; unsigned long time; unsigned int delay; //assignment operator schedule_action_s& operator=(const schedule_action_s& rhs){ action = rhs.action; time = rhs.time; delay = rhs.delay; return *this; } //boolean equality bool operator==(const schedule_action_s& rhs) const{ return (action == rhs.action && time == rhs.time && delay == rhs.delay); } }schedule_action; class Scheduler { public: Scheduler(); void update(); void schedule(function userAction, unsigned int time); private: static const byte NUMBER_OF_SCHEDULED_ACTIONS = 10; void defragment(); schedule_action action[NUMBER_OF_SCHEDULED_ACTIONS]; byte currentSize; }; #endifпроблема я думаю в этой строчке
staticconstbyteNUMBER_OF_SCHEDULED_ACTIONS = 10;#include "WProgram.hAOp"
мат какой-то
а этот заголовочник на что ссылается sheduler.cpp
Похоже что у вас вместо arduino.h подключается WProgram.hAOp...проверить просто - вытащить atduino.h наружу из блока #ifdef, а WProgram.hAOp убрать вообще...если начнет компилироваться то надо проверять почему ARDUINO не определен, или определен не той версии (<100)
На 90% уверен, что в изначальном посте показанны не все ошибки которые выбросила arduinoIDE
Нужно поскролить ошкошко ошибок вверх или вниз. Лог - не полный. Не полное описание ситуации - отсюда и тыкание помогающих в слепую.
Почти наверняка, там будет сообщение что не может найти файл. Либо Arduino.h, либо WProgram.hAOp, а ошибки типа "'byte' does not name a type" - это уже результат что того что файл не найден (в нем как раз и есть описание типов. если файл не найдет, то и "что это за тип" - неизвестно).
Какой именно - зависит от версии ArduinoIDE. Какая у вас версия - известно только телепатам.
Расширение .hAOP - это какая-то порнография. .h - в этом месте, гораздо более ожидаемо. Так что либо убирать этот AOP, либо ставить себе более свежую версию ArduinoIDE.
А еще, было-бы логично, раз используется какая-то стороняя библиотека дать на нее ссылку. Что-бы, если кому-то будет не лень попробовать у себя скомпилировать этот же код мог это сделать. Или он дожен найти ее сам? При этом еще должно повести и должна нагуглится именно ТА версия, которая у вас. Ситуации, когда по интету валяется куча разных версий одной и той же библиотеки - масса. Какая именно у вас - можно только гадать.
расслабся товарищ после моего поста видишь пропал
наверно пошел диск форматировать и винду переставлять
очевидно у него не в одном месте матерщина HAOP
вот плоскогубцы все пересоберет и все получится сходу
вот вот кота от клавиатуры отгонит и все получится :)
расслабся товарищ после моего поста видишь пропал
наверно пошел диск форматировать и винду переставлять
очевидно у него не в одном месте матерщина HAOP
вот плоскогубцы все пересоберет и все получится сходу
вот вот кота от клавиатуры отгонит и все получится :)
Если вы такой умный, то почему строем не ходите? Люди порой бывают на работе и доступа к компьютеру у них в этот момент нет.... Извини если, что то необычное для тебя сказал.
В коде выше опечатка. Реально так:
Пробовал я подгружать по отдельности Arduino.h и WProgram.h . Не работает.
Библиотеку брал здесь http://playground.arduino.cc/Code/Scheduler#Download
Вообщем "как ожидалось". Изначальный лог ошибки, выглядит полность так:
Что сразу приводить нас к необходимости загуглить (или поиском по этому форуму) на слово WProgram.h (или саму ошибку целиком)
И найти рецепт лечения в первых же ссылках: В БИБЛИОТЕКЕ, заменить WProgram.h на
После чего, ошибка 'byte' does not name a type - исчезает окончательно. Проблем с библиотекой больше нет
Видимо это и было у вас на линухе. Там старая версия ArduinoIDE (поэтому там оно не ругалось на отсутсвие WProgram.h).
Зато вылазит новая ошибка теперь уже в самом скетче.
Вот, в какой-то моемент, проблема с библиотекой - решилась. Но это прошло как-то "вскольз".
Все же думают, что вы и дальше с библиотекой воюете, а вы оказывается, уже с новой проблемой боретесь.
Кстати, то что она ругается еще и на неизвестную функцию yield();, про это вы как-то забыли упомянуть.
Или вы сами не заметили, что библиотека у вас заработала? Так это потому, что обычно, работу с библиотекой начинают с запуска примеров идущих с библиотекой. Если они компилируются - значит с библиотекой все в порядке и можно начинать писать свой код. А не наоборот...
Кстати, поглядывание в примеры, помогает и свой код начать писать осмысленно.
Вы пример смотрели, читал-ли собственну ссылку? Смотрели как нужно пользоваться этой библиотекой? Честно говоря я ничего общего между примером и вашим скетчем не увидел.
Не, ну вот сколько времени бы можно было съкономить, если бы сразу сказали "что откуда брали", а если бы я не сказал, давайте ссылку на библиотеку, то вообще до "морковкиного заговения" тут бы гадали кто ходит строем, а кто нет.
OK. На библиотеку вы ссылку дали... а код откуда слямзили почему не сказали? Раз брали-то из раных мест.
Вообщем.... "раз-два-три четеры пять, начинаю телепать..".
Вообщем инсталили мы одну библиотеку, А пример пытаемся запустить от другой. И чего оно не работает спрашивается?
Библиотеку взяли эту: http://playground.arduino.cc/Code/Scheduler#Download
А примеры взяли от этой: http://arduino.cc/en/Reference/Scheduler
Одна - стороняя, другия идет с новыми ArduinoIDE в комплекте (и ставить ее ну нужно).
Причем у той которая в комплете, описание начинается со слов "The Scheduler library enables the Arduino Due", которая, на минуточку на процессоре ARM Cortex-M3, и ни на 8-ми битнике как ваша мега (аллилуя, что хоть какая у вас плата сказали сразу).
1. скачайте заново библиотеку по своей ссылке и происнтальте заново (мало-ли что еще кот, туда успел напечатать за эти дни).
2. Примените к ней "рецепт лечения" из сообщения №15 (только внимательно)
3. Смотрите пример к ЭТОЙ библиотеке, разбирайтесь как с ней работать нужно...
И будет вам щастье.
Спасибо leshak что все талково разжевали. Впредь обещаю описывать проблемы до мельчайших подробностей.