Индикация режима работы
- Войдите на сайт для отправки комментариев
Сб, 12/01/2019 - 17:52
Здравствуйте, задача, чтобы в переменную "state" было записано task1-task9, и в зависимости от task выводилась надпись
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int state = 'task1';
void setup()
{
lcd.begin(16, 2);
lcd.print("R=");
}
void loop()
{
lcd.setCursor(4,0);
if(state == task1)
{
lcd.print("toEdge");
}
else
if(state == task2)
{
lcd.print("adgeToEdge");
}
else
if(state == task3)
{
lcd.print("pingPong");
}
else
if(state == task4)
{
lcd.print("toNearEdge");
}
lse
if(state == task5)
{
lcd.print("toCenter");
}
else
if(state == task6)
{
lcd.print("delta");
}
else
if(state == task7)
{
lcd.print("accMotion");
}
else
if(state == task8)
{
lcd.print("decMotion");
}
else
if(state == task9)
{
lcd.print("varMotion");
}
}
задача, чтобы в переменную "state" было записано task1-task9, и в зависимости от task выводилась надпись
И что?
Принято к сведению, что у Вас такая залача. Давайте я Вам тоже скажу, а Вы к сведения примете: "Здравствуйте, задача выйти на улицу и почистить снег".
У Вас одна задача, у меня другая, дальше-то что?
Кстати, если память мне не изменяет, Вы подоную задачу полгода назад уже решали - http://arduino.ru/forum/programmirovanie/rabota-s-peremennymi-0
:(
/**/ #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); enum state_t { task1, task2, task3, task4, task5, task6, task7, task8, task9 } state; void stand(state_t s) { state = s; } //------------------------------ void setup() { lcd.begin(16, 2); lcd.print("R="); stand(task1); } void loop() { lcd.setCursor(4, 0); switch (state) { case task1: lcd.print("toEdge"); break; case task2: lcd.print("adgeToEdge"); case task3: lcd.print("pingPong"); break; case task4: lcd.print("toNearEdge"); break; case task5: lcd.print("toCenter"); break; case task6: lcd.print("delta"); break; case task7: lcd.print("accMotion"); break; case task8: lcd.print("decMotion"); break; case task9: lcd.print("varMotion"); break; } }Уважаемый ТС, Вы бы не позорились, а почитали умные книжки про язык си. Такие ошибки, как в 3-й строке даже малые дети не делают.
Выдает 2 ошибки
2:12: error: variable or field 'stand' declared void
2:12: error: 'state_t' was not declared in this scope
по Станиславскому Не верю.
А вообще зачем такие сложности? Не могли создать переменную int Task и назначать ее номером задачи? А затем стандартным case выбирали бы реакцию. Вы же очень плохо разбираетесь в программировании и, я уверен, в программе любезно представленной qwone ничего не поняли.
Или если уж совсем невмоготу - сделайте
#define task1 1;
#define task2 2;
int Task=task1;
swith (Task){
case task1:
и т.д.
Идите простыми путями - сложные сами Вас найдут.
/**/ #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const byte task1 = 0; const byte task2 = 1; const byte task3 = 2; const byte task4 = 3; const byte task5 = 4; const byte task6 = 5; const byte task7 = 6; const byte task8 = 7; const byte task9 = 8; byte state; void stand(byte s) { state = s; } //------------------------------ void setup() { lcd.begin(16, 2); lcd.print("R="); stand(task1); } void loop() { lcd.setCursor(4, 0); switch (state) { case task1: lcd.print("toEdge"); break; case task2: lcd.print("adgeToEdge"); case task3: lcd.print("pingPong"); break; case task4: lcd.print("toNearEdge"); break; case task5: lcd.print("toCenter"); break; case task6: lcd.print("delta"); break; case task7: lcd.print("accMotion"); break; case task8: lcd.print("decMotion"); break; case task9: lcd.print("varMotion"); break; } } /*Скетч использует 1878 байт (5%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 128 байт (6%) динамической памяти, оставляя 1920 байт для локальных переменных. Максимум: 2048 байт. */Но да же так у ТС все равно найдутся проблемы в том же самом скетче
Выдает 2 ошибки
2:12: error: variable or field 'stand' declared void
2:12: error: 'state_t' was not declared in this scope
ТС, полгода строки выводите на дисплей?
char* myStrings[4]={"toEdge", "adgeToEdge", "pingPong", "toNearEdge"}; byte state; void setup(){ lcd.init(); } void loop(){ lcd.setCursor(0, 0); byte posCursor = lcd.print(myStrings[state]);//длина строки for(; posCursor < 16; posCursor++) lcd.print(' ');//дальше пробелы state = ++state % 4; delay(1000); }Спасибо большое!