Работа с переменными
- Войдите на сайт для отправки комментариев
Вс, 16/12/2018 - 19:28
Помогите!
Вообщем, механизм у которого несколько режимов работы, у каждого режима своя переменная state например (state = task2), нужно, чтобы на экран выводился режим работы считывая переменную, я набрасал свой код, но в чем то проблема
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const char state = 'task4';
char task1;
char task2;
char task3;
char task4;
char task5;
char task6;
char task7;
char task8;
char task9;
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");
}
else
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");
}
}
Набрасал это хорошо. Теперь еще вставь нормально.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const char state = 'task4'; char task1; char task2; char task3; char task4; char task5; char task6; char task7; char task8; char task9; 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"); } else 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"); } }Готово
А когда не компилируется, чо говорит?
На 3 строчку не ругаеца?
Оно не ругается, на экран ничего кроме букву "R=" не выводится
И правильно
а как правильно тогда?
А вам не кажется, что если сравнивать массив и символ, они будут равны только если массив будет состоять из одного символа и этот символ будет отличен от нуля ( #0 ) ?
может быть
А вам не кажется, что если сравнивать массив и символ, они будут равны только если массив будет состоять из одного символа и этот символ будет отличен от нуля ( #0 ) ?
И то не будут.
На экране должна выводить надпись “R=” и режим работы
Режимы работы берутся на основании значений переменной state
Ну, я тебе лекции по С точно читать не буду. На то учебники есть, изучай
Ну прямо конечно не будут. По содержимому первой ячейки памяти строки равной символу будут. Если типы привести к одному.
В третей строке ошибка. И почему там тип const? А, там же с 3 по 12 неправильно все. И в сравнении тоже ошибки. В общем вам править как-то нужно.
Да, сам понимаю что с 3 строчки по 12 ошибки, но я не знаю, как сделать уже, все перекопал
foxman322,
в строках №№ 27, 32, 73 и т.д. Вы сравниваете с state с переменными task1, task2, task3, и т.д.
А теперь почешите репу и ответьте, а чему эти переменные ( task1, task2, task3, и т.д.) равны? Т.е. с чем именно Вы сравниваете? Если не можете из репы вычесать, то напечатайте их и посмотрите.
Да, сам понимаю что с 3 строчки по 12 ошибки, но я не знаю, как сделать уже, все перекопал
Там несколько режимов например движение прямо, и у каждого режима есть значение то, что state=task1, у другово режима,допустим вращение, и в коде вращения написанна переменная то, что state=task3. и тд.
Так, вечер перестаёт быть томным. Не надо про режимы. Не пудрите никому мозги. Просто ответьте на простой вопрос: чему эти грёбаные переменные равны. Ответ должен быть простым, типа
task1 = 321
task2 - 12
и т.д.
Просто ответьте на простой вопрос и не мудрствуйте лукаво.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); enum task_t { task1, task2, task3, task4, task5, task6, task7, task8, task9 } state; void printState(task_t s) { lcd.print("R="); lcd.setCursor(4, 0); switch (s) { case task1: lcd.print("toEdge"); break; case task2: lcd.print("adgeToEdge"); break; 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; } }; //--------------------------------- void setup() { lcd.begin(16, 2); state = task4; printState(state); } void loop(){}#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); enum task_t {Не понял! А где волшебное слово "class"?
Нещитова! Попробуй ещё раз!